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

问题描述 投票:0回答:1

我在读取串行字节时遇到问题。 如果我输入

A
,代码输出:
This just in ... A

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

输入:

AAA

输出:

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



设备:

Arduino Nano

没有连接其他引脚。只有电缆连接到我的电脑。

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

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;
 }
}


抱歉,它是中文的,值如下:9600, 8, None, 1, None.

这是高级设置选项卡。默认设置。

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

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;
 }
}

输入:

A

输出:
1000001


输入:

AAA

输出:

1000001
1010000
11111111111111111111111111010000

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

我在谷歌上搜索了大约100次,其中大多数都让我更了解我正在处理的事情,但没有一个能解决我的问题。我问了ChatGPT,它除了

check your baud rate
之外没有提供任何解决方案。我什至尝试使用旧的 IDE,所以我在这里,终于在这里问一个问题。

arduino serial-port byte uart baud-rate
1个回答
0
投票

不是答案,但可能有用的信息...您的代码的两个块都在我的 Arduino Uno 上以所有波特率返回了预期输出。

© www.soinside.com 2019 - 2024. All rights reserved.