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

如何使用Arduino与pyserial解码串口信息并提取数字?

提取串口信息中数字的解决方法

1. 先排查串口参数匹配问题

你遇到的UnicodeDecodeError提示字节0xb1无法解码,说明实际读到的不是预期的b'1\r\n',大概率是串口参数不匹配或缓存残留导致的乱码。首先确保Python初始化串口的参数和Arduino完全一致:

import serial

# 替换成你的串口端口(比如Windows的COM3,Linux的/dev/ttyUSB0)
ser = serial.Serial('COM3', baudrate=9600, timeout=1)

2. 安全读取并转换数字

用兼容编码解码,再清洗数据提取数字,避免解码错误:

while True:
    raw_data = ser.readline()
    if raw_data:
        # 用latin-1解码所有字节(不会抛出Unicode错误),再去除换行、回车等空白
        cleaned_str = raw_data.decode('latin-1').strip()
        # 只保留字符串中的数字字符
        num_part = ''.join([c for c in cleaned_str if c.isdigit()])
        if num_part:  # 确保有有效数字才转换
            number = int(num_part)
            print(f"提取到数字:{number}")

3. 额外排查项

  • 关闭Arduino IDE的串口监视器,避免串口被占用
  • 重启Arduino和Python程序,清空串口缓存的残留数据
  • 确认串口端口号正确(Windows看设备管理器,Linux/macOS用ls /dev/tty*查看)

内容的提问来源于stack exchange,提问作者André Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:50:31