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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:02