首页 > 解决方案 > 我无法收到 0x11 之后的任何 HEX 数据

问题描述

我正在尝试通过 pySerial 发送 HEX 命令来控制/与监视器通信。

我可以很好地向监视器发送命令,监视器毫无问题地响应它们。当我尝试从监视器接收它打开或关闭的确认时,我只收到一部分响应。一致地,只要从监视器返回 0x11 并将 HEX 值放在它前面,响应打印就会终止。

例如:Realterm 返回:0xAA 0xFF 0x00 0x03 0x41 0x11 0x01 0x55 我的代码返回:( 0xAA 0xFF 0x00 0x03 0x11有时它最后返回 0x01U。)

我尝试在 xonxoff 都设置为 False 和 True 的情况下接收这些数据。我还测试并更改了 serial.Serial() 的所有其他参数。当我通过 RealTerm 等终端应用程序进行通信时,会收到命令并打印完整的响应。我目前将 serial.Serial() 设置为与 RealTerm 中的完全相同的参数。有人能对此有所了解吗?

通读论坛后,我尝试将 xonxoff 设置为“真”和“假”,但均未成功

到处寻找一种0x11完全忽略的方法,这样我就可以获得最终的 HEX 值(我真正关心的唯一 HEX 值)。

环顾论坛以查看是否需要缓冲区,但也无法使其正常工作。

确保波特率、奇偶校验等所有匹配当前在 RealTerm 中工作的设置

import serial
from serial import SerialException
from time import sleep

ser = serial.Serial('COM3', baudrate=9600, xonxoff=False, timeout=3.0, rtscts=False, dsrdtr=False, bytesize = serial.EIGHTBITS, parity=serial.PARITY_NONE, write_timeout=None, stopbits=serial.STOPBITS_ONE, exclusive=None)
ser.isOpen()

command = b'\xAA\x11\x00\x00\x11'
ser.write(command)
s = ser.readline(8)
print(s)

我需要显示完整的 HEX 返回值。如果没有别的,只是最后一个 HEX 值。在我描述的示例中,这将是 0x55。

先感谢您!

标签: python-3.xpyserial

解决方案


推荐阅读