低级问题专家帖,再发问,谢谢
本帖最后由 kevinzhang 于 2014-9-4 14:09 编辑Arudino的字符串变量,字符个数有上限吗? 应该只和内存有关吧. 哦?是吧。。。。。。我昨天合并两个130个字符的字符串赋给一个变量时,显示是空。晕。:dizzy: 本帖最后由 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;
}
Serial.println("==");
for(int xx=0; xx<p_myMessage.length(); xx++)
{
p_wholeMessage += p_myMessage;
}
//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;
myP = 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;
}
Serial.println("==");
for(int xx=0; xx<p_myMessage.length(); xx++)
{
p_wholeMessage += p_myMessage;
}
//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;
myP = 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:} 为蛤蟆字符串会突然缩水呢? {:soso_e109:}大神木有出现啊。 和你的问题差不多,可能内存不够了,String太多吧 zyzand 发表于 2014-8-25 21:46 static/image/common/back.gif
和你的问题差不多,可能内存不够了,String太多吧
:Q真实非常遗憾啊,看来复杂一点的程序,uno是跑不了。 zyzand 发表于 2014-8-25 21:46 static/image/common/back.gif
和你的问题差不多,可能内存不够了,String太多吧
改用char[]数组也一样:Q kevinzhang 发表于 2014-8-26 12:23 static/image/common/back.gif
真实非常遗憾啊,看来复杂一点的程序,uno是跑不了。
是啊,MemoryFree的库试了么,我就剩100多字节了。处理比较大的数据时还是用Mega吧。顺便附上一张从极客工坊里找到的图片。
本帖最后由 kevinzhang 于 2014-8-29 10:10 编辑
zyzand 发表于 2014-8-28 15:13 static/image/common/back.gif
是啊,MemoryFree的库试了么,我就剩100多字节了。处理比较大的数据时还是用Mega吧。顺便附上一张从极客工 ...
我试试。非常感谢老兄:handshake:handshake
Mega和Due,选哪个比较合适捏?{:soso_e132:} 低级问题专家帖,再次发问:
适合UNO上的Shield,可以直接插到Due上吗?:loveliness:
页:
[1]