2

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

例如:

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

提前致谢

4

3 回答 3

3

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

Serial.begin(9600);

尝试放置:

delay(500)

或者

while (!Serial); // while the serial stream is not open, do nothing:
于 2012-07-01T15:07:09.860 回答
0

您可能应该用 0 终止您的字符串。例如: String text1 = "foobar",0;

于 2012-07-01T21:45:26.660 回答
0

正如 Eran W 所指出的,这很可能是串行通信重置问题。在这里查看我之前的答案。

当 Arduino 接收到来自 Arduino IDE 以外的大多数设备的串行通信时,它会自动重置。这就是为什么您可以从 IDE 发送但不能从其他任何东西发送的原因。

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

于 2012-07-05T15:35:13.777 回答