使用Serial.print进行奇怪的初始输出

时间:2012-07-01 12:53:57

标签: arduino

当我写入串行接口时,当我的草图第一次运行时,我会收到奇怪和意外的输出。输出似乎是应该打印的变体:

例如:

String text1 = "foobar";

void setup() {
  Serial.begin(9600);

  Serial.print("\n");
  Serial.print(text1);
}

void loop() {
}

输出结果:

fo
foobar

(新行出现在“fo”之前,但我无法弄清楚如何包含它。)

因此,应该打印的任何内容的变体都会在应该打印的实际文本之前打印出来。更改输出,更改异常文本(有时它将是两个字符,有时是三个字符)。进行不影响输出和重新编译的更改不会对异常文本产生影响。

我是一个完整的Arduino新手(我今天才开始编写自己的代码),但我只能认为这不正常。 我正在使用Freetronics EtherTen和1.0 IDE

提前致谢

3 个答案:

答案 0 :(得分:3)

当您在计算机上打开其串行端口时,Arduino正在重新启动草图。 所以它打印出来,然后再次初始化。

Serial.begin(9600);

尝试放置:

delay(500)

while (!Serial); // while the serial stream is not open, do nothing:

答案 1 :(得分:0)

你应该用0来终止你的字符串。 喜欢:     String text1 =“foobar”,0;

答案 2 :(得分:0)

这很可能是Eran W指出的串行通信重置问题。请参阅我之前的回答here

Arduino从Arduino IDE以外的大多数东西接收串行通信时会自动重置。这就是您可以从IDE发送而不是其他任何内容的原因。

我有一个Uno并在Reset和Ground之间放一个电容。这是一个页面,上面有一些关于这个主题的好信息。
祝好运。 http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection