影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

USBHID協(xié)議中文版[共48頁]

上傳人:gfy****yf 文檔編號(hào):57463214 上傳時(shí)間:2022-02-24 格式:DOC 頁數(shù):49 大?。?.49MB
收藏 版權(quán)申訴 舉報(bào) 下載
USBHID協(xié)議中文版[共48頁]_第1頁
第1頁 / 共49頁
USBHID協(xié)議中文版[共48頁]_第2頁
第2頁 / 共49頁
USBHID協(xié)議中文版[共48頁]_第3頁
第3頁 / 共49頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《USBHID協(xié)議中文版[共48頁]》由會(huì)員分享,可在線閱讀,更多相關(guān)《USBHID協(xié)議中文版[共48頁](49頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

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

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

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

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

5、發(fā)人員提供實(shí)際的控制類型的描述。文件是用來定義讓主機(jī)了解以及使用HID數(shù)據(jù)的數(shù)值。這兩份文件是由 USB Device Working Group制定的,可以在網(wǎng)址http://www.usb.org/developers/hidpage/ #Class _Definition下載。 8.1.2 HID設(shè)備的硬件要求 HID接口必須符合Device Class Definition for Human interface Devices規(guī)范內(nèi)所定義的HID類別的需求。在此文件內(nèi)描述了所需的描述符、傳輸?shù)念l率以及傳輸?shù)念愋偷取榱朔弦?guī)范,HID接口的端點(diǎn)與描述符都必須符合數(shù)個(gè)要求。

6、所有的HID傳輸都是使用默認(rèn)控制管道或是一個(gè)中斷管道,HID設(shè)備必須有一個(gè)中斷輸入端點(diǎn)來傳送數(shù)據(jù)到主機(jī),中斷輸出端點(diǎn)則不是必需的。 HID類別 驅(qū)動(dòng)程序 HID類別 設(shè)備 主機(jī) 外設(shè) 默認(rèn)控制管道 中斷管道 圖8-1 HID傳輸?shù)膫鬏旑愋? 表8-1 HID設(shè)備的傳輸類型 傳輸 類型 數(shù)據(jù)來源 數(shù)據(jù)類型 是否需 要管道 控制 設(shè)備(輸入) 沒有嚴(yán)格時(shí)間限制的數(shù)據(jù) 是 主機(jī)(輸出) 沒有嚴(yán)格時(shí)間限制的數(shù)據(jù) 或是沒有中斷輸出管道時(shí)的任何數(shù)據(jù) 中斷 設(shè)備(輸入) 定時(shí)或低延遲的數(shù)據(jù) 是 主機(jī)(輸出) 定時(shí)或低延遲的數(shù)據(jù) 是

7、 主機(jī)與設(shè)備之間所交換的數(shù)據(jù),可以分成兩種類型: ? 低延遲的數(shù)據(jù),必須盡快地到達(dá)目的; ? 配置或其他的數(shù)據(jù),沒有嚴(yán)格時(shí)間限制的需求。 中斷管道是控制管道之外的另一種數(shù)據(jù)交換的方式,特別適合使用在接收端需要定時(shí)或是盡可能及時(shí)收到數(shù)據(jù)的時(shí)候。中斷輸入管道攜帶數(shù)據(jù)到主機(jī),中斷輸出管道則是攜帶數(shù)據(jù)到設(shè)備。在總線忙的時(shí)候,控制管道可能會(huì)被延遲,而中斷管道保證會(huì)有可得到的帶寬。HID不需要一定有中斷輸出管道。如果沒有中斷輸出管道,主機(jī)會(huì)在控制管道上使用HID設(shè)備特有的Set_Report請(qǐng)求來傳送所有的報(bào)表。 8.1.3 HID固件的要求 主機(jī)的驅(qū)動(dòng)程序要與HID設(shè)備通信,設(shè)備的固件必

8、須符合下列需求: ? 設(shè)備的描述符必須識(shí)別該設(shè)備包含有HID接口。 ? 除了默認(rèn)控制管道外,固件必須另外支持一個(gè)中斷輸入管道。 ? 固件必須包含一個(gè)報(bào)表描述符來定義要傳送與接收的設(shè)備數(shù)據(jù)。 如果要傳送數(shù)據(jù),固件必須支持Get_Report控制傳輸與中斷輸入傳輸。如果要接收數(shù)據(jù),固件必須支持Set_Report控制傳輸與選擇性的中斷輸出傳輸。 所有的HID數(shù)據(jù)都必須使用定義過的報(bào)表格式來定義報(bào)表中數(shù)據(jù)的大小與內(nèi)容。設(shè)備可以支持一個(gè)或多個(gè)報(bào)表。在固件中的一個(gè)報(bào)表描述符用來描述此報(bào)表,以及如何使用報(bào)表數(shù)據(jù)的信息。 在每一個(gè)報(bào)表中的一個(gè)數(shù)值,定義此報(bào)表是一個(gè)輸入(Input)、輸出(Out

9、put)或是特征(Feature)報(bào)表。主機(jī)在輸入報(bào)表中接收數(shù)據(jù),在輸出報(bào)表中傳送數(shù)據(jù),特征報(bào)表可以在任何方向傳遞。 Windows 98以及后來版本的HID驅(qū)動(dòng)程序使用中斷傳輸來傳遞輸入報(bào)表。輸出報(bào)表的傳輸類型要根據(jù)設(shè)備支持的端點(diǎn)與Windows的版本而定。Windows 98 Gold只符合HID 1.0規(guī)范,它的HID驅(qū)動(dòng)程序使用控制傳輸來傳遞輸出報(bào)表。Windows 98 SE、Wndows 2000符合HID 1.1規(guī)范,HID驅(qū)動(dòng)程序在有中斷輸出端點(diǎn)時(shí)使用中斷傳輸,否則使用控制傳輸來傳遞輸出報(bào)表。特征報(bào)表都是使用控制傳輸。 8.2 HID設(shè)備描述符 HID設(shè)備連接到U

