我正在使用 pyserial 和 teraterm 与我的设备进行通信。我需要在设备请求时将十六进制值传递给我的设备。因此,我正在连续读取端口,然后当设备请求该值时,我写到端口。使用 teraterm 我将值复制到终端并按回车键,该值被设备接受。但是在使用 pyserial 时,即使设备成功接收到值,空值也会被传递。
这是我的python代码:
with serial.Serial(
port = com_port,
baudrate = 115200,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
timeout = 1,
xonxoff = False,
rtscts = False,
dsrdtr = False
) as ser:
while True:
line = ser.readline().strip()
line = line.decode('utf-8')
if line and len(line)>0:
print(line)
downlink = 'ABCD\r\n'
if 'Waiting for Downlink Timeout' in line:
time.sleep(2)
print(ser.read(ser.in_waiting).decode('utf-8'))
ser.write(downlink.encode())
time.sleep(2)
来自 teraterm 的截图:
术语设置
请求下行
下行接收成功
未收到下行链路
来自 python 控制台的屏幕截图:
请求下行
收到空下行链路