完整版USB HID協(xié)議中文版_第1頁
完整版USB HID協(xié)議中文版_第2頁
完整版USB HID協(xié)議中文版_第3頁
完整版USB HID協(xié)議中文版_第4頁
完整版USB HID協(xié)議中文版_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第 8章 USB 接口 HID 設(shè)備HID ( Human Interface Device ,人機接口設(shè)備)是 USB 設(shè)備中常用的設(shè)備類型,是 直接與人交互的 USB 設(shè)備,例如鍵盤、鼠標(biāo)與游戲桿等。在 USB 設(shè)備中, HID 設(shè)備的成 本較低。另外, HID 設(shè)備并不一定要有人機交互功能,只要符合 HID 類別規(guī)范的設(shè)備都是 HID 設(shè)備。Wndows 操作系統(tǒng)最先支持的 HID 設(shè)備。在 windows 98 以及后來的版本中內(nèi)置有 HID 設(shè)備的驅(qū)動程序,應(yīng)用程序可以直接使用這些驅(qū)動程序來與設(shè)備通信。在設(shè)計一個 USB 接口的計算機外部設(shè)備時,如果 HID 類型的設(shè)備可以滿足需要,

2、可以 將其設(shè)計為 HID 類型設(shè)備,這樣可以省去比較復(fù)雜的 USB 驅(qū)動程序的編寫,直接利用 Windows 操作系統(tǒng)對標(biāo)準(zhǔn)的 HID 類型 USB 設(shè)備的支持。8.1 HID 設(shè)備簡介8.1.1 HID 設(shè)備的特點HlD 報表的 報表的格交換的數(shù)據(jù)儲存在稱為報表 ( Report )的結(jié)構(gòu)內(nèi), 設(shè)備的固件必須支持 格式。 主機通過控制和中斷傳輸中的傳送和請求報表來傳送和接收數(shù)據(jù)。 式非常靈活。8B ,全速設(shè)每一筆事務(wù)可以攜帶小量或中量的數(shù)據(jù)。低速設(shè)備每一筆事務(wù)最大是 備每一筆事務(wù)最大是 64B ,高速設(shè)備每一筆事務(wù)最大是 1024B 。一個報表可以使用 多筆事務(wù)。設(shè)備可以在未預(yù)期的時間傳送信

3、息給主機, 例如鍵盤的按鍵或是鼠標(biāo)的移動。 所以 主機會定時輪詢設(shè)備,以取得最新的數(shù)據(jù)。HID 設(shè)備的最大傳輸速度有限制。主機可以保證低速的中斷端點每 10ms 內(nèi)最多 1 筆事務(wù),每一秒最多是 800B 。保證全速端點每 lms 一筆事務(wù),每一秒最多是 64000B 。保證高速端點每 125 us 三筆事務(wù),每一秒最多是 24.576MB 。HID 設(shè)備沒有保證的傳輸速率。如果設(shè)備是設(shè)置在 10ms 的時距,事務(wù)之間的時間 可能等于或小于 10ms 。除非設(shè)備是設(shè)置在全速時在每個幀傳輸數(shù)據(jù),或是在高速 時在每個微幀傳輸數(shù)據(jù)。 這是最快的輪詢速率, 所以端點可以保證有正確的帶寬可 供使用。Hl

4、D 類別規(guī)HID 設(shè)備除了傳送數(shù)據(jù)給主機外,它也會從主機接收數(shù)據(jù)。只要能夠符合 范的設(shè)備都可以是 HID 設(shè)備。設(shè)備除了 HlD 接口之外,它可能同時還包含有其他的 USB 接口。例如影像顯示設(shè)備 可能使用 HID 接口來做亮度、對比度的軟件控制,而使用傳統(tǒng)的影像接口來傳送要顯示的 數(shù)據(jù)。 USB 擴音器可以使用實時傳輸來播放語音, 同時使用 HID 接口來控制音量、 低音等。 HID 類別設(shè)備的規(guī)范文件主要是以下兩份:Device Class Definition for Human interface Devices HID Usage Tables下載。其中前者是 HID 的基本規(guī)范文件

5、,后者可以是前者的附件,為開發(fā)人員提供實際的控 制類型的描述。文件是用來定義讓主機了解以及使用 HID 數(shù)據(jù)的數(shù)值。這兩份文件是由 USB Device Working Group 制定的,可以在網(wǎng)址 /developers/hidpage/ #Class _Definition第8章USB接口 HID設(shè)備2038.1.2HID設(shè)備的硬件要求HID 接口必須符合 Device Class Defi nition for Human in terface Devices規(guī)范內(nèi)所定義的HID類別的需求。在此文件內(nèi)描述了所需的描述符、傳輸?shù)念l率以及傳輸?shù)念愋偷取?為