10、SB主機(jī)后,主機(jī)通過發(fā)送Get_Descriptor請(qǐng)求 讀取HID設(shè)備的描述符,了解描述符對(duì)了解USB設(shè)備是至關(guān)重要的。 8.2.1 HID設(shè)備的描述符 HID設(shè)備除了支持USB設(shè)備的5種標(biāo)準(zhǔn)描述符之外,還支持HID設(shè)備特有的3種描述符。這些描述符是: ? USB標(biāo)準(zhǔn)描述符:設(shè)備、配置、接口、端點(diǎn)和字符串描述符。 ? HID特有的描述符:HID、報(bào)表(Report)和實(shí)體(Physical)描述符。 從描述符的關(guān)聯(lián)關(guān)系看,HID描述符是關(guān)聯(lián)于接口。所以如果一個(gè)HID設(shè)備有2個(gè)端點(diǎn),設(shè)備不需要每個(gè)端點(diǎn)有一個(gè)HID描述符。 圖8-2 HID描述符的關(guān)聯(lián)關(guān)系 接口描述符Int

11、erface 端點(diǎn)描述符 Endpoint HID描述符 Hid 報(bào)表描述符 Report 實(shí)體描述符 Physical HID、報(bào)表和實(shí)體描述符是HID設(shè)備特有的描述符 從前面的USB描述符可以看出一個(gè)規(guī)律,描述符的第一、二字節(jié)分別是描述符的長(zhǎng)度和類型,描述符的類型字段(bDescriptorType)表明描述符的種類,下表列出了不同描述符的類型字段數(shù)值。 表8-2 HID的描述符 類型 描述符 應(yīng)用 數(shù)值 標(biāo)準(zhǔn) 設(shè)備 Device 所有設(shè)備必須有,只能一個(gè) 01 配置 Configuration 所有設(shè)備必須

12、有,至少一個(gè) 02 字符串 String 可選擇 03 接口 Interface 每一個(gè)接口一個(gè) 04 端點(diǎn) Endpoint 除端點(diǎn)0之外的每個(gè)端點(diǎn)一個(gè) 05 設(shè)備限定 Device_Qualiffier 同時(shí)支持全速與高速的設(shè)備必須有一個(gè) 06 Other_Speed_Configuration 07 Interface_power 08 類別 HID HID設(shè)備必須有 21 Hub 29 HID 特定 報(bào)表 Report HID設(shè)備必須有 22 實(shí)體 Physical 可選擇的 23 對(duì)于一個(gè)H

13、ID設(shè)備,設(shè)備描述符與配置描述符沒有HID特定的信息。其設(shè)備描述符的bDeviceClass和bDeviceSubClass字段的值為0,接口描述符的bInterfaceClass字段值為03,表示設(shè)備的該接口是HID類別。在接口描述符中其他包含HID特定信息的字段還有子類別碼(blnterfaceSubClass)與協(xié)議碼(blnterfaceProtocol字段)。 在接口描述符中子類別碼字段等于1表示此設(shè)備支持啟動(dòng)接口(Boot Interface)。如果設(shè)備有啟動(dòng)接口,即便主機(jī)的HID沒有加載驅(qū)動(dòng)程序,設(shè)備也可以使用。這種情形可能發(fā)生在計(jì)算機(jī)是由DOS直接啟動(dòng),在啟動(dòng)時(shí)觀看系統(tǒng)設(shè)置畫

14、面或使用Wndows的安全模式時(shí)。 含有啟動(dòng)接口的鍵盤或鼠標(biāo)可以使用BIOS或許多主機(jī)支持的默認(rèn)簡(jiǎn)單協(xié)議。HID規(guī)范定義了鍵盤與鼠標(biāo)的啟動(dòng)接口協(xié)議。 如果設(shè)備沒有啟動(dòng)接口,并且接口描述符中協(xié)議碼字段是1,表示設(shè)備支持鍵盤接口,協(xié)議碼字段是2,表示支持鼠標(biāo)接口。接口描述符中協(xié)議碼字段是0,表示設(shè)備不支持啟動(dòng)協(xié)議。 在 HID Usage Tables規(guī)范中定義了鍵盤與鼠標(biāo)的啟動(dòng)描述符(Boot Descriptor)。BIOS不需要從設(shè)備中讀取描述符,因?yàn)樗绬?dòng)協(xié)議,并且假設(shè)設(shè)備支持啟動(dòng)協(xié)議。所以要啟動(dòng)的設(shè)備不需要在固件內(nèi)包含啟動(dòng)接口描述符,它只要在主機(jī)尚未要求在報(bào)表描述符中的定義協(xié)議

15、時(shí)支持啟動(dòng)協(xié)議即可。在操作系統(tǒng)加載HlD驅(qū)動(dòng)程序后會(huì)使用Set_Protocol請(qǐng)求,將設(shè)備由啟動(dòng)協(xié)議轉(zhuǎn)換成報(bào)表協(xié)議。 8.2.2 HID描述符 HID描述符的主要作用是用來識(shí)別HID通信所使用的額外描述符。下表是HID描述符結(jié)構(gòu)。 表8-3 HID描述符結(jié)構(gòu) 偏移 量 字段 字節(jié) 數(shù) 數(shù)值 類型 說明 0 bLength 1 Numeric 描述符字節(jié)數(shù) 1 bDescriptorType 1 Constant 0x21 = HID描述符 2 bcdHID 2 Numeric HID規(guī)范版本號(hào)(BCD) 4 bCountryC

16、ode 1 Numeric 硬件設(shè)備所在國(guó)家的國(guó)家代碼 5 bNumDescriptors 1 Numeric 類別描述符數(shù)目(至少有一個(gè)報(bào)表描述符) 6 bDescriptorType 1 Constant 類別描述符的類型 7 wDescriptorLength 2 Numeric 報(bào)表描述符的總長(zhǎng)度 9 [bDescriptorType]... 1 Constant 附加的描述符的類型,可選的 10 [wDescriptorLength]... 2 Numeric 附加的描述符的總長(zhǎng)度,可選的 bcdHID:設(shè)備與其描述符所遵

17、循的HID規(guī)范的版本號(hào)碼,此數(shù)值是4個(gè)16進(jìn)制的BCD格式字符。例如版本1.1的bcdHID是0110h。(2 bytes) bCountryCode:硬件目的國(guó)家的識(shí)別碼。如果不說明,該字段為0。 bDescriptorType:HID描述符附屬的描述符的類型(報(bào)表或?qū)嶓w)。每一個(gè) HID都必須至少支持一個(gè)報(bào)表描述符。一個(gè)接口可以支持多個(gè)報(bào)表描述符,以及一個(gè)或多個(gè)實(shí)體描述符。 HID描述符的偏移量為9和10的bDescriptorType和wDescriptorLength可以重復(fù)存在多個(gè)。 1. 報(bào)表描述符 報(bào)表描述符定義了執(zhí)行設(shè)備功能的數(shù)據(jù)格式和使用方法。 報(bào)表描述符和USB

18、的其他描述符是不一樣的,它不是一個(gè)簡(jiǎn)單的表格,報(bào)表描述符是USB所有描述符中最復(fù)雜的。報(bào)表描述符非常復(fù)雜而有彈性,因?yàn)樗枰幚砀鞣N用途的設(shè)備。報(bào)表的數(shù)據(jù)必須以簡(jiǎn)潔的格式來儲(chǔ)存,這樣才不會(huì)浪費(fèi)設(shè)備內(nèi)的儲(chǔ)存空間以及數(shù)據(jù)傳輸時(shí)的總線時(shí)間。 實(shí)際上可以這樣理解,報(bào)表內(nèi)容的簡(jiǎn)潔,是通過報(bào)表描述符全面的、復(fù)雜的數(shù)據(jù)描述實(shí)現(xiàn)的。 報(bào)表描述符必須先描述數(shù)據(jù)的大小與內(nèi)容。報(bào)表描述符的內(nèi)容與大小因設(shè)備的不同而不同,在進(jìn)行報(bào)表傳輸之前,主機(jī)必須先請(qǐng)求設(shè)備的報(bào)表描述符,只有得到了報(bào)表描述符才可正確解析報(bào)表的數(shù)據(jù)。 報(bào)表描述符是報(bào)表描述項(xiàng)目(Item)的集合,每一個(gè)描述項(xiàng)目都有相對(duì)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),項(xiàng)目很多,通過

19、編碼實(shí)現(xiàn)。 (1)項(xiàng)目 報(bào)表描述符由描述HID設(shè)備的數(shù)據(jù)項(xiàng)目(Item)組成。 項(xiàng)目的第一個(gè)字節(jié)(項(xiàng)目前綴)由三部分構(gòu)成: 項(xiàng)目標(biāo)志(item Tag):說明項(xiàng)目的功能, 項(xiàng)目類型(item Type):說明項(xiàng)目的數(shù)據(jù)類型, 項(xiàng)目長(zhǎng)度(item Size):說明項(xiàng)目的數(shù)據(jù)部分的長(zhǎng)度。 HID的項(xiàng)目有短項(xiàng)目和長(zhǎng)項(xiàng)目?jī)煞N,其中短項(xiàng)目的格式如下圖。 Data (可以是0、1、2、4個(gè)字節(jié)) bTag bType bSize 7 6 5 4 3 2 1 0 位序 字段 圖8-3 HID報(bào)表短項(xiàng)目格式 短項(xiàng)目的數(shù)據(jù)字節(jié)數(shù)由bSize的值定義,b

20、Size為0、1、2、3時(shí)Data部分的字節(jié)數(shù)分別為0、1、2、4個(gè)字節(jié)。(nn為數(shù)據(jù)長(zhǎng)度) 短項(xiàng)目的項(xiàng)目類型由bType定義,bType為0、1、2時(shí)分別為Main、Global和Local類型。(見后面的表8-4 HID項(xiàng)目列表) 長(zhǎng)項(xiàng)目可以攜帶較多的數(shù)據(jù),其格式如下圖。 bDataSize 1 1 1 1 1 1 1 0 7 6 5 4 3 2 1 0 位序 字段 圖8-4 HID報(bào)表長(zhǎng)項(xiàng)目格式 bLongItemTag Data 字節(jié)數(shù) 1 1 1 1~255 項(xiàng)目中的第一個(gè)字節(jié)為上圖中的特定值時(shí)表明該項(xiàng)目是一個(gè)長(zhǎng)項(xiàng)目。長(zhǎng)項(xiàng)目中的bDataSize說明

21、Data部分的字節(jié)數(shù),bLongItemTag在HID規(guī)范中沒有定義。 下面是通過匯編實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的報(bào)表描述符,描述符的每一行是一個(gè)項(xiàng)目,該描述符描述了一個(gè)從設(shè)備接收2個(gè)字節(jié)的輸入報(bào)表和發(fā)送2個(gè)字節(jié)到設(shè)備的輸出報(bào)表。 HID_Report_desc_table:九、DB DB偽指令用于定義一個(gè)連續(xù)的存儲(chǔ)區(qū),給該存儲(chǔ)區(qū)的存儲(chǔ)單元賦值。該偽指令的參數(shù)即為存儲(chǔ)單元的值,在表達(dá)式中對(duì)變?cè)獋€(gè)數(shù)沒有限制,只要此條偽指令能容納在源程序的一行內(nèi),其格式為: 標(biāo)號(hào):?DB?表達(dá)式 只要表達(dá)式不是字符串,每一表達(dá)式值都被賦給一個(gè)字節(jié)。計(jì)算表達(dá)式值時(shí)按16位處理,但其結(jié)果只取低8位,若多個(gè)表達(dá)式出現(xiàn)

22、在一個(gè)DB偽指令中,它們必須以逗號(hào)分開。 表達(dá)式中有字符串時(shí),以單引號(hào)“'”作分隔符,每個(gè)字符占一個(gè)字節(jié),字符串不加改變地被存在各字節(jié)中,并不將小寫字母轉(zhuǎn)換成大寫字母。 例如: DB 00H 01H 03H 46H DB 'This is a demo!' db 06h, A0h, FFh ; Usage Page(Vendor defined) 定義設(shè)備功能 db 09h, A5h ; Usage(Vendor Defined) 定義用法 db A1h, 01h ; Collection(Application) 開一個(gè)集合

23、 db 09H, A6h ; Usage(Vendor defined) 定義用法 ; 輸入報(bào)表 db 09h, A7h ; Usgae(Vendor defined) 定義用法 db 15h, 80h ; Logical Minimum 定義輸入最小值=-128 db 25h, 7Fh ; Logical Maximum 定義輸入最大值=+127 db 75h, 08h ; Report Size 定義報(bào)表數(shù)據(jù)項(xiàng)大小=8 db 95

24、h, 02h ; Report Count 定義報(bào)表數(shù)據(jù)項(xiàng)個(gè)數(shù)=2 db 81h, 02h ; Input(Data,Variable,Absolute) 輸入項(xiàng)目 ; 輸出報(bào)表 db 09h, A9h ; Usgae(Vendor defined) 定義用法 db 15h, 80h ; Logical Minimum 定義輸入最小值=-128 db 25h, 7Fh ; Logical Maximum 定義輸入最大值=+27 db 75h, 0

25、8h ; Report Size 定義報(bào)表數(shù)據(jù)項(xiàng)大小=8 db 95h, 02h ; Report Count 定義報(bào)表數(shù)據(jù)向個(gè)數(shù)=2 db 91h, 02h ; Output(Data,Variable,Absolute) 輸出項(xiàng)目 db C0h ; End Collection 關(guān)閉集合 (2)項(xiàng)目的分類 報(bào)表的項(xiàng)目有Main、Global和Local三大類,每一類都有多個(gè)不同的項(xiàng)目,實(shí)現(xiàn)不同的描述。 Main類項(xiàng)目用于定義報(bào)表描述符中的數(shù)據(jù)項(xiàng)。也

26、可以組合其中的若干數(shù)據(jù)項(xiàng)成為一個(gè)集合。Main項(xiàng)目可以分為帶數(shù)據(jù)的Main項(xiàng)目和不帶數(shù)據(jù)的Main項(xiàng)目。帶數(shù)據(jù)項(xiàng)的Main用于生成報(bào)表中的數(shù)據(jù)項(xiàng),包括Input、Output和Feature項(xiàng)目。不帶數(shù)據(jù)的Main項(xiàng)目不生成報(bào)表中的數(shù)據(jù)項(xiàng),包括Collection和End Collection項(xiàng)目。 Global類項(xiàng)目實(shí)現(xiàn)對(duì)數(shù)據(jù)的描述,用來識(shí)別報(bào)表并且描述報(bào)表內(nèi)的數(shù)據(jù),包括數(shù)據(jù)的功能、最大與最小允許值以及數(shù)據(jù)項(xiàng)的大小與數(shù)目等。改變由Main類項(xiàng)目生成的項(xiàng)目狀態(tài)表。Global類項(xiàng)目描述對(duì)后續(xù)的所有項(xiàng)目有效,除非遇到有新的Global類項(xiàng)目。 Local類項(xiàng)目定義控制的特征,這一類項(xiàng)目的作用

27、域不超過下一個(gè)Main項(xiàng)目,所以在每一Main項(xiàng)目之前可能有多個(gè)Local項(xiàng)目。Local項(xiàng)目用于描述后面的Input、Output和Feature項(xiàng)目。 下表列出的是全部的項(xiàng)目的前綴字和簡(jiǎn)要功能說明。 表8-4 HID項(xiàng)目列表 項(xiàng)目 類型 項(xiàng)目標(biāo)志(Tag) 項(xiàng)目前綴,nn為數(shù)據(jù)長(zhǎng)度 功能說明 Main 類項(xiàng)目 (00) Input 1000 00 nn 定義輸入報(bào)表,主機(jī)利用該信息解析設(shè)備提供的數(shù)據(jù)。主機(jī)向控制端口發(fā)送Get_Report實(shí)現(xiàn)輸入 Output 1001 00 nn 創(chuàng)建輸出報(bào)表,通過向設(shè)備發(fā)送Set_Report實(shí)現(xiàn)輸出 Featu

28、re 1011 00 nn 定義送往設(shè)備的設(shè)置信息 Collection 1010 00 nn 定義2個(gè)以上數(shù)據(jù)(Input、Output和Feature)的關(guān)系為集合,Collection開始一個(gè)集合,之后的End Collection結(jié)束集合。Collection項(xiàng)目的數(shù)據(jù)部分說明Collection的類型 End Collection 1100 00 nn Global 類項(xiàng)目(01) Usage Page 0000 01 nn 指定設(shè)備的功能 (06h,A0h,FFh) 另外由于Usage項(xiàng)目有32位數(shù)據(jù)值,Usage Page項(xiàng)目用于為Usage項(xiàng)目在報(bào)表描

29、述符中占居存儲(chǔ)空間。用于存放后續(xù)的Usage項(xiàng)目的高16位。 Logical Minimum 0001 01 nn 定義變量或數(shù)組項(xiàng)目的邏輯最小值和最大值 (-128,+127) (15h, 80h) (25h, 7Fh) Logical Maximum 0010 01 nn Physical Minimum 0011 01 nn 定義變量或數(shù)組項(xiàng)目的物理最小值和最大值,分別和Logical Minimum、Logical Maximum對(duì)應(yīng) Physical Maximum 0100 01 nn Unit Exponent 0101 01 nn 定義數(shù)值是基于

30、10的指數(shù) Unit 0110 01 nn 單位 Report Size 0111 01 nn 指定報(bào)表數(shù)據(jù)區(qū)域所包含的位數(shù)(=8) Report ID 1000 01 nn 報(bào)表ID,該項(xiàng)目在報(bào)表中插入一個(gè)字節(jié)的報(bào)表ID Report Count 1001 01 nn 報(bào)表中數(shù)據(jù)域的數(shù)目 (=2) Push 1010 01 nn 將Global項(xiàng)目狀態(tài)表送入堆棧 Pop 1011 01 nn 從堆?;謴?fù)Global項(xiàng)目狀態(tài)表 1100 01 nn – 1111 01 nn 保留 Local 類項(xiàng)目(10) Usage 0000

31、10 nn 用法索引值,表示對(duì)項(xiàng)目或集合建議的用法,用于當(dāng)一個(gè)項(xiàng)目描述多個(gè)控制,對(duì)每一個(gè)變量和數(shù)組元素都有建議的用法(09h,A7h) Usage Minimum 0001 10 nn 定義陣列或位圖中控制操作的第一個(gè)和最后一個(gè)用法 Usage Maximum 0010 10 nn Designator Index 0011 10 nn 確定用于控制的實(shí)體,指向物理描述符中的目標(biāo) Designator Minimum 0100 10 nn 定義陣列或位圖目標(biāo)的起始和終止索引值 Designator Maximum 0101 10 nn String Index

32、 0111 10 nn 確定字符串描述符中的索引值 String Minimum 1000 10 nn 定義用于陣列或位圖控制中字符串序列索引值的最小值和最大值 String Maximum 1001 10 nn Delimiter 1010 10 nn 定義一組Local項(xiàng)目的開始和結(jié)束,1=開始,0=結(jié)束 1010 10 nn – 1111 10 nn 保留 在這些項(xiàng)目中,Usage Page用來指定設(shè)備的功能,而Usage項(xiàng)目用來指定個(gè)別報(bào)表的功能。Usage Page項(xiàng)目相當(dāng)于是HID的子集合,Usage相當(dāng)于是Usage Page的子集合。

33、 2. 報(bào)表描述符的項(xiàng)目 (1)Input、Outpot和Feature項(xiàng)目 這3個(gè)項(xiàng)目用來定義報(bào)表中的數(shù)據(jù)字段。 Input項(xiàng)目可以應(yīng)用到任何控制、計(jì)數(shù)器讀數(shù)或其他設(shè)備傳給主機(jī)的信息。一個(gè)輸入報(bào)表包含一個(gè)或多個(gè)Input項(xiàng)目,主機(jī)使用中斷輸入傳輸來請(qǐng)求輸入報(bào)表。 Ouput項(xiàng)目用來定義主機(jī)傳送給設(shè)備的信息。一個(gè)輸出報(bào)表包含一個(gè)或多個(gè)Outpot項(xiàng)目。輸出報(bào)表包含控制狀態(tài)的數(shù)據(jù)。如果有中斷輸出管道,HID1.1兼容主機(jī)使用中斷輸出傳輸來傳送輸出報(bào)表,否則使用Set_Report控制請(qǐng)求。 Feature項(xiàng)目應(yīng)用到主機(jī)傳送給設(shè)備的信息,或是主機(jī)從設(shè)備讀取Feature項(xiàng)目。一個(gè)特征報(bào)表

34、包含一個(gè)或多個(gè)Feature項(xiàng)目,F(xiàn)eature項(xiàng)目通常是包合影響設(shè)備與其組件整體行為的配置。特征報(bào)表通常是控制可以使用實(shí)際的控制面板調(diào)整的設(shè)置,例如主機(jī)可以使用虛擬控制面板來讓用戶選擇控制特征。主機(jī)使用 Set_Report與Get_Report請(qǐng)求來傳送與接收特征報(bào)表。 在每一個(gè)Input、Output和Feature項(xiàng)目的前綴字之后是32位描述數(shù)據(jù),目前最多定義了9個(gè)位,余的位則是保留。位0~8的定義中只有位7不能應(yīng)用于Input項(xiàng)目,除此之外其他的位定義都適應(yīng)于Input、Output和Feature項(xiàng)目。 表8-5 Input、Output和Feature項(xiàng)目的數(shù)據(jù)項(xiàng)說明

35、 數(shù)據(jù)字段 含義說明 位 值 名稱 0 0 Data 數(shù)據(jù):表示項(xiàng)目的內(nèi)容是可更改的(讀/寫)。 1 Constant 常數(shù):表示項(xiàng)目的內(nèi)容是不可更改的(只讀)。 1 0 Array 數(shù)組:報(bào)告全部控制的狀態(tài)。如在鍵盤報(bào)表中每一個(gè)鍵在報(bào)表中占一位,報(bào)表傳輸全部鍵的狀態(tài),可以同時(shí)按下任意多個(gè)鍵。 1 Variable 變量:報(bào)告作用中的控制。如在鍵盤報(bào)表中只報(bào)告按下的鍵的編號(hào),可以同時(shí)按下的鍵的數(shù)目等于報(bào)表的計(jì)數(shù)(Global類項(xiàng)目Report Count) 2 0 Absolute 絕對(duì):表示數(shù)值以一個(gè)固定值為基準(zhǔn)。游戲桿通常是報(bào)告絕對(duì)數(shù)據(jù)(游戲桿目

36、前的位置)。 1 Relative 相對(duì):表示數(shù)據(jù)的改變以上一個(gè)讀數(shù)為基準(zhǔn)。鼠標(biāo)通常是報(bào)告相對(duì)數(shù)據(jù)(鼠標(biāo)的移動(dòng)位置)。 3 ① 0 No Wrap 如果設(shè)置為1表示回轉(zhuǎn),當(dāng)數(shù)值超過最小值到最大值的范圍時(shí)將回轉(zhuǎn),如果最小值是0而最大值是10,超過最大值的下一個(gè)數(shù)值是0。 1 Wrap 4 ① 0 Linear 線形:表示測(cè)量的數(shù)據(jù)與報(bào)表的數(shù)據(jù)有線性的關(guān)系。 1 Non-Linear 非線性:表示測(cè)量的數(shù)據(jù)與報(bào)表的數(shù)據(jù)沒有線性的關(guān)系。 5 ① 0 Preferred 優(yōu)選狀態(tài):表示控制在沒有用戶交互時(shí)會(huì)回到一個(gè)特定的狀態(tài)。如按鈕就有優(yōu)選狀態(tài),在無操作

37、時(shí)保持未按下的狀態(tài)。 1 Non-Preferred 非優(yōu)選狀態(tài):它維持在上一個(gè)用戶選擇的狀態(tài)。如交替的開關(guān)就沒有優(yōu)選狀態(tài)。 6 ① 0 No Null Position 無空狀態(tài)位置:表示控制永遠(yuǎn)在傳送有效的數(shù)據(jù)。 1 Null State 空狀態(tài):表示控制支持一個(gè)沒有傳送有效數(shù)據(jù)的狀態(tài)。如操縱桿可能具有一個(gè)多方向的按鈕開關(guān),在沒有按下時(shí)在空狀態(tài),這時(shí)控制將傳送一個(gè)在 Logical Minimum與Logical Maximum范圍之外的數(shù)值來表示它在空狀態(tài)。 7 ② 0 Non-Volatile 不可變的:表示設(shè)備只有在主機(jī)請(qǐng)求時(shí)才改變數(shù)值。當(dāng)主機(jī)傳送

38、一個(gè)報(bào)表并且不要改變不可變項(xiàng)目時(shí),如果該項(xiàng)目是定義成相對(duì)(Relative)的,數(shù)值0表示不改變數(shù)據(jù),如果不可變項(xiàng)目是定義成絕對(duì)(Absolute)的,超出范圍外的數(shù)值則表示不改變數(shù)據(jù)。 1 Volatile 可變的:表示設(shè)備可以自己改變數(shù)值,并不是必須主機(jī)傳送報(bào)表要求給設(shè)備來改變數(shù)值。例如設(shè)備控制面板可以由主機(jī)軟件傳送一個(gè)報(bào)表給設(shè)備,也可以由用戶自己按設(shè)備上的實(shí)際按鈕。 8 ① 0 Bit Field 位字段:表示每一個(gè)位或是一個(gè)字節(jié)內(nèi)的一組位可以代表一份數(shù)據(jù)。 1 Buffered Bytes 緩沖字節(jié):表示信息包含一個(gè)或多個(gè)字節(jié),緩沖字節(jié)的報(bào)表大小必須是8。 9~

39、31位 保留 注: ①:該位不能應(yīng)用到數(shù)組。 ②:只應(yīng)用于Output和Feature項(xiàng)目,對(duì)于Input項(xiàng)目該位保留。 (2)Collection和End Collection項(xiàng)目 所有的報(bào)表類型都可以使用Collection與 End Collection項(xiàng)目來將相關(guān)的Main類型項(xiàng)目組成群組。這兩個(gè)項(xiàng)目分別用于打開和關(guān)閉集合。所有在Collection與End Collection項(xiàng)目之間的Main類型項(xiàng)目都是 Collection的一部分。 Collection有3種類型:Application、Physical與Logical,其項(xiàng)目的數(shù)據(jù)項(xiàng)的值分別為1、0和2。

40、廠商也可以自己定義Collection類型,數(shù)據(jù)項(xiàng)的值為80h~FFh保留給廠商定義。End Collection項(xiàng)目無數(shù)據(jù)項(xiàng)。 Application Collection包含有共同用途的項(xiàng)目或執(zhí)行單一功能的項(xiàng)目。例如鍵盤的開機(jī)描述符將鍵盤的按鍵與LED指示燈數(shù)據(jù)集合成一個(gè)Application Collection。所有的報(bào)表必須在一個(gè)Application Collection內(nèi)。 Physical Collection包含在一個(gè)單一幾何點(diǎn)上的數(shù)據(jù)項(xiàng)目,可以將每個(gè)位置的數(shù)據(jù)集合成一個(gè) Physical Collection。在設(shè)備報(bào)告多個(gè)傳感器的位置的時(shí)候,使用Physical Co

