【问题标题】:Missing data responses while using Python/Pyserial to communicate with RS232 Serial Port使用 Python/Pyserial 与 RS232 串行端口通信时缺少数据响应
【发布时间】:2016-12-09 22:25:26
【问题描述】:

我正在使用 python 和 pyserial 来尝试发送命令并获得响应。这是我的示例代码:

import serial           
ComPort = serial.Serial('COM4') # open COM4
ComPort.baudrate = 115200
ComPort.bytesize = 8
ComPort.parity   = 'N'
ComPort.stopbits = 1
ComPort.timeout  = 1
a= "FE0652"
data = a.decode('hex')
No = ComPort.write(serial.to_bytes(data))
msg = ComPort.read(1024)
print (msg.encode('hex'))

我使用了另一个由 C 编写的工具,它正确且完整地显示了输出。但是对于 Python,它几乎丢失了一半的响应。例如:

预期:

ff5206
ff0023
ff0002
ff8080
ff8080
ff8080
ff8080
ff8003
......

观察到:

ff5206
ff0023
ff8080
ff8080
ff8003
......

【问题讨论】:

    标签: python encode pyserial


    【解决方案1】:

    在写入和读取之间添加一些延迟:

    time.sleep(0.01)
    

    另外,尝试按字节读取:

    s=''
    while ComPort.inWaiting() > 0:
        s += ComPort.read(1)
    

    【讨论】:

    • 谢谢迈克尔!我已经尝试过,但没有运气。当我尝试按字节读取时,它在第一个数据之后丢弃了响应,并且随机...有时只有 1,有时是 2,3...我不确定问题是否是因为响应太快所以pyserial dropouts响应,或者是因为编码部分......
    猜你喜欢
    • 2011-11-15
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2012-12-19
    相关资源
    最近更新 更多