Arduino串行读取读取超过一个字节

Arduino Serial Read Reading more than a byte

提问人:Xia 提问时间:11/15/2023 更新时间:11/15/2023 访问量:53

问:

我在读取序列字节时遇到问题。 如果我输入 ,代码输出:。AThis just in ... A

这是正确的,但是当我输入超过 1 个字符时会出现问题。

输入: 输出:
AAA

This just in ... A
This just in ... P
This just in ... �



装置:。
未连接其他引脚。只有电缆连接到我的电脑。

我的波特率是正确的,9600 -> 9600。
我的代码,来自一个简单的例子。问题不在于代码。
Arduino Nano

char receivedChar;
boolean newData = false;

void setup() {
 Serial.begin(9600, SERIAL_8N1);
 Serial.println("<Arduino is ready>");
}

void loop() {
 recvOneChar();
 showNewData();
}

void recvOneChar() {
 if (Serial.available() > 0) {
 receivedChar = Serial.read();
 newData = true;
 }
}

void showNewData() {
 if (newData == true) {
 Serial.print("This just in ... ");
 Serial.println(receivedChar);
 newData = false;
 }
}

The COM settings
对不起,这是中文的,值如下:9600、8、无、1、无。

这是高级设置选项卡,默认设置。The advanced settings tab My Arduino Console

所以我尝试以二进制形式打印字符:

char receivedChar;
boolean newData = false;

void setup() {
 Serial.begin(9600, SERIAL_8N2);
 Serial.println("<Arduino is ready>");
}

void loop() {
 recvOneChar();
 showNewData();
}

void recvOneChar() {
 if (Serial.available() > 0) {
 receivedChar = Serial.read();
 newData = true;
 }
}

void showNewData() {
 if (newData == true) {
 Serial.println(receivedChar, BIN);
 newData = false;
 }
}

输入: 输出:
A1000001

输入: 输出:
AAA

1000001
1010000
11111111111111111111111111010000

我的输入长度越长,输出就越奇怪。

The console with the second code

我在谷歌上搜索了大约 100 次,其中大多数让我更了解我在处理什么,但没有一个能解决我的问题。我问ChatGPT,它没有提供任何解决方案。我什至尝试使用旧的IDE,所以我在这里,终于在这里问了一个问题。check your baud rate

Old IDE

Arduino 串口 字节 UART 波特率

评论

1赞 Juraj 11/15/2023
为什么?SERIAL_8N2
0赞 Xia 11/15/2023
哎呀,我只是在尝试不同的设置,截图时忘了把它改回来。

答:

0赞 Xia 11/15/2023 #1

我随机更改了一些设置,它起作用了。 我将时钟分频器从 1 更改为 2,现在我可以正确读取字符。

enter image description here enter image description here