【问题标题】:Arduino concat operators make String nullArduino concat 运算符使 String 为空
【发布时间】:2014-12-12 01:05:19
【问题描述】:

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

此代码有效

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 会换行,但不打印任何内容,就好像字符串为空一样。

如果我能得到任何帮助,我将不胜感激。提前致谢

【问题讨论】:

  • 是否有助于将 stringOne + stringTwo 放入 String 的构造函数中?
  • 没有相同的结果。 @克里斯
  • 如果你把这段代码放在它自己的草图中,它可以工作吗?
  • 是的,但奇怪的是数字从 1234567890 变为 722... 字符串的其他部分都可以。 @IgnacioVazquez-Abrams

标签: c string arduino operators arduino-uno


【解决方案1】:

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

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

【讨论】:

  • 就是这样!我在Arduino.cc上查到了,非常感谢您的建议! @Ignacio Vazquez-Abrams
猜你喜欢
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2016-07-07
  • 1970-01-01
相关资源
最近更新 更多