使用pyUSB与USB设备通信:如何计算接口和端点?

时间:2018-06-09 15:58:22

标签: interface usb endpoint pyusb

我正在尝试使用pyUSB与测试仪器(RTX6001音频分析仪)进行通信。仪器的面板上有几个按钮/旋钮,可以手动设置测试信号的输入和输出电平。该设备还允许通过USB控制这些设置,这就是我想要做的。

我是pyUSB和USB编程的新手。我试图关注the pyUSB tutorial,但我无法弄清楚如何将这个实现到我的乐器上。我还有一份文档描述了仪器设置的USB HID,但它没有提到有关USB接口或端点的任何信息。

我想出了一些连接USB设备的Python代码,并显示了有关可用配置,接口和端点的一些信息:

import usb.core
import usb.util
import sys

# find the device
device = usb.core.find(idVendor=0x0D9A, idProduct=0x00DF)

# was it found?
if device is None:
    raise ValueError('RTX6001 not found')

# show config / interface / endpoints:
for config in device:
    sys.stdout.write('Config ' + str(config.bConfigurationValue) + '\n')
    for interface in config:
        sys.stdout.write('\t' + \
            'Interface ' + str(interface.bInterfaceNumber) + \
                         ',' + \
                         str(interface.bAlternateSetting) + \
                         '\n')
        for endpoint in interface:
            sys.stdout.write('\t\t' + \
                             'Endpoint ' + str(endpoint.bEndpointAddress) + \
                             '\n')

此输出如下(由于某种原因,我不明白相同的信息显示两次):

Config 1
    Interface 0,0
    Interface 1,0
    Interface 1,1
        Endpoint 1
    Interface 1,2
        Endpoint 1
    Interface 1,3
        Endpoint 1
    Interface 2,0
    Interface 2,1
        Endpoint 129
    Interface 2,2
        Endpoint 129
    Interface 2,3
        Endpoint 129
    Interface 3,0
    Interface 4,0
        Endpoint 2
        Endpoint 130
Config 1
    Interface 0,0
    Interface 1,0
    Interface 1,1
        Endpoint 1
    Interface 1,2
        Endpoint 1
    Interface 1,3
        Endpoint 1
    Interface 2,0
    Interface 2,1
        Endpoint 129
    Interface 2,2
        Endpoint 129
    Interface 2,3
        Endpoint 129
    Interface 3,0
    Interface 4,0
        Endpoint 2
        Endpoint 130

问题:

(1)如何确定负责控制仪器设置的接口+端点?

(2)如何使用界面+端点设置来设置或读取仪器设置?

0 个答案:

没有答案