-1

我有一个 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))。但是如果之前连接了多个设备并且我插入了这个设备,它会改变这个地址,我的问题是我怎么能每次我插入我的设备时找出这个地址?

4

1 回答 1

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], ...)
于 2017-07-05T16:43:47.853 回答