6、了符合規(guī)范,HID接口的端點與描述符都必須符合數(shù)個要求。HID設(shè)備必須有一個中斷所有的HID傳輸都是使用默認(rèn)控制管道或是一個中斷管道, 輸入端點來傳送數(shù)據(jù)到主機,中斷輸出端點則不是必需的。HID傳輸?shù)膫鬏旑愋蛨D8-1傳輸 類型數(shù)據(jù)來源數(shù)據(jù)類型是否需 要管道控制設(shè)備(輸入)沒有嚴(yán)格時間限制的數(shù)據(jù)是主機(輸出)沒有嚴(yán)格時間限制的數(shù)據(jù) 或是沒有中斷輸出管道時的任何數(shù)據(jù)中斷設(shè)備(輸入)定時或低延遲的數(shù)據(jù)是主機(輸出)定時或低延遲的數(shù)據(jù)是HID設(shè)備的傳輸類型表8-1主機與設(shè)備之間所交換的數(shù)據(jù),可以分成兩種類型:低延遲的數(shù)據(jù),必須盡快地到達目的; 配置或其他的數(shù)據(jù),沒有嚴(yán)格時間限制的需求。中斷管道是控制管

7、道之外的另一種數(shù)據(jù)交換的方式,特別適合使用在接收端需要定時 或是盡可能及時收到數(shù)據(jù)的時候。中斷輸入管道攜帶數(shù)據(jù)到主機,中斷輸出管道則是攜帶 數(shù)據(jù)到設(shè)備。在總線忙的時候,控制管道可能會被延遲,而中斷管道保證會有可得到的帶 寬。HID不需要一定有中斷輸出管道。如果沒有中斷輸出管道,主機會在控制管道上使用 HID設(shè)備特有的Set_Report請求來傳送所有的報表。8.1.3 HID固件的要求主機的驅(qū)動程序要與 HID設(shè)備通信,設(shè)備的固件必須符合下列需求:HID 接口。設(shè)備的描述符必須識別該設(shè)備包含有除了默認(rèn)控制管道外,固件必須另外支持一個中斷輸入管道。固件必須包含一個報表描述符來定義要傳送與接收的設(shè)

8、備數(shù)據(jù)。如果要傳送數(shù)據(jù),固件必須支持Get_Re port控制傳輸與中斷輸入傳輸。如果要接收數(shù)據(jù),固件必須支持 Set_Report控制傳輸與選擇性的中斷輸出傳輸。所有的HID數(shù)據(jù)都必須使用定義過的報表格式來定義報表中數(shù)據(jù)的大小與內(nèi)容。設(shè)備可以支持一個或多個報表。在固件中的一個報表描述符用來描述此報表,以及如何使用報 表數(shù)據(jù)的信息。在每一個報表中的一個數(shù)值,定義此報表是一個輸入( Input )、輸出(Out put)或是 特征(Feature )報表。主機在輸入報表中接收數(shù)據(jù),在輸出報表中傳送數(shù)據(jù),特征報表可 以在任何方向傳遞。Windows 98以及后來版本的 HID驅(qū)動程序使用中斷傳輸來

9、傳遞輸入報表。輸出報表 的傳輸類型要根據(jù)設(shè)備支持的端點與Windows的版本而定。Windows 98 Gold 只符合HID1.0規(guī)范,它的HID驅(qū)動程序使用控制傳輸來傳遞輸出報表。Windows 98 SE 、Wndows2000符合HID 1.1規(guī)范,HID驅(qū)動程序在有中斷輸出端點時使用中斷傳輸,否則使用控制傳輸來傳遞輸出報表。特征報表都是使用控制傳輸。8.2 HID設(shè)備描述符HID設(shè)備連接到 USB主機后,主機通過發(fā)送 Get_Descriptor請求讀取HID設(shè)備的描 述符,了解描述符對了解USB設(shè)備是至關(guān)重要的。8.2.1 HID設(shè)備的描述符HID設(shè)備除了支持USB設(shè)備的5種標(biāo)準(zhǔn)描

10、述符之外,還支持HID設(shè)備特有的3種描述符。這些描述符是:USB標(biāo)準(zhǔn)描述符:設(shè)備、配置、接口、端點和字符串描述符。HID特有的描述符:HID、報表(Report )和實體(Physical )描述符。從描述符的關(guān)聯(lián)關(guān)系看,HID描述符是關(guān)聯(lián)于接口 。所以如果一個HID設(shè)備有2個端 點,設(shè)備不需要每個端點有一個HID描述符。接口描述符Interface11HID、報表和實體描報表描述符實體描述符述符是HID設(shè)備特ReportPhysical有的描述符圖8-2HID描述符的關(guān)聯(lián)關(guān)系端點描述符End po intHID描述符Hid從前面的USB描述符可以看出一個規(guī)律,描述符的第一、二字節(jié)分別是描述符

11、的長 度和類型,描述符的類型字段(bDescriptorType )表明描述符的種類,下表列出了不同描 述符的類型字段數(shù)值。表8-2 HID的描述符類型描述符應(yīng)用數(shù) 值設(shè)備Device所有設(shè)備必須有,只能一個01配置Configuration所有設(shè)備必須有,至少一個02字符串String可選擇03標(biāo)準(zhǔn)接口Interface每一個接口一個04端點End po int徐端點0之外的每個端點一個05設(shè)備限定Device Qualiffier同時支持全速與高速的設(shè)備必須有06Other S peed Configuration一個07Interface po wer08類別HIDHID設(shè)備必須有21H

