Arduino concat运算符使String为null

时间:2014-12-12 01:05:20

标签: c string arduino operators arduino-uno

我正在制作一个Arduino项目,我只是想知道为什么以下代码在向Serial发送字符串时会创建新行但是使用空文本。就好像+运算符使字符串为空。

此代码有效

String stringOne = "This is a string";
Serial.println(stringOne);

当放入循环时,Serial会重复打印"这是一个字符串"在新的行中,就像它应该的那样。

此代码不起作用

int number = 1234567890;
String stringOne = "This is a number. It is:";
String stringTwo = String(number);
String stringThree = stringOne + stringTwo;
Serial.println(stringThree);

当放置在循环中时,Serial会生成新行,但不会打印任何内容,就好像字符串为空。

如果我能得到任何帮助,我会非常感激。提前致谢

1 个答案:

答案 0 :(得分:1)

原始问题存在的原因是因为你没有SRAM; stringThree在内存映射的一个区域中创建,其中所有内容始终读为0,0表示底层char*的结尾。尽可能多地将常量和文字推入闪存中。

它在新草图中无法正常工作的原因是因为AVR中的int只有16位长,并且您正在尝试将32位数字填入其中;请尝试使用long