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

Arduino 使用Serial.print进行奇怪的初始输出,arduino,Arduino,当我写串行接口时,当我的草图第一次运行时,我得到了奇怪的和意外的输出。输出似乎是应打印内容的变体: 例如: 输出结果: fo foobar (新行出现在“fo”之前,但我不知道如何包含它) 所以应该打印的东西的一些变体,在应该打印的实际文本之前被打印。更改输出会更改异常文本(有时是两个字符,有时是三个字符)。进行不影响输出和重新编译的更改对异常文本没有影响 我完全是一个Arduino新手(我今天才开始编写自己的代码),但我只能假设这不正常。 我使用的是Freetronics EtherTen和

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

例如:

输出结果:

fo
foobar
(新行出现在“fo”之前,但我不知道如何包含它)

所以应该打印的东西的一些变体,在应该打印的实际文本之前被打印。更改输出会更改异常文本(有时是两个字符,有时是三个字符)。进行不影响输出和重新编译的更改对异常文本没有影响

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


提前感谢

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

之后

尝试将以下两种方法之一:

delay(500)


您可能应该以0结束字符串。 比如:
字符串text1=“foobar”,0

正如Eran W所指出的,这很可能是串行通信重置问题。见我先前的答案

当Arduino从Arduino IDE以外的大多数设备接收串行通信时,Arduino会自动复位。这就是为什么您可以从IDE发送,但不能发送任何其他内容

我有一个Uno,在复位和接地之间放了一个电容器。这是一个关于这个主题的好信息页面。

祝你好运

该示例不会编译,但通过使用
String text1=“foobar\0”来转义空终止符
没有解决此问题。字符串自动以null结尾,无需自己完成。delay()必须达到2000才能解决此问题。无论是(!Serial)时的
,还是在(Serial)
时将输出包装在
中的
都不会产生任何影响。监视串行输出并按下硬件重置按钮会使其重新启动,而不会在启动时出现意外输出。谢谢
Serial.begin(9600);
delay(500)
while (!Serial); // while the serial stream is not open, do nothing: