資源描述:
《HID 報(bào)告描述符終極解析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、USBHIDReport終極解析HID的報(bào)告描述符巨難懂,關(guān)鍵是數(shù)據(jù)格式與每一位代表的意思。經(jīng)過三天的研究,終于將HIDReport的每一個(gè)數(shù)據(jù)位的含義弄清楚了,現(xiàn)將數(shù)據(jù)解析如下,最后附上了一個(gè)HID通信的Report例子。以一個(gè)鍵盤的HIDReport為例:鍵盤的HID報(bào)告描述符:codecharKeyBoardReportDescriptor[63]={0x05,0x01,//USAGE_PAGE(GenericDesktop)0x09,0x06,//USAGE(Keyboard)0xa1,0x01,//COLLECTION(Application)0x05
2、,0x07,//USAGE_PAGE(Keyboard)0x19,0xe0,//USAGE_MINIMUM(KeyboardLeftControl)0x29,0xe7,//USAGE_MAXIMUM(KeyboardRightGUI)0x15,0x00,//LOGICAL_MINIMUM(0)0x25,0x01,//LOGICAL_MAXIMUM(1)0x75,0x01,//REPORT_SIZE(1)0x95,0x08,//REPORT_COUNT(8)0x81,0x02,//INPUT(Data,Var,Abs)0x95,0x01,//REPORT_COUN
3、T(1)0x75,0x08,//REPORT_SIZE(8)0x81,0x03,//INPUT(Cnst,Var,Abs)0x95,0x05,//REPORT_COUNT(5)0x75,0x01,//REPORT_SIZE(1)0x05,0x08,//USAGE_PAGE(LEDs)0x19,0x01,//USAGE_MINIMUM(NumLock)0x29,0x05,//USAGE_MAXIMUM(Kana)0x91,0x02,//OUTPUT(Data,Var,Abs)0x95,0x01,//REPORT_COUNT(1)0x75,0x03,//REPORT
4、_SIZE(3)0x91,0x03,//OUTPUT(Cnst,Var,Abs)0x95,0x06,//REPORT_COUNT(6)0x75,0x08,//REPORT_SIZE(8)0x15,0x00,//LOGICAL_MINIMUM(0)0x25,0xFF,//LOGICAL_MAXIMUM(255)0x05,0x07,//USAGE_PAGE(Keyboard)0x19,0x00,//USAGE_MINIMUM(Reserved(noeventindicated))0x29,0x65,//USAGE_MAXIMUM(KeyboardApplicatio
5、n)0x81,0x00,//INPUT(Data,Ary,Abs)0xc0//END_COLLECTION};具體分析如下:codecharKeyBoardReportDescriptor[63]={0x05,0x01,//USAGE_PAGE(GenericDesktop)//分析根據(jù)HID短項(xiàng)目數(shù)據(jù)格式短項(xiàng)目的編碼形式如下:Bits23222120191817161514131211109876543210[data][data]bTagbTypebSize0x05=000001010000:UsagePage01:bType,全局(bType=0:主項(xiàng)目;
6、bType=1:全局項(xiàng)目;bType=2:區(qū)域項(xiàng)目;)01:bSize,1字節(jié)(BSize用來指出項(xiàng)目的數(shù)據(jù)所需字節(jié)的數(shù)目,該數(shù)目僅可以為0(當(dāng)bSize=0),1(當(dāng)bSize=1),2(當(dāng)bSize=2),和4(當(dāng)bSize=3)﹔注意不可以為3個(gè)字節(jié)。大部分的卷標(biāo)僅需一個(gè)字節(jié)的數(shù)據(jù)﹔全局項(xiàng)目的卷標(biāo)Unit比較特殊有可能最多用到4個(gè)字節(jié)來表示其資料。)0x01:GenericDesktop(查文檔UniversalSerialBusHIDUsageTables,第三節(jié)UsagePages)0x09,0x06,//USAGE(Keyboard)//分析0x09
7、=00001001根據(jù)HID短項(xiàng)目格式0000:Usage10:bType,區(qū)域項(xiàng)目01:bSize,1字節(jié)0x06:KeyBoard(查文檔UniversalSerialBusHIDUsageTables,第四節(jié))0xa1,0x01,//COLLECTION(Application)//分析0xa1:0x01:(卷標(biāo)EndCollection沒有跟隨任何資料。但是卷標(biāo)Collection跟隨一個(gè)字節(jié)的數(shù)據(jù),例如指針的數(shù)據(jù)名為Physical,而鼠標(biāo)的為Application。所有Collection的數(shù)據(jù)名稱與代碼如表7:表7:報(bào)告集合的名稱與代碼NamedU
8、sageUsagePhy