41、llection指明不同的數(shù)據(jù)來自不同的傳感器。 Logical Collection形成一個(gè)數(shù)據(jù)結(jié)構(gòu),包含由 Collection所連結(jié)的不同類型的項(xiàng)目。例如數(shù)據(jù)緩沖區(qū)的內(nèi)容以及緩沖區(qū)內(nèi)字節(jié)數(shù)目的計(jì)數(shù)。 (3)Usage Page和Usage項(xiàng)目 Usage page項(xiàng)目的數(shù)據(jù)部分為1~2個(gè)字節(jié),目前的定義全部都是一個(gè)字節(jié)。Usage Page定義了常用的設(shè)備功能,關(guān)于Usage Page(以及其他項(xiàng)目)的具體定義內(nèi)容,可以查閱HID Usage tables(http://www.usb.org/developers/hidpage/#Class_Definition),下表是來自H

42、ID Usage tables的Usage Page定義。 表8-6 Usage Page定義 Page ID Page Name 00 Undefined 01 Generic Desktop Controls 02 Simulation Controls 03 VR Controls 04 Sport Controls 05 Game Controls 06 Generic Device Controls 07 Keyboard/Keypad 08 LEDs 09 Button 0A Ordinal

43、 0B Telephony 0C Consumer 0D Digitizer 0E Reserved 0F PID Page 10 Unicode 11-13 Reserved 14 Alphanumeric Display 15-3f Reserved 40 Medical Instruments 41-7F Reserved 80-83 Monitor pages 84-87 Power pages 88-8B Reserved 8C Bar Code Scanner page 8D Scale pa

44、ge 8E Magnetic Stripe Reading (MSR) Devices 8F Reserved Point of Sale pages 90 Camera Control Page 91 Arcade Page 92-FEFF Reserved FF00-FFFF Vendor-defined 關(guān)于Usage Page的每一個(gè)有效定義項(xiàng),都有一個(gè)相應(yīng)的下一級(jí)定義,如Usage Page的數(shù)據(jù)項(xiàng)數(shù)值為1,則設(shè)備定義為Generic Desktop Controls,關(guān)于該類設(shè)備的具體功能可以在HID Usage Tables中查到具體的定義。下

45、表是HID Usage Tables中對(duì)Generic Desktop Controls設(shè)備的功能定義。 表8-7 Generic Desktop Controls 用法定義 Usage ID Usage Name Usage Type 參閱HID Usage Tables中的相關(guān)章節(jié) 00 Undefined 01 Pointer CP 4.1 02 Mouse CA 03 Reserved 04 Joystick CA 4.1 05 Game Pad CA 06 Keyboard CA 07 Keypad

46、CA 08 Multi-axis Controller CA 09 Tablet PC System Controls CA 0A-2F Reserved 30 X DV 4.2 31 Y DV 32 Z DV 33 Rx DV 34 Ry DV 35 Rz DV 36 Slider DV 4.3 37 Dial DV 38 Wheel DV 39 Hat switch DV 3A Counted Buffer CL 4.6 3B Byte Count DV 3C Motion Wakeu

47、p OSC 4.3 3D Start OOC 3E Select OOC 3F Reserved 40 Vx DV 4.3.1 41 Vy DV 42 Vz DV 43 Vbrx DV 44 Vbry DV 45 Vbrz DV 46 Vno DV 47 Feature Notification DV,DF 4.8 48 Resolution Multiplier DV 49-7F Reserved 80 System Control CA 4.5 81 System Power

48、Down OSC 82 System Sleep OSC 4.5.1 83 System Wake Up OSC 84 System Context Menu OSC 4.5 85 System Main Menu OSC 86 System App Menu OSC 87 System Menu Help OSC 88 System Menu Exit OSC 89 System Menu Select OSC 8A System Menu Right RTC 8B System Menu Left RTC 8C Syst

49、em Menu Up RTC 8D System Menu Down RTC 8E System Cold Restart OSC 4.5.1 8F System Warm Restart OSC 90 D-pad Up OOC 4.7 91 D-pad Down OOC 92 D-pad Right OOC 93 D-pad Left OOC 94-9F Reserved A0 System Dock OSC 4.5.1 A1 System Undock OSC A2 System Setup OSC A3

50、 System Break OSC 4.9 A4 System Debugger Break OSC A5 Application Break OSC A6 Application Debugger Break OSC A7 System Speaker Mute OSC 4.5.1 A8 System Hibernate OSC A9-AF Reserved B0 System Display Invert OSC 4.10 B1 System Display Internal OSC B2 System Display E

51、xternal OSC B3 System Display Both OSC B4 System Display Dual OSC B5 System Display Toggle Int/Ext OSC B6 System Display Swap Primary/Secondary OSC B7 System Display LCD Autoscale OSC B8-FFFF Reserved 用法(Usage)定義了各種各樣設(shè)備特性,對(duì)于Usage Page的每一項(xiàng)都定義了常用的各種用法。 用法說明了3種信息,即控制、集合和數(shù)據(jù)。控制說

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

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

54、(Array)數(shù)據(jù)的限制范圍,此限制范圍以邏輯單位來表示。例如設(shè)備報(bào)表的一個(gè)電流值讀數(shù)是500mA,而一個(gè)單位是2mA,則 Logical Maximum值等于250。 負(fù)數(shù)值以2的補(bǔ)碼來表示。如果Logical Minimum與Logical Maximum都是正數(shù),就不需要有正負(fù)號(hào)位。不管 Logical Minimum與Logical Maximum是以有正負(fù)號(hào)或是無正負(fù)號(hào)的數(shù)值來表示,設(shè)備都可以正確地傳輸數(shù)據(jù)。數(shù)據(jù)的接收者必須知道數(shù)據(jù)是否可以是負(fù)值。 (5)Physical Minimum和Physical Maximum項(xiàng)目 Physical Minimum和Physical

55、Maximum項(xiàng)目定義數(shù)值的限制范圍,該限制范圍使用Unit項(xiàng)目定義的單位來表示。上例中設(shè)備報(bào)表的一個(gè)電流值讀數(shù)是500mA,單位是2mA, Logical Maximum值等于250,而Physical Maximum值是500。 Logical Minimum與 Logical Maximum值說明了設(shè)備返回?cái)?shù)值的邊界,可以根據(jù)Physical Minimum和Physical Maximum值對(duì)數(shù)據(jù)進(jìn)行偏移和比例變換。 (6)Unit Exponent項(xiàng)目 Unit Exponent項(xiàng)目定義了在使用邏輯范圍和實(shí)際范圍將設(shè)備的返回?cái)?shù)值轉(zhuǎn)換成實(shí)際數(shù)值時(shí),使用10的多少次方對(duì)數(shù)值進(jìn)行定標(biāo)

56、。Unit Exponent的值的編碼為4位補(bǔ)碼,代表10的指數(shù)范圍是-8~+7。 表8-8 Unit Exponent 數(shù)值表 代碼 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0FH 數(shù)值 0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1 根據(jù)以上5個(gè)項(xiàng)目的值可以換算出報(bào)表傳送數(shù)據(jù)(邏輯數(shù)據(jù))與物理數(shù)據(jù)的轉(zhuǎn)換關(guān)系。 物理數(shù)據(jù)值 = 邏輯數(shù)據(jù)值÷分辨率 分辨率 = (LogicalMaximum

57、 - LogicalMinimum)÷ ((PhysicalMaximum - PhysicalMinimum)×10UnitExponent) (7)Unit項(xiàng)目 Unit項(xiàng)目指定報(bào)表數(shù)據(jù)在使用Physical與Unit Exponent項(xiàng)目轉(zhuǎn)換后使用什么度量單位,以及單位的冪指數(shù)值。Unit的數(shù)值部分可以長(zhǎng)達(dá)4字節(jié),按照4位為一段分段,可以分為8個(gè)半字節(jié)段,由高到低分別為半字節(jié)7、半字節(jié)6、…、半字節(jié)0。每一個(gè)半字節(jié)對(duì)應(yīng)不同的基本單位,其數(shù)值表示單位的指數(shù)值,采用4位2的補(bǔ)碼表示,取值范圍是-8~+7之間。 從半字節(jié)0~6由下表給出了具體的定義,其中半字節(jié)0表示測(cè)量系統(tǒng),半字節(jié)

58、7保留。例如在半字節(jié)0數(shù)值為1(表示采用線性公制測(cè)量系統(tǒng))的條件下,半字節(jié)1表示長(zhǎng)度(單位為厘米),如果其數(shù)值為1表示厘米,數(shù)值為2表示(厘米)2,成為面積單位。半字節(jié)3表示時(shí)間(單位為秒),如果其數(shù)值為-2,表示(秒)-2。 表8-9 Unit 單位的定義 半字節(jié) 序號(hào) 測(cè)量 項(xiàng)目 數(shù)值含義 0 1 2 3 4 0 測(cè)量系統(tǒng) 無 線性、公制 角度、公制 線性、英制 角度、英制 1 長(zhǎng)度 厘米 半徑 英寸 度 2 質(zhì)量 克 石拉(slug) 3 時(shí)間 秒 4 溫度 開式度(Kelvin) 華式度 5 電流 安培