12、ub29HID報表ReportHID設(shè)備必須有22特定實體Physical可選擇的23對于一個HID設(shè)備,設(shè)備描述符與配置描述符沒有HID特定的信息。其設(shè)備描述符的bDeviceClass 和 bDeviceSubClass 字段的值為 0,接口描述符的 blntefaceClass 字段值 為03,表示設(shè)備的該接口是HID類別。在接口描述符中其他包含HID特定信息的字段還有子類別碼(blntefaceSubClass )與協(xié)議碼(blntefaceProtocol 字段)。在接口描述符中子類別碼字段等于1表示此設(shè)備支持啟動接口( Boot In terface )。如果設(shè)備有啟動接口,即便主

13、機的HID沒有加載驅(qū)動程序,設(shè)備也可以使用。這種情形可能發(fā)生在計算機是由DOS直接啟動,在啟動時觀看系統(tǒng)設(shè)置畫面或使用Wndows的安全模式時。含有啟動接口的鍵盤或鼠標(biāo)可以使用BIOS或許多主機支持的默認(rèn)簡單協(xié)議。HID規(guī)范定義了鍵盤與鼠標(biāo)的啟動接口協(xié)議。如果設(shè)備沒有啟動接口, 并且接口描述符中協(xié)議碼字段是 1,表示設(shè)備支持鍵盤接口, 協(xié)議碼字段是2,表示支持鼠標(biāo)接口。接口描述符中協(xié)議碼字段是0,表示設(shè)備不支持啟動協(xié)議。在HID Usage Tables規(guī)范中定義了鍵盤與鼠標(biāo)的啟動描述符( Boot Descriptor )。 BIOS不需要從設(shè)備中讀取描述符,因為它知道啟動協(xié)議,并且假設(shè)設(shè)備

14、支持啟動協(xié)議。 所以要啟動的設(shè)備不需要在固件內(nèi)包含啟動接口描述符,它只要在主機尚未要求在報表描 述符中的定義協(xié)議時支持啟動協(xié)議即可。在操作系統(tǒng)加載HID驅(qū)動程序后會使用Set_Protocol請求,將設(shè)備由啟動協(xié)議轉(zhuǎn)換成報表協(xié)議。822 HID描述符HID描述符的主要作用是用來識別HID通信所使用的額外描述符。 下表是HID描述符結(jié)構(gòu)。偏移 量字段字節(jié)數(shù)數(shù)值 類型說明0bLength1Numeric描述符字節(jié)數(shù)1bDescri ptorT ype1Constant0x21 = HID描述符2bcdHID2NumericHID規(guī)范版本號(BCD)4bCountryCode1Numeric硬件設(shè)備

15、所在國家的國家代碼5bNumDescri ptors1Numeric類別描述符數(shù)目(至少有一個報表描述符)6bDescri ptorT ype1Constant類別描述符的類型7wDescri ptorLength2Numeric報表描述符的總長度表8-3HID描述符結(jié)構(gòu)9bDescri ptorT yp e.1Constant附加的描述符的類型,可選的10wDescri ptorLength.2Numeric附加的描述符的總長度,可選的4個16進制的bcdHID :設(shè)備與其描述符所遵循的HID規(guī)范的版本號碼,此數(shù)值是BCD格式字符。例如 版本1.1的bcdHID是0110h。( 2 byte

16、s) bCountryCode :硬件目的國家的識別碼。如果不說明,該字段為 bDescriptorType: HID描述符附屬的描述符的類型(報表或?qū)嶓w)0。每一個 HID都 必須至少支持一個報表描述符。一個接口可以支持多個報表描述符,以及一個或多個實體 描述符。HID描述符的偏移量為 9和10的bDescriptorType 和wDescriptorLength 可以重復(fù)存 在多個。1.報表描述符報表描述符定義了執(zhí)行設(shè)備功能的數(shù)據(jù)格式和使用方法。報表描述符和 USB的其他描述符是不一樣的,它不是一個簡單的表格,報表描述符是USB所有描述符中最復(fù)雜的。報表描述符非常復(fù)雜而有彈性,因為它需要處

17、理各種用 途的設(shè)備。報表的數(shù)據(jù)必須以簡潔的格式來儲存,這樣才不會浪費設(shè)備內(nèi)的儲存空間以及 數(shù)據(jù)傳輸時的總線時間。實際上可以這樣理解,報表內(nèi)容的簡潔,是通過報表描述符全面的、復(fù)雜的數(shù)據(jù)描述實現(xiàn)的。報表描述符必須先描述數(shù)據(jù)的大小與內(nèi)容。報表描述符的內(nèi)容與大小因設(shè)備的不同而 不同,在進行報表傳輸之前,主機必須先請求設(shè)備的報表描述符,只有得到了報表描述符 才可正確解析報表的數(shù)據(jù)。報表描述符是報表描述項目(Item )的集合,每一個描述項目都有相對統(tǒng)一的數(shù)據(jù)結(jié) 構(gòu),項目很多,通過編碼實現(xiàn)。(1 )項目報表描述符由描述 HID設(shè)備的數(shù)據(jù) 項目(Item)組成。項目的第一個字節(jié)(項目前綴)由三部分構(gòu)成:項目

18、標(biāo)志(item Tag):說明項目的功能, 項目類型(item Type):說明項目的數(shù)據(jù)類型, 項目長度(item Size):說明項目的數(shù)據(jù)部分的長度。位序字段Data (可以是0、1、2、4個字節(jié))bTag bType| bSizeHID的項目有短項目和長項目兩種,其中短項目的格式如下圖。圖8-3 HID 報表短項目格式短項目的數(shù)據(jù)字節(jié)數(shù)由bSize的值定義,bSize為0、1、2、3時Data部分的字節(jié)數(shù)分別為0、1、2、4個字節(jié)。(nn為數(shù)據(jù)長度)短項目的項目類型由 bType定義,bType為0、1、2時分別為 Main、Global和Local 類型。(見后面的表8-4 HID項

19、目列表)長項目可以攜帶較多的數(shù)據(jù),其格式如下圖。位序字段字節(jié)數(shù)Datai1255圖8-4bLon gItemTagbDataSizeHID 報表長項目格式特定值 時表明該項目是一個長項目。長項目中的bLongItemT ag在HID規(guī)范中沒有定義。項目中的第一個字節(jié)為上圖中的bDataSize說明Data部分的字節(jié)數(shù),下面是通過匯編實現(xiàn)的一個簡單的報表描述符,描述符的每一行是一個項目,該描述 符描述了一個從設(shè)備接收2個字節(jié)的輸入報表 和發(fā)送2個字節(jié)到設(shè)備的輸出報表。HID Re po rt desc table: db 06h, AOh, FFh db 09h, A5h db A1h, 01h

20、;Usage Page(Vendor defined);Usage(Vendor Defined);Collection(A pp lication)定義設(shè)備功能 定義用法 開一個集合db 09H, A6h;Usage(Vendor defined)定義用法db 09h, A7h db 15h, 80h;輸入報表;Usgae(Vendor defined);Logical Minimum定義用法定義輸入最小值=-128db 25h, 7Fh;Logical Maximum定義輸入最大值=+127db 75h, 08h;Report Size定義報表數(shù)據(jù)項大小=8db 95h, 02h;Repo

21、rt Count定義報表數(shù)據(jù)項個數(shù)=2db 81h, 02h;Inpu t(Data,Variable,Absolute)輸入項目db 09h, A9h db 15h, 80h db 25h, 7Fh db 75h, 08h db 95h, 02h db 91h, 02h;輸出報表;Usgae(Vendor defined);Logical Minimum;Logical Maximum;Report Size;Report Count;Out pu t(Data,Variable,Absolute)定義用法定義輸入最小值=-128 定義輸入最大值=+27 定義報表數(shù)據(jù)項大小=8 定義報表數(shù)據(jù)

22、向個數(shù)=2輸出項目db C0h;End Collection關(guān)閉集合(2)項目的分類報表的項目有 Main、Global和Local三大類,每一類都有多個不同的項目,實現(xiàn)不同的描述。Main類項目用于定義報表描述符中的數(shù)據(jù)項。也可以組合其中的若干數(shù)據(jù)項成為一個集合。Main項目可以分為帶數(shù)據(jù)的Main項目和不帶數(shù)據(jù)的 Main項目。帶數(shù)據(jù)項的 Main用于生成報表中的數(shù)據(jù)項,包括Input、Out put和Feature項目。不帶數(shù)據(jù)的 Main項目不生成報表中的數(shù)據(jù)項,包括Collection和End Collection 項目。Global類項目實現(xiàn)對數(shù)據(jù)的描述,用來識別報表并且描述報表內(nèi)

23、的數(shù)據(jù),包括數(shù)據(jù)的 功能、最大與最小允許值以及數(shù)據(jù)項的大小與數(shù)目等。改變由Main類項目生成的項目狀態(tài)表。Global類項目描述對后續(xù)的所有項目有效,除非遇到有新的Global類項目。Local類項目定義控制的特征, 這一類項目的作用域不超過下一個Main項目,所以在每一 Ma in項目之前可能有多個 Local項目。Local項目用于描述后面的 Inp ut、Out put和 Feature 項目。F表列出的是全部的項目的前綴字和簡要功能說明。表8-4 HID項目列表項目 類型項目標(biāo)志(Tag)項目前綴,nn 為數(shù)據(jù)長度功能說明Main類項目(00)Inp ut1000 00 nn定義輸入報

