Android-USB-理解controlTransfer方法

Android-USB-理解controlTransfer方法,android,usb,usb-hid,Android,Usb,Usb Hid,我即将开始一个新的项目,与一个USB隐藏设备的工作。我知道要向HID设备发送命令,请使用以下方法: controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout); 虽然我非常确定requestType、buffer、length和timeout是什么,但我并不清楚request、value和index。这些参数的作用是什么?我将传递什么来发送

我即将开始一个新的项目,与一个USB隐藏设备的工作。我知道要向HID设备发送命令,请使用以下方法:

controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout);
虽然我非常确定
requestType
buffer
length
timeout
是什么,但我并不清楚
request
value
index
。这些参数的作用是什么?我将传递什么来发送我的命令


例如,如果我要在跑步机上设置速度,而跑步机上有一个指定的命令来设置速度,我会通过什么?我得到的文档对此并不清楚。

请求、值和索引可以从USB规范中找到。这些是控制管道命令的标准参数

根据USB规范3.0第9.3节-

下表列出了与USB规范中的请求、值和索引相对应的值-


例如,我收到了一个通过USB HID接口的跑步机命令列表(如设置速度或坡度),我将使用什么?@PinkJazz这些值将是特定于类的,您需要查看数据表。例如,HID类特定请求、GET_报告、bRequest=0x1、wValue=0x3、wIndex=接口号。您可以检查所有HID命令的HID规范和相应的值。对于跑步机,我相信您应该在产品的数据表中找到特定的功能命令。bRequest将始终是命令值。bIndex通常是端点号或接口号,bValue取决于命令类型。