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

PyQt5 QtSerialPort校验和字节前缀缺失问题求助(树莓派环境)

PyQt5 QtSerialPort串口发送校验和字节前缀问题解决

问题核心

你遇到的问题是校验和被当作字符串处理,导致发送的是ASCII字符而非目标十六进制字节,最终序列不符合预期。

解决步骤

  1. 确保校验和是整数类型:不管是手动指定还是计算得出,校验和必须是十六进制整数(比如0xBC),而非字符串形式的"bc"/"BC"。
  2. 将整数转为单字节:用bytes([校验和整数])把整数直接转换为对应的十六进制字节,这样就能生成带\x前缀的目标字节。

代码调整示例

错误写法(导致问题)

# 错误:校验和用字符串拼接,发送的是ASCII字符
checksum_str = "bc"
send_data = b'\xCC\x04\x3C\x34\x05' + checksum_str.encode() + b'\x01'
# 此时send_data实际为 b'\xcc\x04\x3c\x34\x05\x62\x63\x01',不是预期值

正确写法

# 方法1:直接用十六进制整数
checksum = 0xBC
send_data = b'\xCC\x04\x3C\x34\x05' + bytes([checksum]) + b'\x01'

# 方法2:如果校验和是字符串转来的,先转整数
checksum_str = "bc"
checksum = int(checksum_str, 16)
send_data = b'\xCC\x04\x3C\x34\x05' + bytes([checksum]) + b'\x01'

验证

运行代码后打印send_data,输出应为b'\xcc\x04\x3c\x34\x05\xbc\x01',和预期一致,此时串口发送的就是正确的字节序列。

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:52:06