隐藏游戏板报告描述符问题
HID Gamepad Report Descriptor Issue
我正在处理一个适配器,该适配器将两个库并将发射机/控制器输入转换为HID输入(通过PPM,但我认为这对本文并不重要)。我正在使用Arduino,但是在这里发布,因为除非我误会了,否则我的问题是在HID报告描述符中,而不是我的Arduino代码。
我有一个示例描述符,如果我使用它,则有效的是:
PROGMEM const char usbHidReportDescriptor[36] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x05, // USAGE (Game Pad)
0xa1, 0x01, // COLLECTION (Application)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x32, // USAGE (Z) rx
0x09, 0x35, // USAGE (Rx) ry
0x35, 0x00, // PHYSICAL_MINIMUM (0)
0x46, 0xff, 0x00, // PHYSICAL_MAXIMUM (255)
0x15, 0x00, // LOGICAL_MINIMUM (-127)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x04, // REPORT_COUNT (4)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
};
第一个样本只有棍棒,没有按钮,因此我尝试创建一个具有按钮的描述符。我使用HID描述工具生成的配置文件是:
PROGMEM const char usbHidReportDescriptor[46] = {
0x05, 0x01, //USAGE_PAGE (Generic Desktop)
0x09, 0x05, //USAGE (Game Pad)
0xa1, 0x01, //COLLECTION (APPLICATION)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x09, //USAGE_PAGE (Button)
0x19, 0x01, //USAGE_MINIMUM (Button1)
0x29, 0x10, //USAGE_MAXIMUM (Button 16)
0x15, 0x00, //LOGICAL_MINIMUM (0)
0x25, 0x01, //LOGICAL_MAXIMUM(1)
0x95, 0x10, //REPORT_COUNT (16)
0x75, 0x01, //REPORT_SIZE (1)
0x81, 0x02, //INPUT(Data, Var, Abs)
0x05, 0x01, //USAGE_PAGE (Generic Desktop)
0x09, 0x30, //USAGE (X)
0x09, 0x31, //USAGE (Y)
0x09, 0x32, //USAGE (Z)
0x09, 0x33, //USAGE (Rx)
0x15, 0x81, //LOGICAL_MINIMUM(-127)
0x25, 0x7f, //LOGICAL_MAXIMUM(127)
0x75, 0x08, //REPORT_SIZE(8)
0x95, 0x04, //REPORT_COUNT(4)
0x81, 0x02, //INPUT(Data,Var,Abs)
0xc0, //END_Collection
0xc0 //END_Collection
};
当我编译时,我不会遇到错误,但是上传到设备后,我会在设备配置文件中获得"此设备无法启动。(代码10)"消息。目前,这是我在测试中唯一改变这一问题的方法。
如果您仍然觉得在Arduino部分中最好地问,我可以在此处发布,但是我认为这是我对描述符的错误。
我非常感谢任何人的时间和帮助!请让我知道是否有更多信息有助于发布。
在实现简单的实现后解决了问题。只是在以下文件中找到了一个文件:usbhidreportDescriptor,发现我需要调整的USBConfig.h文件中有一个定义。仅在任何人遇到相同问题的情况下发布!
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- 非常基本的MurmurHash问题:len的变量描述,C++实现的关键
- 隐藏游戏板报告描述符问题