Python向串口写入数据仅收到首字符 com0com场景故障排查问询
故障原因和解决方法
- 优先排查接收端的读取逻辑:串口是字节流传输,没有内置数据边界,
71.1\r\n转成utf-8编码后总共有5个字节,要是接收端的代码每次只读1个字节就结束本次处理,自然只会返回第一个字符7。建议检查接收端是不是设置了单次读取长度为1,或是没有循环等待全部数据到达就结束了读操作。 - 确认串口两端参数完全匹配:发送端COM8的波特率、校验位、停止位、数据流控配置必须和接收端完全一致,参数不匹配会导致数据解析错误、丢包,大概率只能识别到第一个可解码的字符。
- 先验证发送端输出是否正常:可以用通用串口调试工具监听COM8的输出,确认调用
ser2.write时确实把完整的71.1\r\n发送出去了,先排除发送端编码、串口写入的问题。 - 额外优化点:你当前代码里直接用
ser.read(ser.in_waiting)读走所有缓冲区数据,若上游设备发送的报文长度不固定,切分data_str[7:9]很容易出现下标越界,建议改为按固定长度读取报文,或是按分隔符读取整行再做解析。
内容的提问来源于stack exchange,提问作者reallly
相关产品推荐
相关产品推荐