59、 6 亮度 燭光 7 保留 雖然表中只是定義了有限的基本單位,但可以通過這些基本單位的組合派生出大多數(shù)其它的常用單位。 例如報(bào)表使用一個(gè)字節(jié)傳送一個(gè)從-20到110華氏度溫度值,可以定義以下報(bào)表描述項(xiàng)目: Logical Minimum = -128 Logical Maximum = 127 Physical Minimum = -20 Physical Maximum = 110 Unit Exponent = 0 Unit = 30003h Unit的半字節(jié)0=3選擇英制線性測(cè)量系統(tǒng),半字節(jié)4=3選擇華氏溫度單位。 130(110+20)華氏度的數(shù)值范

60、圍線性分布到了256和有效數(shù)值區(qū)域,每一位相當(dāng)于0.51華氏度,這樣就提高了分辨率。 (8)Report Size和Report Count項(xiàng)目 Report Size項(xiàng)目指定Input、Output與Feature項(xiàng)目字段的大小,以位為單位。 Report Count項(xiàng)目指定Input、Output與Feature項(xiàng)目包含的字段數(shù)目。 例如兩個(gè)8位的字段,Report Size等于8,而Report Count等于2。8個(gè)1位的字段,Report Size等于1,而 Report Count等于8。 Input、Output與Feature項(xiàng)目報(bào)表可以有多個(gè)項(xiàng)目,每一個(gè)項(xiàng)目可以有自

61、己的Report Size和Report Count項(xiàng)目。 (9)Push和Pop項(xiàng)目 Push項(xiàng)目將一個(gè)Global項(xiàng)目狀態(tài)表格的副本壓入CPU的堆棧內(nèi)。GIobal項(xiàng)目狀態(tài)表格包含所有之前定義的Gobal項(xiàng)目的目前設(shè)置。 Pop項(xiàng)目恢復(fù)之前壓入堆棧的Global項(xiàng)目狀態(tài)的儲(chǔ)存狀態(tài)。 (10)Usage、Usage Minimum和Usage Maximum項(xiàng)目 這3個(gè)項(xiàng)目輸入Local類型項(xiàng)目。 Usage項(xiàng)目和Global類型的Usage Page項(xiàng)目協(xié)同描述項(xiàng)目或集合的功能。 一個(gè)報(bào)表可以指定一個(gè)Usage給許多個(gè)控制,或是指定不同的Usage給每一個(gè)控制。如果一個(gè)報(bào)表項(xiàng)

62、目之前有一個(gè)Usage,此Usage應(yīng)用到該項(xiàng)目的所有控制。如果一個(gè)報(bào)表項(xiàng)目之前有一個(gè)以上的Usage,每一個(gè)Usage應(yīng)用到一個(gè)控制,Usage與控制是按順序結(jié)合的。 例如下面報(bào)表描述符的一個(gè)局部,報(bào)表含有2個(gè)輸入字節(jié),第一個(gè)字節(jié)的用法是x,第2個(gè)字節(jié)是y。 Report Size (8) Report Count (2) Usage (x) Usage (y) Input (Data, Variable, Absolute) 如果一個(gè)報(bào)表項(xiàng)目之前有一個(gè)以上的Usage,而且控制的數(shù)目多于Usage的數(shù)目,每一個(gè)Usage與一個(gè)控制對(duì)應(yīng),最后一個(gè)Usage則應(yīng)用到

63、所有剩余的控制。 例如在下面報(bào)表包含16個(gè)字節(jié)輸入數(shù)據(jù),第一個(gè)字節(jié)對(duì)應(yīng)用法x,第2個(gè)字節(jié)對(duì)應(yīng)用法y,剩余的14個(gè)字節(jié)對(duì)應(yīng)廠商定義的用法。 Usage (x) Usage (y) Usage (Vendor defined) Report Size (8) Report Count (16) Input (Data, Variable, Absolute) Usage Minimum和Usage Maximum可以指定一個(gè) Usage給多個(gè)控制或是數(shù)組項(xiàng)目。將從Usage Minimum到Usgae Maximun定義的用法順序?qū)?yīng)到多個(gè)控制中。 例如在一個(gè)鍵盤描

64、述符中定義的標(biāo)準(zhǔn)鍵盤的左、右修飾鍵的輸入項(xiàng)目中,使用一個(gè)字節(jié)的8位分別輸入鍵盤的左、右Ctrl鍵、Shift鍵、Alt鍵和GUI鍵,從HID Usage tables文檔中的第10節(jié)可以查到關(guān)于鍵盤用法的定義,其中上述8個(gè)修飾鍵的用法定義值為224到231。以下是報(bào)表描述符的修飾鍵部分描述。 Usage Page (1) ; 1 = Generic Desktop Controls Usage (6) ; 6 = Keyboard Collection (1) ; 1 = Application Usage Page (7) ; 7 = Keyboard/

65、Keypad Usage Minimum (224) Usage Maximum (231) Logical Minimum (0) Logical Maximum (1) Report Size (1) Report Count (8) Input (Data, Variable, Absolute) …… 8.3 USB接口的鍵盤描述符范例 下面作為一個(gè)例子,介紹一個(gè)USB接口的101鍵盤的全部描述符。該鍵盤固件部分由一個(gè)微處理器實(shí)現(xiàn)全部控制功能,下面列出的代碼為微處理器匯編實(shí)現(xiàn)描述符定義。 8.3.1 設(shè)備的描述符 設(shè)備描述符的代碼如

66、下。 ;========================================= ; Device descriptor 設(shè)備描述符 ;========================================= DEVICE_DESC_DATA: DB 0x12 ; bLength = 18,該描述符長(zhǎng)度為18字節(jié) DB 0x01 ; bDescriptorType = 01,表明是設(shè)備描述符 DB 0x10, 0x01 ; bcdUSB,USB設(shè)備版本號(hào)=1.1 DB 0x00 ; DeviceClass,設(shè)備類碼,HID設(shè)備為0,類別在接口描述符中定義 DB 0X00 ; DeviceSubClass,設(shè)備子類碼,DeviceClass為0時(shí)該字段必須為0 DB 0X00 ; bDevicePortocol,協(xié)議碼,DeviceClass為0時(shí)該字段必須為0 DB 0x08 ; bMaxPacketSize0,端點(diǎn)0的最大包尺寸 DB 0xFF, 0xFF ; bVendor,廠商ID,由USB實(shí)現(xiàn)者論壇確定的

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!