使用 orangepi-config 使能 UART2 后,,在 /dev 下可以看到 ttyS2,,但如下代码查询结果为空:
In [10]: from serial.tools.list_ports import comports
In [11]: comports()
Out[11]: []
查看 comports 实现如下:
逐句执行 comports 语句:
In [16]: glob('/dev/ttyS*')
Out[16]: ['/dev/ttyS9', '/dev/ttyS7', '/dev/ttyS2', '/dev/ttyS1']
In [17]: [SysFS(d) for d in _]
Out[17]:
[<serial.tools.list_ports_linux.SysFS at 0x7f88996830>,
<serial.tools.list_ports_linux.SysFS at 0x7f88997550>,
<serial.tools.list_ports_linux.SysFS at 0x7f889979d0>,
<serial.tools.list_ports_linux.SysFS at 0x7f889a54e0>]
In [18]: [d.subsystem for d in _]
Out[18]: ['platform', 'platform', 'platform', 'platform']
可知 comports 是识别出了串口 ttyS2 的,,但又因为它的 subsystem 属性值为 platform,,又把它丢弃了。。
不知道这是 pyserial 的问题,,还是 OrangePi 系统的问题,,怎样修改才比较合理??
离线
搜了下,,发现这个问题四年前就有人提了,,可惜还没解决。。有人提了 pr,,但作者还未 merge
/dev/ttyS0 being filtered out by list_ports on Raspberry Pi
最近编辑记录 XIVN1987 (2024-03-17 17:14:55)
离线