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

时间:2017-07-01 11:43:54

标签: 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,我需要在我的程序中使用串口r / w(ser = serial.Serial(port, baud))。但如果以前连接了多个设备我插入这个设备,它改变了这个地址,我的问题是我每次插入设备时如何才能找到这个地址?

1 个答案:

答案 0 :(得分:0)

您无需使用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], ...)