0

我正在使用 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的描述符如下:

USB 设备列表

USB 说明第 1 部分

USB 说明第 2 部分

USB 说明第 3 部分

USB 说明第 4 部分

您有什么想法或解决方案可以让我从两个界面捕获数据吗?

谢谢和亲切的问候

4

0 回答 0