Arduino Nano串口多字节读取异常问题求助
Arduino Nano 串口多字符读取乱码故障排查求助
问题现象
- 单字符输入正常:输入
A时,代码输出This just in ... A,结果符合预期 - 多字符输入异常:输入
AAA时,输出出现乱码,例如This just in ... A、This just in ... P、This just in ... � - 二进制打印验证:输入单个
A输出1000001正常;输入AAA时输出1000001、1010000、11111111111111111111111111010000,输入长度越长,输出异常越明显
已执行排查操作
- 硬件连接:设备仅通过线缆连接电脑,无其他引脚外接
- 波特率确认:Arduino与电脑串口波特率均设置为9600,参数一致
- 代码测试:使用官方示例代码,修改为二进制打印格式后问题依旧
- 软件排查:更换旧版Arduino IDE,通过谷歌搜索、咨询ChatGPT尝试解决,未找到有效方案
附相关代码及串口设置
第一版字符打印代码
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; } }
第二版二进制打印代码
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; } }
电脑串口设置
- 波特率:9600
- 数据位:8
- 校验位:无
- 停止位:1
- 流控:无
- 高级设置:默认
内容的提问来源于stack exchange,提问作者Xia
相关产品推荐
相关产品推荐

