Python/MicroPython串口bytearray异常及通信失败问题问询
串口通信与bytearray问题解答
1. Python bytearray打印的疑惑
- 末尾的
y就是0x79:Python在打印字节串(bytearray/bytes)时,会把ASCII可打印字符直接显示为对应字符,0x79对应的ASCII字符就是小写字母y,因此不会以\x79的形式输出。如果要查看完整十六进制格式,可使用hex()方法或binascii.hexlify(),比如执行print(binascii.hexlify(msg))会输出b'ff01860000000079',能清晰看到所有字节的十六进制值。 - 关于4个0的“缺失”:你看到的输出
bytearray(b'\xff\x01\x86\x00\x00\x00\x00y')里实际包含4个\x00,只是连续的转义字符容易被误数,它和你代码中定义的4个0完全对应,没有丢失。
2. MicroPython UART通信异常的原因
- 字节数不匹配:你在MicroPython中发送的是
b"\xff\x01\x86\x00\x00\x00\x00\x00\x79",共9字节;但BRAY终端发送的是FF 01 86 00 00 00 00 79,仅8字节——你多写了一个\x00。设备收到错误长度的指令,自然返回异常响应,把发送数据改成b"\xff\x01\x86\x00\x00\x00\x00\x79"即可。 - 串口参数不一致:检查MicroPython的UART配置是否和BRAY终端完全一致,包括波特率、奇偶校验位、停止位、流控设置(如是否启用硬件流控)。只要有一个参数不匹配,就会导致通信数据错乱,设备无法正确解析指令。
- 额外字符干扰:确认BRAY终端发送时是否自动添加了换行(
\n)、回车(\r)等字符,而MicroPython没有;或者MicroPython发送时附带了多余的控制字符。可以用串口调试工具监听两边发送的实际数据,对比差异定位问题。
内容的提问来源于stack exchange,提问作者sosnus
相关产品推荐
相关产品推荐