24、表,主機利用該信息解析設(shè)備提供的數(shù) 據(jù)。主機向控制端口發(fā)送 Get Re port實現(xiàn)輸入Out put1001 00 nn創(chuàng)建輸出報表,通過向設(shè)備發(fā)送 Set Report實現(xiàn)輸 出Feature1011 00 nn定義送往設(shè)備的設(shè)置信息Collection1010 00 nn定義2個以上數(shù)據(jù)(Input、Out put和Feature )的 關(guān)系為集合,Collection開始一個集合,之后的EndCollection結(jié)束集合。Collection項目的數(shù)據(jù)部分說 明Collection的類型End Collection1100 00 nnGlobal類項目(01)Usage Page00

25、00 01 nn指定設(shè)備的功能(06h,A0h,FFh)另外由于Usage項目有32位數(shù)據(jù)值,Usage Page 項目用于為Usage項目在報表描述符中占居存儲 空間。用于存放后續(xù)的Usage項目的高16位。Logical Minimum0001 01 nn定義變量或數(shù)組項目的邏輯最小值和最大值(-128,+127)(15h, 80h) (25h, 7Fh)Logical Maximum0010 01 nnPhysical Minimum0011 01 nn定義變量或數(shù)組項目的物理最小值和最大值,分別 和 Logical Minimum、Logical Maximum 對應(yīng)Physical

26、Maximum0100 01 nnUnit Expo nent0101 01 nn定義數(shù)值是基于10的指數(shù)Unit0110 01 nn單位Report Size0111 01 nn指定報表數(shù)據(jù)區(qū)域所包含的位數(shù)(=8)Re port ID1000 01 nn報表ID,該項目在報表中插入一個字節(jié)的報表IDReport Count1001 01 nn報表中數(shù)據(jù)域的數(shù)目(=2)P ush1010 01 nn將Global項目狀態(tài)表送入堆棧Pop1011 01 nn從堆?;謴?fù)Global項目狀態(tài)表1100 01 nn -1111 01 nn保留Local類項目(10)Usage0000 10 nn用法索

27、引值,表示對項目或集合建議的用法,用于 當(dāng)一個項目描述多個控制,對每一個變量和數(shù)組元 素都有建議的用法(09h,A7h )Usage Minimum0001 10 nn定義陣列或位圖中控制操作的第一個和最后一個用 法Usage Maximum0010 10 nnDesignator Index0011 10 nn確定用于控制的實體,指向物理描述符中的目標(biāo)Designator Minimum0100 10 nn定義陣列或位圖目標(biāo)的起始和終止索引值Desig nator Maximum0101 10 nnString Index0111 10nn確定字符串描述符中的索引值String Minimu

28、m1000 10 nn定義用于陣列或位圖控制中字符串序列索引值的最 小值和最大值String Maximum1001 10 nnDelimiter1010 10 nn定義一組Local項目的開始和結(jié)束, 仁開始,0=結(jié) 束1010 10 nn -1111 10 nn保留在這些項目中,Usage Page用來指定設(shè)備的功能,而Usage項目用來指定個別報表的功能。Usage Page項目相當(dāng)于是 HID的子集合,Usage相當(dāng)于是Usage Page的子集 合。2.報表描述符的項目(1)Input、Out pot 和 Feature 項目這3個項目用來定義報表中的數(shù)據(jù)字段。一個輸入報Input項

29、目可以應(yīng)用到任何控制、計數(shù)器讀數(shù)或其他設(shè)備傳給主機的信息。 表包含一個或多個Input項目,主機使用中斷輸入傳輸來請求輸入報表。Out potHID1.1兼容主機使用中斷輸Ouput項目用來定義主機傳送給設(shè)備的信息。一個輸出報表包含一個或多個 項目。輸出報表包含控制狀態(tài)的數(shù)據(jù)。如果有中斷輸出管道,出傳輸來傳送輸出報表,否則使用Set_Report控制請求。Feature項目應(yīng)用到主機傳送給設(shè)備的信息,或是主機從設(shè)備讀取Feature項目。個特征報表包含一個或多個Feature項目,F(xiàn)eature項目通常是包合影響設(shè)備與其組件整主機使用 Set_Report與Get_Report請求來傳體行為的

30、配置。特征報表通常是控制可以使用實際的控制面板調(diào)整的設(shè)置,例如主機可以 使用虛擬控制面板來讓用戶選擇控制特征。 送與接收特征報表。項目的前綴字之后是 32位描述數(shù)據(jù),目前最多定的定義中只有位7不能應(yīng)用于Input項目,除此之在每一個 Input、Out put 和 Feature 義了 9個位,余的位則是保留。位08外其他的位定義都適應(yīng)于Input、Out put和Feature項目。表8-5 Input、Out put和Feature 項目的數(shù)據(jù)項說明數(shù)據(jù)字段含義說明位值名稱00Data數(shù)據(jù):表示項目的內(nèi)容是可更改的(讀 /寫)。1Constant常數(shù):表示項目的內(nèi)容是不可更改的(只讀)。1

