Arduino Leonardo的串行循环问题

时间:2013-04-02 18:11:45

标签: loops serial-port arduino

我可以让Serial和Serial1同时工作吗?

void setup() {
  Serial.begin(9600);
  while (!Serial);                        // while not open, do nothing
  Serial1.begin(9600);
}

void loop() {
  while (Serial.available() > 0) {        // if at least one char is available
    /* CODE */
    //Serial.write(Serial.read());
  }

  while (Serial1.available() > 0) {
    /* CODE */
    //Serial.write(Serial1.read());
  }
}

当我打开串行监视器时,第一个工作正常,但如果我同时使用,第二个是打印结果无限循环。我该如何解决这个问题?

»»Arduino Leonardo电路板使用Serial1通过RS232在引脚0(RX)和1(TX)上进行通信。串行保留用于USB CDC通信。

我可以使用与Serial1完全相同的Serial吗?在Serial1上读取什么样的信号?

1 个答案:

答案 0 :(得分:0)

我必须在这里猜测,但我认为原因是没有任何连接到Serial1消耗你写的数据。因此,您的代码会停留在write来电。

要验证是否确实如此,您可以将Serial1.write(Serial1.read());(在第二个循环中)更改为Serial.write(Serial1.read());。如果这没有阻止,我猜可能是对的。

http://arduino.cc/en/Guide/ArduinoLeonardo#toc6说出了Serial1的内容:

  

要使用硬件串行端口(引脚0和1,RX和TX),请使用Serial1。 (有关详细信息,请参阅串行参考页。)

因此,当您希望通过可在电路板角落看到的RX和TX端口/ 0和1引脚进行通信时,请使用Serial1。