使用pyserial读取SIKO MA502串口输出仅获空行,求排查指导
排查SIKO MA502串口读取空行问题
一、硬件连接排查
- 引脚对应检查:SIKO MA502的UART引脚为TX、RX、GND,必须和FTDI线缆交叉连接:MA502的TX接FTDI的RX,MA502的RX接FTDI的TX,GND引脚必须共地。TX/RX接反是串口无数据的最常见原因。
- 电压与供电确认:MA502的UART电平为5V,你的FTDI TTL-234X-5V刚好匹配,无需额外供电(MA502自身供电),不要乱接FTDI的VCC引脚。
- 物理连接可靠性:检查接线是否松动、引脚是否虚焊,必要时用万用表测试引脚通断。
二、串口参数补全
MA502默认串口参数为9600波特率、8位数据位、无校验、1位停止位(8N1),建议在脚本中显式声明所有参数,避免串口库默认值不匹配:
import serial ser = serial.Serial( port='COM3', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1 # 添加超时,避免无限等待数据 )
三、脚本调试优化
- 添加超时与解码:原脚本未设置超时,
readline()会一直等待换行符;取消解码注释并添加错误忽略,避免编码异常导致数据无法显示:
ser.flushInput() ser.flushOutput() while True: data = ser.readline().decode('utf-8', errors='ignore') if data.strip(): # 仅打印非空有效内容 print(data.strip())
- 用串口助手验证:先脱离Python,用串口调试助手(如SSCOM)打开COM3,设置相同参数测试。如果助手也收不到数据,问题出在硬件连接或设备配置;如果助手能收到,再排查Python脚本细节。
四、设备配置确认
- 检查MA502是否切换到UART输出模式,部分设备默认可能为模拟量输出,需通过按键或配套软件切换。
- 确认MA502输出是否带换行符:若设备输出无换行,
readline()会一直等待,可改用ser.read(10)读取固定字节数测试。
内容的提问来源于stack exchange,提问作者KingBojack
相关产品推荐
相关产品推荐

