蟒蛇我有设备 ID 如何获取开发地址



我有一个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,我的串行r/w(ser = serial.Serial(port, baud)程序需要它。但是,如果之前连接了多个设备并且我插入了此设备,它会更改此地址,我的问题是每次插入设备时如何找到此地址?

您不需要使用 pyusb .如果您的系统使用udev来管理热插拔设备(就像现在大多数 Linux 发行版所做的那样(,您可以使用pyudev库来查找您的设备。或者更简单的是,在/dev/serial/by-id中找到您的设备,并使用该符号链接而不是代码中的/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], ...)

最新更新