我使用pyusb库连接到两个相同的麦克风阵列,但是它们有相同的idVendor和idProduct编号。区分这两种设备的唯一方法是地址,但我不知道如何使用地址进行连接。
有没有办法用设备的地址而不是idVendor或idProduct来连接usb?
这是代码
import usb.core
import usb.util
import time
from tuning import Tuning
import dfu
device_list = dfu.DFU.find()
print(device_list)
dev1 = usb.core.find(idVendor=0x2886, idProduct=0x0018) #address = 0x013
dev2 = usb.core.find(idVendor=0x2886, idProduct=0x0018) #address = 0x012
if dev1:
Mic_tuning1 = Tuning(dev1)
Mic_tuning2 = Tuning(dev2)
print(Mic_tuning1.direction)
print(Mic_tuning2.direction)
while True:
try:
print(Mic_tuning1.direction)
print(Mic_tuning2.direction)
time.sleep(1)
except KeyboardInterrupt:
break
else: print('failed to find microphone')发布于 2022-08-26 23:36:27
免责声明:我不熟悉pyusb,但我对libusb有点熟悉,这是使用的底层库。
您调用以获取“dev1”和“dev2”的函数很可能是在幕后调用libusb_open_device_with_vid_pid()。
https://libusb.sourceforge.io/api-1.0/group__libusb__dev.html#ga10d67e6f1e32d17c33d93ae04617392e
为了方便起见,添加了这个libusb方法,因为访问设备的通常方法是迭代设备列表以找到要连接的设备。在libusb中,这是通过libusb_get_device_list()完成的。您将遍历设备列表,在每个设备上调用libusb_get_device_address(),直到找到具有所需地址的设备:
https://libusb.sourceforge.io/api-1.0/group__libusb__dev.html#gac0fe4b65914c5ed036e6cbec61cb0b97
关于pyusb的文档是否提到类似于'get_device_list()‘方法的东西?这就是你所需要的。
https://stackoverflow.com/questions/71026150
复制相似问题