版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
USB/HID設(shè)備報(bào)告描述符詳解報(bào)告在這里意思是數(shù)據(jù)傳輸〔datatransfer〕,而報(bào)告描述符是對(duì)這些傳輸?shù)臄?shù)據(jù)作用途〔usage〕上的說明。USB通訊協(xié)議的標(biāo)準(zhǔn)是以1ms產(chǎn)生一個(gè)USB幀〔frame〕,USB設(shè)備可以每一個(gè)幀中發(fā)送和接收一個(gè)交換〔transaction〕。交換是由幾個(gè)封包(packet)組成,而傳輸是由一個(gè)或幾個(gè)交換來完成傳送一口中(controltransfer)和中斷型傳輸(interrupttransfer)即可。掌握型傳輸是當(dāng)需要時(shí)才執(zhí)行傳輸要求,是最一般的傳輸方式,組態(tài)、命令和狀態(tài)的通訊都可以使用掌握型傳輸;掌握型傳輸主要用于消息型數(shù)據(jù)〔message-typedata〕。中斷型傳輸目的在做重復(fù)的數(shù)據(jù)更〔recurringdata〕傳輸,準(zhǔn)確一點(diǎn)而言,即是在每個(gè)有限有周期內(nèi)(boundedperiod)作至少一次的小量數(shù)據(jù)發(fā)送或接收;所以適用于流淌型數(shù)據(jù)〔stream-typedata〕,留意這里所謂的周期時(shí)間就是在端點(diǎn)描述符中的輪詢間隔時(shí)間。報(bào)告有三種:input,output,Feature.后面將作進(jìn)一步介紹。中斷型輸入管線(interruptinpipe)僅可以傳送input報(bào)告;中斷型輸出管線(interruptoutpipe)output報(bào)告;但是掌握型管線(controlpipe)input,outputfeature報(bào)告。端點(diǎn)描述符有聲明所使用的端點(diǎn)為何種管線。數(shù)據(jù)本身沒有任何意義,要賦于用途才能明確其為掌握什么〔control〕;例如設(shè)備上的按鈕指示燈XYXY軸的位移量。為了這個(gè)目的應(yīng)運(yùn)而生報(bào)告描述符,其將數(shù)據(jù)的操控與它的用途作一對(duì)一的對(duì)應(yīng),所以解讀報(bào)告后就可以知道每個(gè)數(shù)“傳輸?shù)臄?shù)據(jù)”和“操作”32〔稱作usagetag〕16usage(用途類頁)16位稱為usageID(用途識(shí)別名):Usage=(usage:usageID)xy軸的位移數(shù)據(jù),因此第一個(gè)字節(jié)的usage=(genericdesktop:X),usage=(genericdesktop:Y)genericdesktop為用途的大類別〔稱作用途類頁〕之x和yuniversalserialBusHIDUsageTable完整列出全部的usages(用途類頁)和usageID(用途識(shí)別名),使用者必需遵照文件的標(biāo)準(zhǔn)來聲明操作的用途。該文件的附錄A有十多個(gè)報(bào)告描述符的范例,值得爭論下。1、報(bào)告描述符的標(biāo)簽主工程標(biāo)簽代碼全域工程標(biāo)簽代碼區(qū)域工程標(biāo)簽代碼Input?X08Usage0x0?Usage0x0?Output?0x9LogicalMinimum0x1?UsageMinimum0x1?Featureb?0x0LogicalMaximum0x2?UsageMaximum0x2?PhysicalMinimum0x3?DesignatorMinimum0x3?Collection10xaPhysicalMaximum0x4?DesignatorMinimum0x4?EndCollection0xc0UnitExponent0x5?DesignatorMaximum0x5?Unit0x6?String0x7?ReportSize0x7?SreingMinimum0x8?ReportID0x8?StringMaximum0x9?ReportCoumt0x9?Delimiter0xa?Push0xA?Pop0xb?標(biāo)簽:1列出全部的卷標(biāo),利用這些卷標(biāo)取可以清楚完整的描述符操作的用途。報(bào)告描述符的語法不同于USB標(biāo)準(zhǔn)描述符,它是以工程〔items〕方式排列而成,無肯定的長度;工程有一個(gè)前輟(prefix),然后跟著一個(gè)括號(hào),內(nèi)為該工程的數(shù)據(jù):item=prefix(data)。工程分成三種類別:主工程,全局工程,區(qū)域工程。主工程中的input,ouput,feature三個(gè)卷標(biāo)用來表示報(bào)告中數(shù)據(jù)的種類,這些是報(bào)告描述符中最主要的工程,其他工程都是用來修飾這三種工程。主要工程中其他二個(gè)卷標(biāo)后面再作具體的介紹。>>Input項(xiàng):表示設(shè)備操作輸入到主機(jī)的數(shù)據(jù)模式。這個(gè)數(shù)據(jù)格式就形成一個(gè)輸入報(bào)告,雖然輸入報(bào)告可以用掌握型管線以getreport〔input〕來傳輸,但是通常用中斷型輸入管線來傳輸以確保在每一固定周期內(nèi)都能將更的輸入報(bào)告?zhèn)鹘o主機(jī)。>>Output項(xiàng):表示由主機(jī)輸出到裝置操作的數(shù)據(jù)格式。這個(gè)數(shù)據(jù)格式就形成一個(gè)輸出報(bào)告。輸出報(bào)告通常不適用輪詢的方式來傳送給設(shè)備,而是由應(yīng)用軟件依實(shí)際需求以傳令方式要求送出輸出報(bào)告,所以大多用掌握型管線以setreport(output)指令來將報(bào)告送到設(shè)備。固然也可以選擇用中斷型輸出管線來傳送,只是通常不建議這樣用。>>Feature項(xiàng):表示由主機(jī)送到設(shè)備的組態(tài)所需數(shù)據(jù)的數(shù)據(jù)格式。這個(gè)數(shù)據(jù)模式就形成一個(gè)特征報(bào)getreport(feature)和setreport(feature)指令分別來取得和設(shè)定設(shè)備的特征值。>>2X16feature報(bào)告;顯示狀態(tài)例如“就緒”和“輸入字錯(cuò)誤”input報(bào)告;光標(biāo)位置和顯示的字需可讀寫,所以屬于另一feature報(bào)告;更顯示的字則為output報(bào)告。為了區(qū)分兩個(gè)features,要用到全局工程中的reportID,每個(gè)feature報(bào)告有一個(gè)不同的reportID,因而主機(jī)懇求指令要加上reportIDgetreport(feature,reportID)Setreport(feature,reportID)。主工程用來定義報(bào)告中數(shù)據(jù)的種類和格式,而說明主工程之意義與用途為全局工程和區(qū)域工程。顧名思義,區(qū)域性工程只能適用于列于其下的第一個(gè)主工程,不適用于其他主項(xiàng)全局性工程適用于其下方的全部主工程,除非另一個(gè)一樣卷標(biāo)的全局性工程消滅。為了清楚說明報(bào)告描述符,將使用“工程狀態(tài)表”〔itemstatetable〕1顯示全局性工程和區(qū)域性工程與所描述的主工程之對(duì)應(yīng)關(guān)系。區(qū)域性工程卷標(biāo):簡潔地說,區(qū)域性工程〔見表1〕只是說明用途而已。Designator是要搭配實(shí)體描述符使用的,這里designator標(biāo)簽。UsageUsageID,它搭配全域工程的Usage卷標(biāo)才形成前文所定義的用途{usage}﹔但是報(bào)告描述符允許在區(qū)域工程的Usage卷標(biāo)直接用32位的方式來指定用途,這種方式稱作擴(kuò)大式用途指定法(extendedusage)以示區(qū)分。例如:Usage(GenericDesktop:Mouse),UsageMinimum(Keyboard:0),和UsageMaximum(Keyboard:101)。很明顯的,擴(kuò)大式用途指定法會(huì)取代『工程Usage。還有,使用擴(kuò)大式用途指定法時(shí),數(shù)據(jù)的高16個(gè)位為用途類頁Usage,16個(gè)位則為用途識(shí)別名UsageID101UsageID列出UsageMinimumUsageMaximum二個(gè)標(biāo)簽。以鍵盤為例,主工程之上只要二個(gè)區(qū)域工程:UsageMinimum(0),UsageMaximum(101)。如此一來,則無鍵按下(UsageID0)和101鍵中任一鍵被按下(UsageID1101)。StringIndexUsageStringMinimumStringMaximum則類似標(biāo)簽UsageMinimumUsageMaximum。假設(shè)期望某個(gè)操作對(duì)應(yīng)到一個(gè)字串,則用StringIndex來描述該操控的報(bào)告數(shù)據(jù),這個(gè)字符串在字符串描述符中,StringIndex(data)工程中的data是這個(gè)字符串在字符串描述符中的位置索引。假設(shè)需要用到幾個(gè)字符串,則可以使用StringMinimum來指向字符串描述符中被用到字StringMaximum來指向最終位置索引。Delimiter很少用到,請(qǐng)參考UniversalSerialBusHIDUsageTables文件中AppendixB的范例具體說明。全局工程卷標(biāo)Usage,LogicalMinimum,LogicalMaximum,ReportSize,ReportID,ReportCount2列了二個(gè)音量操作的例子〔音量增減鍵和音量旋鈕〕將用來關(guān)心說明這些卷標(biāo),不過主工程括號(hào)內(nèi)的數(shù)據(jù)會(huì)在后文中再做說明。2、音量操作舉例音量減鍵音量減鍵音量旋鈕Usage(consumer)Usage(Consumer)Usage(Volume)Usage(Volume)LogicalMinimum(-1)LogicalMinimum(0)LogicalMaximum(-1)LogicalMaximum(100)ReportSize(2)ReportSize(7)ReportReportCount(1)ReportCount(1)Input(Data,Variable,Relative)Input(Data,Variable,Absolute,NoWrap,Linear,NoRelative)查閱UniversalSerialBusHIDUsageTables文檔,這兩個(gè)例子的用途需要令為(Consumer:Volume)。Usage前面已經(jīng)介紹過了。ReportSize用來設(shè)定主工程(Input,Output,F(xiàn)eature)的報(bào)告字段大小,它的單位是位。主工程會(huì)對(duì)每個(gè)操作產(chǎn)生一個(gè)報(bào)告字段,字段大小則由ReportSize打算。而ReportCount用來設(shè)定主工程之報(bào)告字段的數(shù)目,其等于操作的數(shù)目。音量增減鍵的例子中ReportCount(1)Input只產(chǎn)生一個(gè)字段,所以可知只有一個(gè)音量增減鍵﹔而ReportSize(2)表2位。另一個(gè)音量旋鈕例子也是只有一個(gè)旋鈕,所以用ReportCount(1)﹔但是由于ReportSize(7)7位,可以表示0127之?dāng)?shù)值。再舉一例,假設(shè)是鼠標(biāo)的三個(gè)按鍵,ReportSize(1),ReportCount(3)﹔那么這個(gè)報(bào)告長度為三個(gè)位,可以同時(shí)呈現(xiàn)出三個(gè)按鍵的狀態(tài)〔原狀或被按下〕。LogicalMinimumLogicalMaximum在說明每個(gè)報(bào)告字段的數(shù)值范圍,這是純數(shù)值所以稱為規(guī)律數(shù)值(logicalvalue)。音量增減鍵的例子中LogicalMinimum(-1),LogicalMaximum(1)表示只會(huì)消滅-1,0,1三種數(shù)值,所以用到二位〔ReportSize(2)〕,0b11代表-1,0b000,0b011。在音量旋鈕例子中,雖然用7位作一字段,但是旋鈕僅會(huì)產(chǎn)生0100的數(shù)值,由于LogicalMinimum(0)LogicalMaximum(100)nullvalue。當(dāng)要將同一種報(bào)告分成數(shù)個(gè)局部,則每一個(gè)局部要賜予一個(gè)識(shí)別值,這時(shí)就需用到卷標(biāo)ReportID,10ReportIDReportID視為0,所以ReportID(0)被要求不能使用。這個(gè)標(biāo)簽對(duì)掌握型管線才有意義,由于它可以在懇求報(bào)告時(shí)指定ReportID的值。對(duì)于中斷型管線,其為周期性傳輸報(bào)告,所以每次都會(huì)將所屬報(bào)告?zhèn)魍辏瑳]有僅傳輸ReportID標(biāo)簽就無意義。其它的全局工程卷標(biāo)可分為關(guān)心工具〔Push和Pop〕和物理量說明〔PhysicalMinimum,PhysicalMaximum,UnitExponentUnit〕。Push卷標(biāo)將『工程狀態(tài)表』存放到緩存器(stack)Pop卷標(biāo)反過來將緩存器最頂層的『工程狀態(tài)表』取回來取代目前之狀態(tài)表。這二個(gè)標(biāo)簽對(duì)很長的報(bào)告描述符才有UniversalSerialBusHIDUsageTablesAppendixA.7節(jié)中范例則可獲得正確使用方式。不同廠家的鼠標(biāo)有不同的區(qū)分率,假設(shè)要讓主機(jī)知道鼠標(biāo)的區(qū)分率,就必需用到物理量的標(biāo)簽。不使〔例如溫度計(jì)〕r的算法如下r=((lM-lm)/(PM-Pm))X10iUnit其中l(wèi)m=LogicalMinimum,lM=LogicalMaximum,pm=PhysicalMinimum,pM=PhysicalMaximum,i=UnitExponent400-dpi3。3:解析度的范例LogicalLogicalMinimum(-127)R=((127-(-127))/(3175-(-3175))X10-4LogicalLogicalMinimum(127)=400countsperinchPhysicalMinimum(-3175)PhysicalMinimum(3175)Logicalphysical值:UnitExponent(-4)〔PM-Pm/2/10i=((127-(-127))/400)/2=0.3173Unit(inch)à|PM|=|Pm|=3175,i=4UnitExponenti=0﹔PhysicalMinimumPhysicalMaximum有一個(gè)以上未定義,則視為PM=lMpm=lm。所以標(biāo)簽PhysicalMinimumPhysicalMaximum肯定要同時(shí)定義,否則無意義。這些卷標(biāo)的括號(hào)內(nèi)數(shù)字為有符號(hào)的整數(shù),可以是一個(gè)字節(jié)或二至四個(gè)字節(jié),字節(jié)數(shù)Unit7個(gè)四位(nibbles)48個(gè)四位未被使用到。4Unit的信息格式NibbNibbe76543210Lumin0ousIntensityCurrTempeTimMasLengSystent rature e s th emHID共享了四種單位系統(tǒng),最低的四位就是打算使用的單位系統(tǒng)(System),不同的系統(tǒng)中固然物理5。5:物理量的單位之編碼法System0x00x10x20x30x4LengthNone公分徑度英寸角度MassNone公克公克SlugSlugTimeNone秒秒秒秒NoneSILinearSIRotationEnglishLinearEnglishRotationNoneSILinearSIRotationEnglishLinearEnglishRotationTemperatureNone〔確定溫度〕溫度〕華氏華氏CurrentNone安培安培安培安培LuminousintensityNoneCandelaCandelaCandelaCandela--------012345678765432100000000000000008h9hahbhchdhehfh0h1h2h3h4h5h6h7hUnit(data)data0x110x13,這二者中Length11,即cm1in10x0101,加速度單位為公分除0xE011E代表-2。所以力氣單位為質(zhì)量〔公克〕乘于加速度〔公分/平方秒〕的碼0xE1110xE121,其等義于s?2gcm2和單位系統(tǒng)為SILinear。主工程主工程中產(chǎn)生報(bào)告數(shù)據(jù)格式的三個(gè)卷標(biāo)〔Input,Output,和Feature〕具有共通的數(shù)據(jù)定義,這些數(shù)據(jù)和其代碼列于表6中。目前用到9個(gè)位來表示這些數(shù)據(jù)。假設(shè)第九位(bit8)為0,則僅需用一個(gè)字節(jié)來表1,就需用到二個(gè)字節(jié)來表示該數(shù)據(jù)。6:主工程的信息代碼BBit8765432100BitFieldNonVolatileNoPrefNullPositionerredStateLinNoAbsArraear Wrap oluteyDataBuff1eredBytesVolNull NoPreferredNonLinearWrRelaVariConatileStateaptiveablestantData/Constan〔Data〔ConstantConstant都用于Feature的報(bào)告,或是用于填充位(padding),使報(bào)告長度以字節(jié)為單位。Array/Variabl〔或是每個(gè)字段僅表示一個(gè)操作〔設(shè)為Variable〕Variable,則ReportCount的數(shù)據(jù)值等于報(bào)告數(shù)據(jù)的字段數(shù)。假設(shè)是Array,則ReportCount的數(shù)據(jù)值表示可以同時(shí)被觸發(fā)的最多操作數(shù)目。后文中鍵盤之Array的用法。Absolute/Relative:主工程的數(shù)據(jù)是以相對(duì)于固定的基準(zhǔn)點(diǎn)方式供給確定數(shù)值〔設(shè)為Absolute〕,或是供給相對(duì)于前次報(bào)告的相對(duì)值〔Relative〕?!痉独f明】前文中的音量操控范例,由于都是Data和Variable,二者的操作值皆為變化值,且一個(gè)字段僅表示一個(gè)操作。但是音量增減鍵的例子為Relative,所以假設(shè)報(bào)告值由0變成+1,則音量增大一個(gè)刻度,反之由0變作-1則音量減小一個(gè)刻度,因而音量大小因輸入值而作相對(duì)的變化。然而音量旋鈕的例子為Absolute,當(dāng)輸入值為最小值0時(shí),為靜音,而輸入值為最大值100時(shí),為最大音量,其余值作百分比的音量調(diào)整,輸入值和音量成確定關(guān)系。NoWrap/Wrap:主工程的數(shù)據(jù)值到達(dá)極值后會(huì)轉(zhuǎn)為極低值,反之亦同,稱作卷繞〔設(shè)為Wrap〕。360°旋轉(zhuǎn),輸出值從010,假設(shè)設(shè)定為Wrap10后,在同方向旋轉(zhuǎn)則值變0010。Linear/Nonlinear:主工程的數(shù)據(jù)與操作刻度為線性關(guān)系〔設(shè)為 Linear〕,或?yàn)榉蔷€性〔設(shè)為Nonlinear〕。PreferredState/NoPreferred:主工程對(duì)應(yīng)的操作再不被觸發(fā)時(shí)會(huì)自動(dòng)恢復(fù)到初始狀態(tài)〔設(shè)為(self-centering)PreferredState?!痉独f明】再以音量操作為例,音量增減鍵的例子都沒標(biāo)注NoWrap,Linear,PreferredState,但是沒有標(biāo)注即認(rèn)定其屬于默認(rèn)值,所以等同于是這些設(shè)定,只是這些設(shè)定對(duì)此例的操作無意義,所以不NoWrap,Linear,NoPreferred,可見旋鈕不是循環(huán)旋轉(zhuǎn),輸出值與旋轉(zhuǎn)角呈線性關(guān)系,旋鈕釋放開時(shí)會(huì)停留在釋放前位置〔NoPreferred〕。NoNullPosition/NullState:主工程對(duì)應(yīng)的操和有一個(gè)狀態(tài),其不會(huì)送出有意義的數(shù)據(jù),即數(shù)據(jù)將不LogicalMinimumLogicalMaximum之間,這種操控要標(biāo)注NullStateNoNullPosition。例如幾個(gè)按鍵,而無鍵被按下的用途沒有聲明在Usage之列,則可以在主工程的數(shù)據(jù)中設(shè)NullState,將無鍵被按下的狀態(tài)排解在LogicalMinimum和LogicalMaximumUniversalSerialBusHIDUsageTables文件的AppendixA.3節(jié)中范例。NonVolatile/Volatile:主工程Feature的數(shù)據(jù)不允許被主機(jī)轉(zhuǎn)變〔設(shè)為NonVolatile〕,或是允許被主機(jī)轉(zhuǎn)變〔Volatile〕。留意主工程InputOutput,此標(biāo)注設(shè)定無意義,所以bit70。BitField/BufferedBytes:主工程的數(shù)據(jù)格式要以字節(jié)為單位,缺乏構(gòu)成字節(jié)時(shí)自動(dòng)填充成字節(jié)則設(shè)BufferedBytes。最終來談?wù)勚鞴こ痰钠渌€(gè)卷標(biāo):CollectionEndCollection。以鼠標(biāo)而言,在實(shí)體上是一個(gè)指針(pointer),只是應(yīng)用為計(jì)算機(jī)鼠標(biāo)﹔而這個(gè)指針含有三個(gè)按鍵和二個(gè)平移軸X和Y。所以指針的報(bào)告是由不同格式的數(shù)據(jù)所構(gòu)成,因而需要用到CollectionEndCollection將幾個(gè)Input工程集結(jié)成一組,其CollectionEndCollection將指針括起來說明其應(yīng)用為鼠標(biāo)。EndCollection沒有跟隨任何資料。但是卷標(biāo)Collection跟隨一個(gè)字節(jié)的數(shù)據(jù),例如指針的數(shù)Physical,而鼠標(biāo)的為ApplicationCollection7:7:報(bào)告集合的名稱與代碼PhyPhyApplicLoRNUsUsicalationgicaleportamed ageArrary ModifiersageSwitchReserVendor-defved ined0x00x0碼00x010x0x000x07-02x03045x060x7f0x80-0xff途CPCACLNUaryUSMCollection的數(shù)據(jù)名稱很難有一個(gè)準(zhǔn)則來給定,UniversalSerialBusHIDUsageTables文檔中將各種用途的用途種類(usagetype)列出,使用者必需依據(jù)用途種類來指定Collection的數(shù)據(jù)名稱,例如鼠標(biāo),鍵盤和玩耍桿的用途種類為CA,所以要用Collection(Application),而指針為CP,所以用Collection(Physical)。編碼工程的編碼形式如下:Bits2322212019181716 15141312111098 7654 32 10[data][data][data]bTagbTypebSizeBytes 2 1 0最低字節(jié)分別標(biāo)注工程大小(bSize),工程類別(bType),和工程卷標(biāo)(bTag)﹔bTag42個(gè)位。BSize用來指出工程的數(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ù)﹔Unit4個(gè)字節(jié)來表示其資料。bTag1中描述,例如Input的標(biāo)簽代碼『0x8?』中8即為bTag之值﹔FeaturebTag=11UnitbTag=6bType=0bType=1,而區(qū)域bType=21中的主工程卷標(biāo)代碼中的『?』可以改為『00nnB』,全局工程的可以改為『01nnB』,而區(qū)域工程的可以改為『10nnB』,其中nn代表bSize。實(shí)際范例ceE中的整合鼠標(biāo)的鍵盤裝置的范例。這個(gè)裝置只有一個(gè)組態(tài)描述符,但是這個(gè)組態(tài)具有二個(gè)接口,一個(gè)為鍵盤接口〔接口編號(hào)為0x00〕,另一個(gè)為鼠標(biāo)接口〔接口編號(hào)為0x01〕。每一個(gè)接口都有一個(gè)自己的中斷型輸入端點(diǎn),輸出0。這個(gè)整合鼠標(biāo)的鍵盤裝置的標(biāo)準(zhǔn)描述符,請(qǐng)參考附件中的『USB標(biāo)準(zhǔn)描述符之技巧』文件。在該文中所使用的范例即為整合鼠標(biāo)的鍵盤裝置,只是僅列出一個(gè)接口描述符〔即編號(hào)為0x00的鍵盤接口〕0x01的鼠標(biāo)接口在該文中沒有列出,讀者可以自行參考本文所附的描descriptor.asm〔interface_descriptor01hid_descriptor01endpoint_descriptor01處〕。8:范例的輸入報(bào)告格式鍵盤〔輸入報(bào)告〕鼠標(biāo)〔輸入報(bào)告〕鍵盤〔輸入報(bào)告〕鼠標(biāo)〔輸入報(bào)告〕B76543210Byte7654321yte0Modifierkeys0PadButtons1Reserved1Xdisplacement2Keycode12Ydisplacement3Keycode24Keycode35Keycode46Keycode577Keycode69:范例的輸出報(bào)告格式Byte765432100PadLED’s鍵盤輸出報(bào)告8列出輸入報(bào)告的數(shù)據(jù)格式。而輸出報(bào)告只有鍵盤接口需要,表9為輸出報(bào)告的數(shù)據(jù)格式。由于有二個(gè)接口,所以有二個(gè)報(bào)告描述符,分屬于不同的界面,二個(gè)報(bào)告描述元都列于表10中。鍵盤的報(bào)告描述元中整個(gè)報(bào)告集合的用途為(GenericDesktop:Keyboard)Collection的ApplicatioGenericDestoKeyboar〔Keyboard也可為用途類頁〕,所以在工程Collection(Application)下重聲明用途頁Usage(Keyboard)。依據(jù)UniversalSerialBusHIDUsageTables文件,鼠標(biāo)是指針的一種,只是應(yīng)用為計(jì)算機(jī)的鼠標(biāo),所以報(bào)告的內(nèi)層集合的用途為(GenericDesktop:Pointer),外層的應(yīng)用性集合的用途為(GenericDesktop:Mouse)。留意鼠標(biāo)的按鈕和位移軸又分屬不同的用途類頁,所以在內(nèi)層集合中還要重聲明用途類頁。按鈕的用途Buttons,而二個(gè)位移軸所屬的用途類業(yè)為GenericDesktop。鍵盤輸出報(bào)告鍵 盤鼠標(biāo)項(xiàng)目鍵 盤鼠標(biāo)項(xiàng)目編碼項(xiàng)目編碼UsageDesktop),(Generic0x0105UsageDesktop),(Generic0x0105InputAbsolute),(Data,Variable,0x0281ReportSize(1),0x0175ReportSize(8),0x0875ReportCount(3),0x0395Usage(Keyboard),0x0609Usage(Mouse),0x0209Collection(Application),0x01A1Collection(Application),0x01A1Usage(Keyboard),0x0705Usage(Pointer),0x0109UsageMinimum(224),0xE019Collection(Physical),0x00A1UsageMaximum(231),0xE729Usage(Buttons),0x0905LogicalMinimum(0),0x0015UsageMinimum(1),0x0119LogicalMaximum(1),0x0125UsageMaximum(3),0x0329ReportSize(1),0x0175LogicalMinimum(0),0x0015ReportCount(8),0x0895LogicalMaximum(1),0x0125LogicalMaximum(101),0x6525Usage(X),0x3009ReportSize(8),0x0875Usage(Y),0x3109ReportCount(6),0x0695LogicalMinimum(-127),0x8115Input(Data,Array),0x0081LogicalMaximum(127),0x7F25Usage(LEDs),0x0805ReportSize(8),0x0875UsageMinimum(1),0x0119ReportCount(2),0x0295ReportCount(1),0x0195Inputbsolute),(Data,Variable,0x0281Input(Constant),0x0181ReportSize(5),0x0575UsageMinimum(0),0x0019ReportCount(1),0x0195UsageMaximum(101),0x6529Input(Constant),0x0181LogicalMinimum(0),0x0015UsageDesktop),(Generic0x0105UsageMaximum(5),0x0529InputRelative),(Data,Variable,0x0681LogicalMinimum(0),0x0015EndCollection,0xC0LogicalMaximum(1),ReportCount(1),0x0195Inputbsolute),(Data,Variable,0x0281Input(Constant),0x0181ReportSize(5),0x0575UsageMinimum(0),0x0019ReportCount(1),0x0195UsageMaximum(101),0x6529Input(Constant),0x0181LogicalMinimum(0),0x0015UsageDesktop),(Generic0x0105UsageMaximum(5),0x0529InputRelative),(Data,Variable,0x0681LogicalMinimum(0),0x0015EndCollection,0xC0LogicalMaximum(1),0x0125EndCollection0xC0ReportSize(1),0x0175ReportCount(5),0x0595OutputVariable,Absolute),(Data,0x0291ReportSize(3),0x0375ReportCount(1),0x0195Output(Constant),0x0191EndCollection0xC0((8)。請(qǐng)?zhí)貏e留意,最低位對(duì)應(yīng)到UsageMinimum的聲明,而最高位所對(duì)應(yīng)的為UsageMaximum的數(shù)據(jù)8Input(Data,Variable,Absolute)。鍵盤的輸入報(bào)告中次高的字節(jié)被保存,該字節(jié)的值無意義,也不需更,所以用Input(Constant)來填充(padding)66101個(gè)鍵,101101鍵再加上無鍵被壓下狀態(tài)〔0x00〕6個(gè)鍵。鍵盤報(bào)告描述符中Input(Data,Array)即在聲明這6個(gè)字節(jié)的數(shù)據(jù)格式,留意這個(gè)數(shù)據(jù)格式的規(guī)律值聲明和用途代碼聲明具有一樣的數(shù)據(jù)值〔0101〕。鍵盤有一個(gè)輸出報(bào)告,長度為1個(gè)字節(jié),但是只用到最低5LED的操控,所以最高3Output(Constant)KeyCodes,而是ofLEDsUsageOutput(Data,Variable,Absolute)。這個(gè)工
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沈陽理工大學(xué)《管理統(tǒng)計(jì)學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《單片機(jī)原理與接口技術(shù)》2022-2023學(xué)年期末試卷
- 廣東外語外貿(mào)大學(xué) 研究生 定向 合同
- 合同標(biāo)簽替換規(guī)范
- 共享單車管理
- 2024貨船租賃合同
- 綠化養(yǎng)護(hù)工程XX管養(yǎng)項(xiàng)目投標(biāo)文件
- 2024物流運(yùn)輸合同格式
- 2024廣西無公害稻米種植收購合同范本
- 2024打印機(jī)復(fù)印機(jī)銷售合同
- 商業(yè)模式與創(chuàng)新基礎(chǔ)知識(shí)培訓(xùn)
- 2011年中招英語質(zhì)量分析會(huì)
- 合規(guī)與監(jiān)管部門魚骨圖KPI設(shè)計(jì)
- (細(xì)節(jié)版)道路維修工程計(jì)劃
- 《網(wǎng)絡(luò)組建與維護(hù)》課件
- 游戲開發(fā)職業(yè)生涯規(guī)劃
- YY 0128-2023 醫(yī)用診斷X射線輻射防護(hù)器具裝置及用具
- 江蘇省蘇州市2023-2024學(xué)年九年級(jí)上學(xué)期1月期末道德與法治試題
- 安全信息與事件管理(SIEM)
- 數(shù)據(jù)結(jié)構(gòu)課程思政課程設(shè)計(jì)
- 2022年天津市專技人員繼續(xù)教育公需課答案
評(píng)論
0/150
提交評(píng)論