gpt4 book ai didi

c - wValue 在通过 USB 与 "USB HID Red Visual Indicator"交互时扮演什么角色?

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:57 25 4
gpt4 key购买 nike

unsigned char command = strcmp("on", argv[1]) == 0 ? 0x02 : 0x00;

// From Delcom documentation
unsigned char buffer[] = {
0x65, // 8 byte packet size
0x0C, // Command type
command, // DataLSB - Command parameter
0xFF, // DataMSB - Command parameter
0x00, // HID, first byte
0x00, // HID, second byte
0x00, // HID, third byte
0x00 // HID, fourth byte
};

libusb_control_transfer (
devh,
0x21, // bmRequestType (host to device)
0x09, // bRequest (set configuration)
0x0635, // wValue (configuration value)
0x000, // wIndex
buffer, // Data / message
sizeof(buffer), // wLength, Number of bytes to be sent
0 // Timeout
);

我买了一个 Delcom usb 控制灯连接到我们的构建服务器,但事实证明,Delcom 提供的 C 示例不再在 Ubuntu 14.04 上编译,所以我认为这将是一个学习一点 C 以及一些关于 USB 工作原理的知识。

在为类似的 Delcom 设备找到一个 Ruby 实现后,我能够通过我的 C 程序控制这个小工具,但我想更多地了解它是如何工作的。添加到上面代码的注释是搜索和阅读数小时的结果,但仍有很多空白需要填写:-)

  1. wValue (0x0635) 起什么作用?它是标准化配置(bRequest/SET_CONFIGURATION 的参数)吗?
  2. wIndex (0x000) - 这是否意味着应该从头开始读取数据?为什么需要这个?
  3. 为什么需要像 wLength 这样的参数? '
  4. 我是否在评论中做出了其他不正确的假设?

希望这个问题对于 Stackoverflow 来说不会太模糊 :-)

有问题的小工具: http://www.delcomproducts.com/productdetails.asp?PartNumber=904402

最佳答案

bmRequestTypemore than the direction of the transfer .它还指示请求的类型,这里是类请求,以及接收者,这里是接口(interface)。

当接收者是接口(interface)时,wIndex代表接口(interface)号。一个 USB 设备可以有多个不同类的接口(interface)。

如果是标准设备请求,bRequest = 0x09 表示 SET_CONFIGURATION。

对于 HID 类请求,bRequest = 0x09 表示 SET_REPORT 请求(有关 HID 报告的更多信息,请参阅 HID document, section 7.2 和其余部分)。

wValue 的解释方式取决于请求。对于SET_REPORT请求,高字节代表报告类型,低字节代表报告ID。

报告类型为 0x01=输入,0x02=输出,0x03=功能,0x04-FF=保留。所以在你的情况下,我猜它是特定于这个设备的。

数据就是“报告”。

可以在 standard HID usage tables 中定义报告包含的内容,例如标准键盘、鼠标……但不一定非得如此。

对于作为参数传递的长度,这与许多 C 函数中的相同:数据参数是一个 unsigned char *,一个指针,如果不这样做,则无法知道大小不要通过它。您可以使用 sizeof,因为您的 buffer 是一个数组。

关于c - wValue 在通过 USB 与 "USB HID Red Visual Indicator"交互时扮演什么角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com