我问的原因是,我现在正在使用' by-id'来指代端口。串。 '由-ID'是指串行设备的序列号。
这没关系,但是如果我想用完全相同的品牌和型号替换该串行设备呢?它不会起作用,因为每个串行设备都有一个唯一的序列号。
也许有更好的方法可以做到这一点?串行设备顺便说一下条形码扫描器......
答案 0 :(得分:2)
对于那些希望与我完成同样事情的人来说,这是我发现按供应商ID(VID)和产品ID(PID)引用串行设备的最佳方式
另请注意,以下内容需要pyserial版本3或更高版本。
from serial.tools import list_ports
VID = 1234
PID = 5678
device_list = list_ports.comports()
for device in device_list:
if (device.vid != None or device.pid != None):
if ('{:04X}'.format(device.vid) == VID and
'{:04X}'.format(device.pid) == PID):
port = device.device
break
port = None
答案 1 :(得分:0)
我发现 list_ports.grep
函数很有用,比如
import serial.tools.list_ports as list_ports
device_signature = '0403:6014'
def find_serial_device():
"""Return the device path based on vender & product ID.
The device is something like (like COM4, /dev/ttyUSB0 or /dev/cu.usbserial-1430)
"""
candidates = list(list_ports.grep(device_signature))
if not candidates:
raise ValueError(f'No device with signature {device_signature} found')
if len(candidates) > 1:
raise ValueError(f'More than one device with signature {device_signature} found')
return candidates[0].device