完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
和声2.03BMPLAB 3.61cc32 1.43i有一个操纵杆HID,它工作良好,在PC机驱动控制上显示正确-两个按钮都能正常工作。一旦我添加了一个报告ID(准备添加另一个输出报告),操纵杆就无法枚举。X01,//USAGE页面(通用桌面)0x09,0/04,/使用(操纵杆)0xA1,0x01,//Cube(/Application)//0x85,0x01,//报告ID(1)/ /添加,这导致按钮不能与PC驱动程序0x09,0x04,/ /使用(操纵杆)0xa1,0x00,//集合(物理)0x85,0x01,/ /报告ID(1)/ /添加此按钮导致按钮不能与PC驱动程序0x05、0x09、//UsAGEPGE(按钮)0x19、0x01、/使用最小值(Button 1)0x29、0x02、/使用最大值(按钮2)0x15、0x00、/逻辑最小值(0)0x25、0x01、/逻辑最大值(1)0x95、0x08、/或报告计数(8)仅使用0x75为2。,0x01,/ /报告大小(1)0x81a,0x02,//输入(数据,瓦尔河,ABS)0xC0,/ /结束收集(物理)0xC0,/ /结束收集(应用)};
以上来自于百度翻译 以下为原文 HARMony 2.03b MPLAB 3.61 CC32 1.43 I have a joystick HID that works fine and shows up correctly on the PC driver control - both buttons function correctly. As soon as I add a Report ID (preparatory to adding another report for output) the Joystick fails to enumerate. const uint8_t hid_rpt0[] = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (JoyStick) 0xA1, 0x01, // Collection (Application) // 0x85, 0x01, // Report ID (1) //adding this causes the buttons to not work with the PC driver 0x09, 0x04, // USAGE (Joystick) 0xA1, 0x00, // Collection (Physical) 0x85, 0x01, // Report ID (1) //adding this causes the buttons to not work with the PC driver 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // Usage Minimum (Button1) 0x29, 0x02, // Usage Maximum (Button 2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x95, 0x08, // Report Count (8) only 2 used 0x75, 0x01, // Report Size (1) 0x81, 0x02, // Input (Data,Var,Abs) 0xC0, // End Collection (Physical) 0xC0, // End Collection (Application) }; |
|
相关推荐
8个回答
|
|
在报表描述符中添加报表ID时,还需要确保数据第一个字节(数据(0))中的中断具有报告ID。实际数据应该从现在的第二字节开始。如果您想在这个操纵杆报表描述符中添加另一个输出报告,则不需要添加报表。ID.请检查标准USB键盘在没有报告ID的情况下有两个输入和输出报告。如果需要进一步的信息,请告诉我。
以上来自于百度翻译 以下为原文 When you add a Report ID in the Report Descriptor you also need to make sure that Interrupt IN data's first byte (data[0]) has the Report ID. The actual data should start from the 2nd byte now. If you want to add another OUTPUT report in this Joystick Report Descriptor, you do not need to add Report ID. Please check how standard USB Keyboards have both INPUT and OUTPUT Reports without a Report ID present. Please let me know if you need any further information. |
|
|
|
谢谢。这就解决了最初的问题。现在我试图添加一个输出报告,枚举失败。我假设它是简单的…0x05,0x09,0/0x04,0/04,//用法(操纵杆)0xa1,0x01,//收藏(应用)0x09,0x04,//使用(操纵杆)0xa1,0x00,//集合(物理)0x85,0x01,//报告ID(1)0x05,0x09,//使用页(按钮)0x19,0x01,//US。年龄最小(Button 1)0x29,0x02,/使用最大值(按钮2)0x15,0x00,//逻辑最小值(0)0x25,0x01,/逻辑最大值(1)0x95,0x08,/ /报告计数(8)仅使用0x75,0x01,/ /报告大小(1)0x81a,0x02,//输入(数据,瓦尔河,ABS)0xC0,/ /结束收集(物理)/添加代码低于0x06,0x00,0xFF,//Usage页(厂商定义页1)0x09,0x01,//用法(供应商使用率)0xa1,0x02,//集合(逻辑)0x85,0x02,/ /报告ID(2)0x15,0x00,/逻辑最小值(0)0x25,0x01,/逻辑最大值(1)0x75,0x01,/报告大小(1)0x95,0x01,/报告计数(8)0x91,0x02,//输出(数据,瓦尔河,ABS)0xC0,/ /结束收集(逻辑)0xC0,/ /结束收集(应用)
以上来自于百度翻译 以下为原文 Thanks. That fixed the initial problem. Now I'm trying to add an output report and enumeration fails. I assume it's something simple... 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (JoyStick) 0xA1, 0x01, // Collection (Application) 0x09, 0x04, // USAGE (Joystick) 0xA1, 0x00, // Collection (Physical) 0x85, 0x01, // Report ID (1) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // Usage Minimum (Button1) 0x29, 0x02, // Usage Maximum (Button 2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x95, 0x08, // Report Count (8) only 2 used 0x75, 0x01, // Report Size (1) 0x81, 0x02, // Input (Data,Var,Abs) 0xC0, // End Collection (Physical) //Added code below 0x06, 0x00, 0xFF, // USAGE_PAGE (Vendor Defined Page 1) 0x09, 0x01, // USAGE (Vendor Usage 1) 0xA1, 0x02, // Collection (Logical) 0x85, 0x02, // Report ID (2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x01, // Report Count (8) 0x91, 0x02, // Output (Data,Var,Abs) 0xC0, // End Collection (Logical) 0xC0, // End Collection (Application) |
|
|
|
0x05,0x09,0x09,0x04,//使用(操纵杆)0xa1,0x01,//集合(应用)0x09,0x04,/ /使用(操纵杆)0xa1,0x00,//集合(物理)0x85,0x01,/ /报告ID(1)0x05,0x09,//使用页(按钮)0x19,0x01,/ /使用最小值(Button 1)0x29,0x02,//使用最大值(按钮2)0x15、0x00、/或逻辑最小值(0)0x25、0x01、/逻辑最大值(1)0x95、0x08、/或报告计数(8)仅使用0x75、0x01、/或报告大小(1)0x81a、0x02、/(输入、数据、瓦尔河、ABS)0xC0、/ /结束收集(物理)0xC0、/结束收集(应用)//新添加//AD在0x06、0x00、0xFF、/Usage页面(厂商定义页1)0x09、0x01、/使用(供应商使用率1)0xa1、0x02、//集合(逻辑)0x85、0x02、/或报告ID(2)0x15、0x00、/或逻辑最小值(0)0x25、0x01、/逻辑最大值(1)0x75、0x01、/或报告大小(1)0x95、0x01、/或报告Cou.NT(8)0x91,0x02,//Outlook(数据,瓦尔河,ABS)0xC0,//结束收集(逻辑)//0xC0,/ /结束收集(应用程序)/删除此Link,请您尝试使用该报告描述符并让我知道您的观察。
以上来自于百度翻译 以下为原文 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (JoyStick) 0xA1, 0x01, // Collection (Application) 0x09, 0x04, // USAGE (Joystick) 0xA1, 0x00, // Collection (Physical) 0x85, 0x01, // Report ID (1) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // Usage Minimum (Button1) 0x29, 0x02, // Usage Maximum (Button 2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x95, 0x08, // Report Count (8) only 2 used 0x75, 0x01, // Report Size (1) 0x81, 0x02, // Input (Data,Var,Abs) 0xC0, // End Collection (Physical) 0xC0, // End Collection (Application) //Newly Added //Added code below 0x06, 0x00, 0xFF, // USAGE_PAGE (Vendor Defined Page 1) 0x09, 0x01, // USAGE (Vendor Usage 1) 0xA1, 0x02, // Collection (Logical) 0x85, 0x02, // Report ID (2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x01, // Report Count (8) 0x91, 0x02, // Output (Data,Var,Abs) 0xC0, // End Collection (Logical) // 0xC0, // End Collection (Application) // Removed this line Could you please try with this report descriptor and let me know your observation. |
|
|
|
我已经尝试过了。原来0x95,0x01上的一个打印错误应该是0x95/0x08。眼睛一直在阅读评论而不是代码。现在列举并没有你的建议。不幸的是,当按下时操纵杆按钮不会被激活。:
以上来自于百度翻译 以下为原文 I tried that already. Turns out a typo on 0x95,0x01 should be 0x95,0x08. Eyes kept reading the comment not the code. Now enumerates with and without your suggestion. Unfortunately now the joystick buttons don't activate when pressed. :-( |
|
|
|
原来0x95/0x01上的一个打印错误应该是0x95/0x08& gt;我想知道为什么这会起作用。报告计数也可以是1。PC主机驱动程序寻找非常具体的东西吗?请提供我的USB总线流量细节,如果可用的话,我也会在我的终端检查这个报告描述符。
以上来自于百度翻译 以下为原文 Turns out a typo on 0x95,0x01 should be 0x95,0x08 >> I am wondering why that should make a difference. Report Count can be 1 as well. Is the PC Host driver looking for something very specific ? Please provide me the USB BUS traffic details, if available. I will check this Report Descriptor at my end as well. |
|
|
|
报表计数/报告大小必须是字节数的0x75、0x01、/或报告大小(1)0x95、0x01、/或报告计数(8),这仅使用1位-需要7位以上的工作。正确的安装应该匹配注释。0x75、0x01、/ /报告大小(1)0x95、0x08、/或报告计数(8)与此更改设备现在枚举。TES是正确的,现在把开关信息转换到USB/PC上是行不通的。
以上来自于百度翻译 以下为原文 Report count/report size must be in multiples of a byte. 0x75, 0x01, // Report Size (1) 0x95, 0x01, // Report Count (8) this only uses 1 bit - needs 7 more bits to work. correct setup should match the comment. 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) with this change device now enumerates correctly, it just doesn't work in getting the switch info to the u***/pc now. |
|
|
|
解决了。我的反跳和USB代码需要修复。现在都在工作。
以上来自于百度翻译 以下为原文 SOLVED. My debounce and USB code need to be fixed. All is working now. |
|
|
|
我可以要求你在线程中添加一个“解决的”前缀吗?这将很容易允许其他读者识别解决方案线程。
以上来自于百度翻译 以下为原文 Could I request you to add a "SOLVED: " prefix to the thread. This will easily allow the other readers to identify a solution thread. |
|
|
|
只有小组成员才能发言,加入小组>>
5146 浏览 9 评论
1993 浏览 8 评论
1921 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3162 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2218 浏览 5 评论
714浏览 1评论
601浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
484浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
615浏览 0评论
513浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 05:41 , Processed in 2.020920 second(s), Total 93, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号