PySerial写不能按预期工作

问题描述 投票:0回答:1

我正在尝试将命令写入设备并使用RS232串口读取输出消息。当我尝试编写命令时,它最初正在工作。有时,它发送错误的命令。例如,如果我发送"PC:EXEC:MY_CMD",它会写入设备类似"PCPC:EXEC:MY_CMD""PC:EXEPC:EXEC:MY_CMD"。这是代码:

import serial
import time

ser = serial.Serial()
ser.port = 'COM11'
ser.baudrate = 115200
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.timeout = 1

time.sleep(1)
ser.open()

if ser.is_open:
    cmd = 'PC:EXEC:MY_CMD' + '\r\n'

if ser.in_waiting == 0:
    time.sleep(5)
    ser.write(cmd.encode())

if ser.in_waiting > 0:
    msg = ser.read(ser.in_waiting)
    print (msg.decode())

ser.flush()

ser.close()

我在读取串行输出时没有问题。

当我尝试使用tera term或putty等串行终端发送命令时,它工作正常。请帮我解决问题。

python-3.x serial-port pyserial
1个回答
0
投票

我自己解决了这个问题。

当我尝试发送命令时,python正在快速地将其写入设备。所以我添加了一个循环来逐个写入字节,延迟很小,它对我来说很好。这是编辑过的部分:

if ser.in_waiting == 0:
    for i in cmd:
        ser.write(i.encode())
        time.sleep(0.1)
© www.soinside.com 2019 - 2024. All rights reserved.