Python我有设备ID如何获取设备地址

标签 python linux usb pyserial pyudev

我有一个 USB 设备,每次插入 PC 时它可能不会连接到同一个端口,鉴于我有它的 UID,我如何找到它的开发地址?

import serial.tools.list_ports as port

portlist = list(port.comports())
for p in portlist:
  print p

给我输出:

/dev/ttyS0 - ttyS0
/dev/ttyUSB1 - USB2.0-Serial
/dev/ttyUSB0 - FT232R USB UART

我的设备是 FT232R USB UART ,目前其开发地址是 /dev/ttyUSB0 ,我的程序中需要这个用于串行读写(ser = serial.Serial(port, baud))。但是如果之前连接了多个设备并且我插入这个设备,它会更改这个地址,我的问题是每次插入设备时如何找到这个地址?

最佳答案

您不需要使用pyusb。如果您的系统使用 udev 来管理热插拔设备(就像当今大多数 Linux 发行版所做的那样),您可以使用 pyudev 库来查找您的设备。或者更简单,在 /dev/serial/by-id 中找到您的设备,并在代码中使用该符号链接(symbolic link)而不是 /dev/ttyUSBx。只要您不连接具有相同序列号的其他设备,无论连接顺序如何,它都保证保持不变。

否则:

import serial

UID = '12345678'
ports = {p.serial_number:p.device for p in serial.tools.list_ports.comports() if p.serial_number}
if UID in ports:
    port = serial.Serial(ports[UID], ...)

关于Python我有设备ID如何获取设备地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44860507/

相关文章:

linux - pthread_sigmask 无法与 aio 回调线程一起正常工作

linux - 我如何找出不推荐使用的功能

linux - svn 合并单个文件。添加新文件

android - 带有 USB OTG 的 Android 设备是否支持红外线收发器?

java - 使用 Java 和 RXTX 检测 USB CDC 设备连接/断开

python - 使用 tensorflow 和 keras 运行 .py 时出错

Python 语音识别库 - 总是在听?

python - 我们正在使用tesseract进行平移OCR,但无法检测到名称和平移号等详细信息

python - Python程序输出错误

java - Android USB 转串口接收错误