如何在Python中对串口设备数据编写正确的if语句?
串口数据匹配问题的解决方案
你的代码中字符串匹配失败,大概率是因为串口返回的数据除了换行符\n,还可能包含回车符\r,仅去除\n会导致k中残留\r,从而和预定义字符串z不相等。
可以修改字符串处理逻辑,用更彻底的方式清除首尾空白字符:
if serialInst.in_waiting: startPacket = serialInst.readline() z = "iohioowwcncuewqrte" # strip()会移除所有首尾空白字符(包括\r、\n、空格等) k = startPacket.decode('utf-8').strip() if k == z: print("right passkey") else: # 打印实际接收内容方便排查差异 print(f"Error: Received '{k}' instead of '{z}'") exit()
另外可以补充排查以下几点:
- 确认串口发送端输出的字符串和
z完全一致,无额外空格或隐藏字符 - 检查编码是否匹配,若发送端未使用utf-8,需对应修改
decode的参数(如decode('gbk')) - 临时添加
print("Received raw:", repr(k)),查看接收字符串的原始形态,快速定位差异
内容的提问来源于stack exchange,提问作者drSlovenia
相关产品推荐
相关产品推荐

