使用pyserial库经USB无法实现Helios-Preisser数显百分表请求式取数
Helios-Preisser Digimet 1722-502 数显百分表 Python串口主动请求通信实现问题
设备基础配置与已验证通信能力
- 设备型号:Helios-Preisser Digimet 1722-502 数显百分表
- 配套硬件:专用USB转串口连接线,设备端为4针专用接口,上位机端为标准USB接口,设备支持串口协议输出测量读数
- 开发目标:不依赖设备配套的专用软件,自行编写Python基础通信库实现与设备的全交互,通信规则参考设备自带协议手册说明
- 已跑通功能:按键触发主动发送模式,按下接线端红色按钮即可触发设备自动推送测量值
- 已验证可用的pyserial初始化代码:
import serial ser = serial.Serial( port='/dev/tty.usbserial-MA4LOCLF', baudrate=4800, parity=serial.PARITY_EVEN, bytesize=serial.SEVENBITS, stopbits=serial.STOPBITS_TWO, dsrdtr=True, xonxoff=True )
- 主动发送模式实测校验:
- 按下触发按钮后调用
ser.inWaiting(),返回缓冲区可读长度为8 - 调用
ser.read(8)读取完整缓冲区,返回内容为'+000.00\r',读数解析正常
- 按下触发按钮后调用
待实现的主动请求模式问题
根据设备通信协议定义,「外设请求式数据传输」的触发规则为:上位机将DataRequest引脚拉低并保持100ms~1000ms的T1时长,即可主动触发设备返回测量数据,无需人工按动按钮。
当前尝试的实现方式与异常表现:
- 已尝试遍历各类串口配置组合、发送不同格式的文本请求指令,均无法触发设备响应
- 典型测试场景:通过pyserial的
write方法发送测试指令,示例代码:
# 发送测试指令 write_return = ser.write('0\r') # write方法返回值为2,代表2个字节成功写入串口 # 后续调用ser.inWaiting()检查缓冲区,返回值为0,设备无任何数据返回
- 交叉验证结论:设备配套的Windows专用软件可正常实现主动请求读数据的功能,证明设备硬件、固件及通信模式本身无故障,必然存在可通过Python串口库模拟的正确触发方法。
核心需求
明确通过Python串口库模拟主动请求触发逻辑的可行实现方法。
内容的提问来源于stack exchange,提问作者Denis Barkats
相关产品推荐
相关产品推荐

