You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:01:18