我无法收到0x11之后的任何十六进制数据

时间:2019-06-10 06:02:13

标签: python-3.x pyserial

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

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

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

我尝试使用xonxoff都设置为False和True的方式接收此数据。我还测试并更改了serial.Serial()的所有其他参数。当我通过诸如RealTerm之类的终端应用程序进行通信时,将收到命令并打印完整响应。我目前将serial.Serial()设置为与RealTerm中一直使用的参数完全相同的参数。任何人都可以对此有所了解吗?

在阅读完论坛后,我尝试将xonxoff设置为“ True”和“ False”,但均未成功

搜寻了一种完全忽略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)

我需要完整的十六进制返回值才能显示。如果没有其他问题,则仅输入最后一个十六进制值。在我描述的示例中,该值为0x55。

提前谢谢!

0 个答案:

没有答案