computer00,你好!我现在想做一个多功能按键,USB枚举已经完成,按下按键时,数据可以发送到PC机上(用USB_Monitor进行分析数据时,发现数据已经转上去),但PC机无法识别我发的是什么数据!我自己生成HID:
DB 0X05,0X01 ;0x05:usage page 0x01:普通桌面
DB 0X09,0X06 ;0x09:usage 0x06:键盘
DB 0XA1,0X01 ;0xA1:开集合,0x01:应用集合
DB 0X85,0X0B ;0x85:报告ID,0x0B:ID号为11
DB 0X05,0X07 ;0x05:usage page 0x07:键盘
DB 0X19,0X00 ;0x19:用途为最小值,0x00:最小值
DB 0X29,0X91 ;0x19:用途为最大值,0x91:最大值
DB 0X95,0X07 ;0x95:数据域数量,0x07:7个
DB 0X81,0X00 ;0x81:输入,0x00:6个8位数据域
DB 0XC0 ; end
我将部分按键做成多媒体键的形式,然后在上面的HID前面或后面加上:
DB 05H , 0CH ; HID_UsagePage(HID_USAGE_PAGE_CONSUMER)
DB 09H , 01H ; HID_Usage(HID_USAGE_CONSUMER_CONTROL)
DB 0A1H, 01H ; HID_Collection
DB 85H , 02H ; HID_ReportID 报告ID:2
DB 19H , 01H ; HID_UsageMin
DB 2AH , 0FFH ; HID_UsageMaxS
DB 03H , 15H ; logical minimum (1)
DB 01H , 26H ; logical maximums (03FF)
DB 0FFH, 03H ;
DB 95H , 01H ; report count (1)
DB 75H , 10H ; report size (16位数据)
DB 81H , 00H ; HID_Inpu
DB 0C0H
这样多媒体键PC机是正常识别的,而别的键还是没有识别,翻开你写的玩USB之书,里面涉及HID如何设置后让PC机正确识别有点少,请您指点下应该注意哪些细节的!谢谢您 |