31、0Array數(shù)組:報告全部控制的狀態(tài)。如在鍵盤報表中每一個鍵在報表中 占一位,報表傳輸全部鍵的狀態(tài),可以同時按下任意多個鍵。1Variable變量:報告作用中的控制。如在鍵盤報表中只報告按下的鍵的編 號,可以同時按下的鍵的數(shù)目等于報表的計數(shù)(Global類項目Report Count )20Absolute絕對:表示數(shù)值以一個固定值為基準(zhǔn)。游戲桿通常是報告絕對數(shù) 據(jù)(游戲桿目前的位置)。1Relative相對:表示數(shù)據(jù)的改變以上一個讀數(shù)為基準(zhǔn)。鼠標(biāo)通常是報告相對數(shù)據(jù)(鼠標(biāo)的移動位置)。30No Wrap如果設(shè)置為1表示回轉(zhuǎn),當(dāng)數(shù)值超過最小值到最大值的范圍時將 回轉(zhuǎn),如果最小值是 0而最大值是1

32、0,超過最大值的下一個數(shù) 值是0。1Wrap40Linear線形:表示測量的數(shù)據(jù)與報表的數(shù)據(jù)有線性的關(guān)系。1Non-Linear非線性:表示測量的數(shù)據(jù)與報表的數(shù)據(jù)沒有線性的關(guān)系。50P referred優(yōu)選狀態(tài):表示控制在沒有用戶交互時會回到一個特定的狀態(tài)。 如按鈕就有優(yōu)選狀態(tài),在無操作時保持未按下的狀態(tài)。1Non-Preferred非優(yōu)選狀態(tài):它維持在上一個用戶選擇的狀態(tài)。如交替的開關(guān)就 沒有優(yōu)選狀態(tài)。60No Null Position無空狀態(tài)位置:表示控制永遠在傳送有效的數(shù)據(jù)。1Null State空狀態(tài):表示控制支持一個沒有傳送有效數(shù)據(jù)的狀態(tài)。如操縱桿可能具有一個多方向的按鈕開關(guān), 在

33、沒有按下時在空狀態(tài), 這時 控制將傳送一個在 Logical Minimum 與Logical Maximum 范圍 之外的數(shù)值來表示它在空狀態(tài)。70Non-Volatile不可變的:表示設(shè)備只有在主機請求時才改變數(shù)值。當(dāng)主機傳送一個報表并且不要改變不可變項目時,如果該項目是定義成相對(Relative )的,數(shù)值0表示不改變數(shù)據(jù),如果不可變項目是定 義成絕對(Absolute)的,超出范圍外的數(shù)值則表示不改變數(shù)據(jù)。1Volatile可變的:表示設(shè)備可以自己改變數(shù)值,并不是必須主機傳送報表要求給設(shè)備來改變數(shù)值。例如設(shè)備控制面板可以由主機軟件傳送 一個報表給設(shè)備,也可以由用戶自己按設(shè)備上的實際按

34、鈕。80Bit Field位字段:表示每一個位或是一個字節(jié)內(nèi)的一組位可以代表一份數(shù) 據(jù)。1Buffered Bytes緩沖字節(jié):表示信息包含一個或多個字節(jié),緩沖字節(jié)的報表大小必須是8。931位保留注:該位不能應(yīng)用到數(shù)組。:只應(yīng)用于 Out put和Feature項目,對于Input項目該位保留。(2)Collection 和 End Collection 項目所有的報表類型都可以使用Collectio n與End Collectio n項目來將相關(guān)的 Ma in類型項目組成群組。這兩個項目分別用于打開和關(guān)閉集合。所有在Collection與End Collection項目之間的Main類型項目

35、都是 Collection的一部分。Collection 有3種類型:AppIication、Physical與Logical,其項目的數(shù)據(jù)項的值分別 為1、0和2。廠商也可以自己定義Collection類型,數(shù)據(jù)項的值為80hFFh保留給廠商定義。End Collection 項目無數(shù)據(jù)項。Application Collection包含有共同用途的項目或執(zhí)行單一功能的項目。例如鍵盤的開 機描述符將鍵盤的按鍵與LED指示燈數(shù)據(jù)集合成一個Application Collection 。所有的報表必須在一個 AppIication Collection內(nèi)。P hysical Collecti o

36、n包含在一個單一幾何點上的數(shù)據(jù)項目,可以將每個位置的數(shù)據(jù)集合成一個Physical Collection。在設(shè)備報告多個傳感器的位置的時候,使用PhysicalCollection指明不同的數(shù)據(jù)來自不同的傳感器。Logical Collection 形成一個數(shù)據(jù)結(jié)構(gòu),包含由 Collection所連結(jié)的不同類型的項目。 例如數(shù)據(jù)緩沖區(qū)的內(nèi)容以及緩沖區(qū)內(nèi)字節(jié)數(shù)目的計數(shù)。(3)Usage Page 和 Usage 項目Usage page項目的數(shù)據(jù)部分為12個字節(jié),目前的定義全部都是一個字節(jié)。UsagePage定義了常用的設(shè)備功能,關(guān)于Usage Page (以及其他項目)的具體定義內(nèi)容,可),以

