从 Pyserial 读取串行输出不能可靠地工作
Reading serial output from Pyserial doesnt work reliably
我在 MacOS 上使用代码 blow 连接到设备,在 100 次中此代码只会建立连接 1 或两次并且没有响应(因为没有超时)其余时间。
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"))
请问如何使用fcntl等程序查看此端口是否完全空闲可用,以及如何在强制释放端口后将tty端口的标志设置为空闲。
一旦成功,我必须 运行 这个多线程,其中每个线程都 运行 连接不同的设备,期待成行的输出。任何建议,以防万一。
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
在 .open() 修复它之前调用 ser.close()。我测试了大约 200 次,到目前为止我还没有失望过。我现在正在多线程中对其进行测试,希望它也能正常工作。
谢谢大家
我在 MacOS 上使用代码 blow 连接到设备,在 100 次中此代码只会建立连接 1 或两次并且没有响应(因为没有超时)其余时间。
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"))
请问如何使用fcntl等程序查看此端口是否完全空闲可用,以及如何在强制释放端口后将tty端口的标志设置为空闲。
一旦成功,我必须 运行 这个多线程,其中每个线程都 运行 连接不同的设备,期待成行的输出。任何建议,以防万一。
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
在 .open() 修复它之前调用 ser.close()。我测试了大约 200 次,到目前为止我还没有失望过。我现在正在多线程中对其进行测试,希望它也能正常工作。
谢谢大家