如何使用Pyserial来检测其他应用程序是否正在使用串行端口?

时间:2019-03-02 07:08:31

标签: python pyserial

通常,如何使用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

0 个答案:

没有答案