我正在使用 Windows 10 和 pywinusb 打开 USB 设备并处理原始数据,如下所示:
import sys
import pywinusb.hid as hid
from time import sleep
import atexit
import numpy as np
vid = my_VID
pid = my_PID
def readData(data):
np.set_printoptions(formatter={'int': hex})
s = np.array(list(data))
print(s)
hid_filter = hid.HidDeviceFilter(vendor_id=my_VID, product_id=my_PID)
hid_devices = hid_filter.get_devices()
if len(hid_devices) == 0:
print('No Device Found.')
exit(-1)
my_device = hid_devices[0]
print()
print("**************************DEVICE**************************\n")
print("Product Name : ", my_device.product_name)
print("Vendor Name : ", my_device.vendor_name)
print("Version Number : ", my_device.version_number)
print("\n**********************************************************\n")
my_device.open()
my_device.set_raw_data_handler(readData)
print("***************************DATA***************************\n")
try:
while my_device.is_plugged():
sleep(0.5)
except Exception as e:
print('Termination -> ' + str(e))
如上所示,它打开了第一个设备:
my_device = hid_devices[0]
但是使用此供应商和产品 ID,可以找到两个 USB 设备。对于第一个接口,可以在控制台上打印数据流,但是当我如下切换到下一个接口时,控制台上不会打印任何内容:
my_device = hid_devices[1]
两个接口都有输入管道,但它只显示来自第一个管道的数据。对于测试,我可以从 USBlyzer 程序中的两个接口观看数据流。USB的描述符如下:
您有什么想法或解决方案可以让我从两个界面捕获数据吗?
谢谢和亲切的问候