【问题标题】:Serial loop issue on Arduino LeonardoArduino Leonardo 上的串行循环问题
【发布时间】:2013-04-02 18:11:45
【问题描述】:

我可以让 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 通信保留。

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

【问题讨论】:

  • 你没有做while (!Serial1);
  • 没有解决,serial1 一直在循环中
  • 下面的真的是Serial.write吗?不是Serial1.write

标签: loops serial-port arduino


【解决方案1】:

我不得不在这里猜测,但我认为原因是没有任何连接到 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。

【讨论】:

  • 事实上,Serial1 没有任何关联。我可以链接 LED 或其他东西来进行一些测试吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多