HID的基礎概念

2021-08-19 00:11:45 字數 2449 閱讀 4814

前言

本文內容摘自 《hid1_11.pdf》

1、hid item

a、hid item 有main items、global items、local items 三種型別;hid 報告描述符就是通過利用這三種型別進行填充形成一段有效記憶體空間,儲存相關的位置資訊。

b、hid item 有兩種格式:short items 和 long items兩種格式;

short items:可選的資料的大小可以是0、1、2或者4位元組,其格式如圖1所示

long items:通過乙個固定的識別符號來說明是乙個long items,其格式如圖2所示。

由於平時使用較多的事short items,故通過short items來描述hid 報告描述的編寫語法。根據圖1 short items格式的描述,short items的第乙個位元組由:2bits的bszie、2bits的btype、4bits的btag組成。

2.1、bsize、btype、btag的定義值說明
bsize:bsize的取值決定了攜帶的資料部分[data]的位元組數:

0 —-> 0 bytes

1 —> 1 byte

2 —> 2 bytes

3 —> 4 bytes

btype:btype的定義值表示使用哪個型別的item:

0 —> main

1 —> global

2 —> local

3 —> reserved

btag:說明item 功能的數字表示式。

2.2 main items
main items用於定義報表描述符中的資料項。main items可以分為帶資料的 main items和不帶資料的 main items。帶資料項的 main items用於生成報表中的資料項,包括 input(裝置->主機)、output(主機->裝置) 和 feature 專案。不帶資料的 main items包括 collection 和 end collection 專案。

2.2.1 main item tag值說明:
input : 1000 00 nn(0x8?),9-31bit為保留位,常攜帶乙個位元組,故nn為1,常見取值:0x81

collection:1010 00 nn (0xa?),常攜帶乙個位元組的資料,故nn為1,常見取值:0xa1

end collection:1100 00 nn :不攜帶資料,故nn為0,取值:0xc0

2.3 global items
global items實現對資料的描述,用來識別報表並且描述報表內的資料,包括資料的功能、最大與最小允許值以及資料項的大小與數目等。

2.3.1 global items tag值說明:
usage page 0000 01 nn(0x04+?) 指定裝置的功能;常見取值:0x05

report id 1000 01 nn(0x84+?) 報表 id;不設定時,預設為0;常見取值:0x85

report size 0111 01 nn(0x74+?) 指定報表資料區域所包含的位數;常見取值:0x0x75

report count 1001 01 nn(0x94+?) 報表中資料域的數目;常見取值:0x0x95

logical minimum 0001 01 nn(0x14+?) 定義變數或陣列專案的邏輯最小值;常見取值:0x15

logical maximum 0010 01 nn(0x24+?) 定義變數或陣列專案的邏輯最大值;常見取值:0x25

2.4 local items

local items定義控制的特徵,這一類專案的作用域不超過下乙個 main items,所以在每一 main items之前可能有多個 local 專案。local items用於描述後面的 input、output 和feature 專案。

2.4.1 local items tag值說明:

usage (0x08+?) 表示對專案或集合建議的用法;常見取值:0x09

usage minimum 0001 10 nn(0x18+?) 定義陣列或位圖中控制操作的第乙個用法;常見取值:0x19

usage maximum 0010 10 nn(0x28+?) 定義陣列或位圖中控制操作的最後乙個用法 ;常見取值:0x29

相同HID裝置的控制代碼獲取

思路其實很簡單 通常我們使用pid和vid來獲得不同裝置的控制代碼,相同pid和vid的裝置,就需要其他的特徵來獲取控制代碼。相同hid的裝置,裝置路徑是不同的,可以用裝置路徑作為區分,來獲得控制代碼即可。else if devdetail null free devdetail if hidhan...

python基礎概念 python基礎概念

當你輸入name input 並按下回車後,python互動式命令列就在等待你的輸入了。這時,你可以輸入任意字元,然後按回車後完成輸入。要列印出name變數的內容,除了直接寫name然後按回車外,還可以用print 函式 以 開頭的語句是注釋,注釋是給人看的,可以是任意內容 整數python可以處理...

arm的基礎概念

1 什麼是arm arm advanced risc machines 是微處理器行業的一家知名企業,設計了大量高效能 廉價 耗能低的risc處理器 相關技術及軟體。技術具有效能高 成本低和能耗省的特點。適用於多種領域,比如嵌入控制 消費 教育類多 dsp和移動式應用等。arm將其技術授權給世界上許...