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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:23:26