我可以让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上读取什么样的信号?
答案 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。