读取Pyserial的串行输出并不可靠

bru*_*ker 6 macos serial-port pexpect pyserial python-3.x

我正在使用MacOS上的代码连接来连接设备,并且100次此代码仅连接1或2次,并且没有响应(因为没有超时)其余时间.

ser = serial.Serial(port="/dev/xyz",timeout = None, baudrate=115200, parity = serial.PARITY_NONE, bytesize = serial.EIGHTBITS, stopbits = serial.STOPBITS_ONE)

def exitSer(ser):
    print("Closing")
    ser.close()

atexit.register(exitSer, ser)

if ser.is_open:
    time.sleep(2)
    while(1):
        print(ser.readline().decode("utf-8"))
Run Code Online (Sandbox Code Playgroud)

你能否告诉我如何使用像fcntl等程序来查找这个端口是否完全免费并且可以使用,以及如何在强制端口释放后将tty port的标志设置为free.

一旦这个工作,我必须运行这个多线程,其中每个线程运行不同的设备,期望在行中输出.有任何建议,以防万一这是有效的.

bru*_*ker 0

def startSerial(tty_id):
    ser = serial.Serial(port = tty_id, timeout = None)
    ser.close()
    ser.open()
    if ser.isOpen():
        print(ser.portstr, ":connection successful.")
        return ser
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

在 .open() 之前调用 ser.close() 修复了它。我测试了大约 200 次,到目前为止还没有让我失望。我现在正在多线程中测试它,希望它也能工作。

谢谢大家。