0

我正在使用 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 控制台的屏幕截图:

请求下行

请求下行

收到空下行链路

收到空下行链路

4

0 回答 0