37、查閱 HID Usage tables ( /developers/hidpage/#Class_Definition 下表是來自 HID Usage tables 的Usage Page 定義。表 8-6 Usage Page定義Page IDP age Name00Undefined01Generic Deskt op Controls02Simulation Controls03VR Controls04Sport Controls05Game Controls06Generic Device Controls07Keyboard/Ke ypad08LE

38、Ds09Button0AOrdinal0BTelephony0CConsumer0DDigitizer0EReserved0FPID Page10Unicode11-131 Reserved14Alp hanumeric Display15-3fReserved40Medical Instruments41-7FReserved80-83Monitor p ages84-87Po wer p ages88-8BReserved8CBar Code Scanner p age8DScale p age8EMagnetic Stri pe Reading (MSR) Devices8FReserv

39、ed Po int of Sale p ages901 Camera Control P age91Arcade P age92-FEFFReservedFF00-FFFFVendor-definedUsage Page,關(guān)于該類設(shè)備的具體功能可HID Usage Tables 中對 Generic關(guān)于Usage Page的每一個有效定義項,都有一個相應(yīng)的下一級定義,如 的數(shù)據(jù)項數(shù)值為1,則設(shè)備定義為 Generic Desktop Controls 以在HID Usage Tables中查到具體的定義。下表是 Desktop Controls設(shè)備的功能定義。Usage IDUsage Nam

40、eUsage Type參閱HID Usage Tables 中的相關(guān)章節(jié)00Undefined01Po interCP4.102MouseCA03Reserved04JoystickCA4.105Game PadCA06KeyboardCA07KeypadCA08Multi-axis ControllerCA09Tablet PC System ControlsCA0A-2FReserved30XDV4.231YDV32ZDV33RxDV34RyDV35RzDV36SliderDV4.337DialDV38WheelDV39Hat switchDV3ACounted BufferCL4.63B

41、Byte CountDV3CMotion WakeupOSC4.3表 8-7 Generic Deskt op Controls用法定義3DStartOOC3ESelectOOC3FReserved40VxDV4.3.141VyDV42VzDV43VbrxDV44VbryDV45VbrzDV46VnoDV47Feature NotificationDV,DF4.848Resolution Multi plierDV49-7FReserved80System ControlCA4.581System Po wer DownOSC82System Slee pOSC4.5.183System Wa

42、ke UpOSC84System Context MenuOSC4.585System Main MenuOSC86System App MenuOSC87System Menu HelpOSC88System Menu ExitOSC89System Menu SelectOSC8ASystem Menu RightRTC8BSystem Menu LeftRTC8CSystem Menu UpRTC8DSystem Menu DownRTC8ESystem Cold RestartOSC4.5.18FSystem Warm Restart OSC90D-pad UpOOC4.791D-pa

43、d DownOOC92D-pad RightOOC93D-pad LeftOOC94-9FReservedA0System DockOSC4.5.1A1System UndockOSCA2System Set upOSCA3System BreakOSC4.9A4System Debugger BreakOSCA5App lication BreakOSCA6App lication Debugger BreakOSCA7System Sp eaker MuteOSC4.5.1A8System HibernateOSCA9-AFReservedB0System Dis play InvertO

44、SC4.10B1System Display InternalOSCB2System Dis play ExternalOSCB3System Dis play BothOSCB4System Display DualOSCB5System Display Toggle Int/ExtOSCB6System Dis play Swa p P rimary/SecondaryOSCB7System Display LCD AutoscaleOSCB8-FFFFReserved用法(Usage )定義了各種各樣設(shè)備特性,對于Usage Page的每一項都定義了常用的各種用法。on/off、用法說明

45、了 3種信息,即控制、集合和數(shù)據(jù)??刂普f明設(shè)備的狀態(tài),女0En able/Disable等。集合說明控制和數(shù)據(jù)的組合關(guān)系。上表中的用法類型(Usage Type )描述了應(yīng)用程序如何處理由Main類型項目生成的HID Usage Tables。數(shù)據(jù),具體的定義和詳細說明請參閱(4) Report ID 項目Report ID放在信息包中報表數(shù)據(jù)之前,設(shè)備可以支持多個相同類型的報表,每一個 報表包含不同的數(shù)據(jù)與其特有的ID。在報表描述符中,Re port ID項目作用于其后續(xù)所有的項目,直到遇到下一個 Re port ID為止。如果報表描述符中沒有Rep ort ID項目,默認(rèn)的ID值是0 ,描

46、述符不能定義一個為0的Report ID,輸入報表、輸出報表與特征報表可以分享同一個Report ID。在Set_Report和Get_Report請求傳輸中,主機在設(shè)置事務(wù)的 wValue字段的低字節(jié) 中指定一個 Re port ID。在中斷傳輸中如果接口支持一個以上的Re port ID , Re port ID 必須是傳送報表中的第一個字節(jié)。如果接口只支持?jǐn)?shù)值為0的默認(rèn)Report ID,此Report ID不應(yīng)該在中斷傳輸中隨著報表一起傳送。(5) Logical Minimum 和 Logical Maximum 項目Logical Minimum 與 Logical Maximum

