通常,如何使用Pyserial
来检测另一个应用程序是否正在使用串行端口?
关键点:
如果应用程序当前正在访问我的串行设备/dev/ttyUSB0
。例如。 picocom /dev/ttyUSB0 -b 115200
正在运行(但可以是其他应用程序)。接下来,我使用Pyserial访问相同的串行端口。我期望serial.Serial.read()
根据read方法抛出SerialException
期望值。但是,这没有发生。
下面是我的测试脚本,其结果显示read_data = b''
,但未触发SerialException
。
脚本:
import serial
from pprint import pprint
port='/dev/ttyUSB0'
try:
serial_port = serial.Serial(port=port, baudrate=115200, timeout=5 )
read_data = serial_port.read()
#except serial.serialutil.SerialException as e:
except serial.SerialException as e:
print(e)
else:
print('serial_port:'); pprint(serial_port.__dict__)
print('\nread_data = ', read_data)
if not read_data:
print("read_data == zero or empty container or False")
serial_port.close()
输出:
serial_port:
{'_baudrate': 115200,
'_break_state': False,
'_bytesize': 8,
'_dsrdtr': False,
'_dtr_state': True,
'_exclusive': None,
'_inter_byte_timeout': None,
'_parity': 'N',
'_port': '/dev/ttyUSB0',
'_rs485_mode': None,
'_rts_state': True,
'_rtscts': False,
'_stopbits': 1,
'_timeout': 5,
'_write_timeout': None,
'_xonxoff': False,
'fd': 6,
'is_open': True,
'name': '/dev/ttyUSB0',
'pipe_abort_read_r': 7,
'pipe_abort_read_w': 8,
'pipe_abort_write_r': 9,
'pipe_abort_write_w': 10,
'portstr': '/dev/ttyUSB0'}
read_data = b''
read_data == zero or empty container or False