1

我可以让 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 通过引脚 0 (RX) 和 1 (TX) 上的 RS232 进行通信。串行保留用于 USB CDC 通信。

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

4

1 回答 1

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。

于 2013-04-02T18:37:52.327 回答