47、 項目定義報表的變量 (Variable )或陣列(Array ) 數(shù)據(jù)的限制范圍,此限制范圍以邏輯單位來表示。例如設(shè)備報表的一個電流值讀數(shù)是500mA,而一個單位是 2mA,貝U Logical Maximum 值等于 250。負(fù)數(shù)值以2的補碼來表示。 如果Logical Minimum 與Logical Maximum 都是正數(shù),就 不需要有正負(fù)號位。不管Logical Minimum與Logical Maximum是以有正負(fù)號或是無正負(fù)號的數(shù)值來表示,設(shè)備都可以正確地傳輸數(shù)據(jù)。數(shù)據(jù)的接收者必須知道數(shù)據(jù)是否可以是 負(fù)值。(5) Physical Minimum 和 Physical Max

48、imum 項目Physical Minimum 和Physical Maximum 項目定義數(shù)值的限制范圍,該限制范圍使用Un it項目定義的單位來表示。上例中設(shè)備報表的一個電流值讀數(shù)是500mA ,單位是2mA ,Logical Maximum 值等于 250,而 Physical Maximum 值是 500。Logical Minimum與Logical Maximum 值說明了設(shè)備返回數(shù)值的邊界,可以根據(jù) Physical Minimum 和Physical Maximum 值對數(shù)據(jù)進行偏移和比例變換。(6) Unit Exponent 項目Unit Exponent項目定義了在使用邏

49、輯范圍和實際范圍將設(shè)備的返回數(shù)值轉(zhuǎn)換成實際 數(shù)值時,使用10的多少次方對數(shù)值進行定標(biāo)。Unit Exponent的值的編碼為4位補碼,代表10的指數(shù)范圍是-8+7。表 8-8 Unit Exp onent 數(shù)值表代碼00h01h02h03h04h05h06h07h08h09h0Ah0Bh0Ch0Dh0Eh0FH數(shù)值01234567-8-7-6-5-4-3-2-1根據(jù)以上5個項目的值可以換算出報表傳送數(shù)據(jù)(邏輯數(shù)據(jù))與物理數(shù)據(jù)的轉(zhuǎn)換關(guān)系。物理數(shù)據(jù)值=邏輯數(shù)據(jù)值十分辨率)十)X 10 UnitExponent )分辨率 =(LogicalMaximum - Logical Minimum(Phys

50、icalMaximum - PhysicalMinimum(7) Unit 項目Unit項目指定報表數(shù)據(jù)在使用 位,以及單位的幕指數(shù)值。 分為8個半字節(jié)段, 應(yīng)不同的基本單位, 之間。從半字節(jié)06Physical與Unit Exponent項目轉(zhuǎn)換后使用什么度量單Unit的數(shù)值部分可以長達 4字節(jié),按照4位為一段分段,可以由高到低分別為半字節(jié)7、半字節(jié)6、半字節(jié)0。每一個半字節(jié)對其數(shù)值表示單位的指數(shù)值,采用4位2的補碼表示,取值范圍是-8+7例如在半字節(jié)0數(shù)值為1 (表示采用線性公制測量系統(tǒng)) 位為厘米),如果其數(shù)值為1表示厘米,數(shù)值為 2表示(厘米) 3表示時間(單位為秒),如果其數(shù)值為-2

51、,表示(秒)-2。由下表給出了具體的定義,其中半字節(jié)0表示測量系統(tǒng),半字節(jié)7保留。 的條件下,半字節(jié)1表示長度(單 2,成為面積單位。半字節(jié)表8-9 Unit單位的定義半字節(jié)序號測量 項目數(shù)值含義012340測量系統(tǒng)線性、公制角度、公制線性、英制角度、英制1長度厘米半徑英寸度2質(zhì)量克石拉(slug )3時間無秒4溫度開式度(Kelvin )|華式度5電流安培6亮度燭光7保留雖然表中只是定義了有限的基本單位,但可以通過這些基本單位的組合派生出大多數(shù) 其它的常用單位。例如報表使用一個字節(jié)傳送一個從-20到110華氏度溫度值,可以定義以下報表描述項目:Logical Minimum = -128Lo

52、gical Maximum = 127P hysical Mi nimum = -20P hysical Maximum = 110Unit Exponent = 0Unit = 30003hUnit的半字節(jié)0=3選擇英制線性測量系統(tǒng),半字節(jié) 4=3選擇華氏溫度單位。130 (110+20 )華氏度的數(shù)值范圍線性分布到了256和有效數(shù)值區(qū)域,每一位相當(dāng)于0.51華氏度,這樣就提高了分辨率。(8)Report Size 和 Report Count 項目Re port Size 項目指定Inp ut、Out put與Feature項目字段的大小,以位為單位。Report Cou nt項目指定Inp ut、Out put與Feature項目包含的字段數(shù)目。例如兩個8位的字段,Report Size等于8,而Report Count等于2。8個1位的字段, Report Size 等于 1,而 Re port Cou nt 等于 8。Input、Output與Feature項目報表可以有多個項目,每一個項目可以有自己的ReportSize 和 Re port Cou nt 項目。(9)Push 和 Pop 項目Push項目將一個 G

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論