|
|

楼主 |
发表于 2014-8-17 17:07:47
|
显示全部楼层
本帖最后由 kevinzhang 于 2014-8-18 09:24 编辑
今天就遇到的字符串的问题 
String phoneNumber = "8613817783164";
String messageCenterNumber = "8613800210500";
String message_text = "5DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C";
String p_messageCenterNumber = "";
String p_phoneNumber = "";
String p_myMessage = "";
String p_wholeMessageLength = "";
String p_wholeMessage = "";
void setup()
{
Serial.begin(9600);
// message center number process
p_messageCenterNumber = pNumber(messageCenterNumber);
p_messageCenterNumber = "0891" + p_messageCenterNumber;
// mobile phone number process
p_phoneNumber = pNumber(phoneNumber);
// message process
String x_myMessage = message_text;
String preFix = Dec2Hex_String(x_myMessage.length()/2);
String xxx = preFix + x_myMessage;
p_myMessage += xxx;
// make whole message
String p1 = "11000D91" + p_phoneNumber + "000800";
for(int xx=0; xx<p1.length(); xx++)
{
p_wholeMessage += p1[xx];
}
Serial.println("==");
for(int xx=0; xx<p_myMessage.length(); xx++)
{
p_wholeMessage += p_myMessage[xx];
}
//p_wholeMessage = p1 + p_myMessage;
Serial.print("w: ");
Serial.println(p_wholeMessage);
// whole message length
p_wholeMessageLength = String(p_wholeMessage.length()/2, DEC);
Serial.println(p_wholeMessageLength);
//sendMessage(p_wholeMessageLength, p_messageCenterNumber, p_wholeMessage);
Serial.println();
Serial.println("End");
}
void loop()
{
//sendMessage(p_wholeMessageLength, p_messageCenterNumber, p_wholeMessage);
//delay(120000);
}
String pNumber(String p)
{
String myP = p;
myP = myP + "F";
char x;
for(int i=0; i<16; i+=2)
{
x = myP;
myP = myP[i+1];
myP[i+1] = x;
}
return myP;
}
String Dec2Hex_String(int number_2bit)
{
String number;
if(number_2bit < 16)
{
number = "0";
}
number += String(number_2bit, HEX);
number.toUpperCase();
return number;
}
上面的代码运行后,能够显示p_wholeMessage字符串,长度是109。
问题是,如果加上其他一点东西的话,字符串就不对了(加入的代码标为红色)。
#include <SoftwareSerial.h>
String phoneNumber = "8613817783164";
String messageCenterNumber = "8613800210500";
String message_text = "5DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C61095FEBFF015DE54F5C";
SoftwareSerial mySerial(2,3);
String p_messageCenterNumber = "";
String p_phoneNumber = "";
String p_myMessage = "";
String p_wholeMessageLength = "";
String p_wholeMessage = "";
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
// message center number process
p_messageCenterNumber = pNumber(messageCenterNumber);
p_messageCenterNumber = "0891" + p_messageCenterNumber;
// mobile phone number process
p_phoneNumber = pNumber(phoneNumber);
// message process
String x_myMessage = message_text;
String preFix = Dec2Hex_String(x_myMessage.length()/2);
String xxx = preFix + x_myMessage;
p_myMessage += xxx;
// make whole message
String p1 = "11000D91" + p_phoneNumber + "000800";
for(int xx=0; xx<p1.length(); xx++)
{
p_wholeMessage += p1[xx];
}
Serial.println("==");
for(int xx=0; xx<p_myMessage.length(); xx++)
{
p_wholeMessage += p_myMessage[xx];
}
//p_wholeMessage = p1 + p_myMessage;
Serial.print("w: ");
Serial.println(p_wholeMessage);
// whole message length
p_wholeMessageLength = String(p_wholeMessage.length()/2, DEC);
Serial.println(p_wholeMessageLength);
//sendMessage(p_wholeMessageLength, p_messageCenterNumber, p_wholeMessage);
Serial.println();
Serial.println("End");
}
void loop()
{
//sendMessage(p_wholeMessageLength, p_messageCenterNumber, p_wholeMessage);
//delay(120000);
}
String pNumber(String p)
{
String myP = p;
myP = myP + "F";
char x;
for(int i=0; i<16; i+=2)
{
x = myP;
myP = myP[i+1];
myP[i+1] = x;
}
return myP;
}
String Dec2Hex_String(int number_2bit)
{
String number;
if(number_2bit < 16)
{
number = "0";
}
number += String(number_2bit, HEX);
number.toUpperCase();
return number;
}
这时候运行结果,p_wholeMessage字符串长度只有97了。{:soso_e141:} 晕啊。
请大神搭救{:soso_e183:} 为蛤蟆字符串会突然缩水呢? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|