USBHID协议范本合同模板协议范本中文版本_第1页
USBHID协议范本合同模板协议范本中文版本_第2页
USBHID协议范本合同模板协议范本中文版本_第3页
USBHID协议范本合同模板协议范本中文版本_第4页
USBHID协议范本合同模板协议范本中文版本_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、USBHID协议范本合同模板协议范本中文版本USBHID协议范本合同模板协议范本中文版本USBHID协议范本合同模板协议范本中文版本8章USB接口HID设施HID(HumanInterfaceDevice,人机接口设施)是接与人交互的USB设施,比方键盘、鼠标与游戏杆等。在低。其余,HID设施其实不用然要有人机交互功能,只需符合设施。USB设施中常用的设施种类,是直USB设施中,HID设施的成本较HID种类规范的设施都是HIDWndows操作系统最初支持的HID设施。在windows98以及此后的版本中内置有HID设施的驱动程序,应用程序能够直接使用这些驱动程序来与设施通讯。在设计一个USB接

2、口的计算机外面设施时,假如HID种类的设施能够知足需要,其设计为HID种类设施,这样能够省去比较复杂的USB驱动程序的编写,直接利用操作系统对标准的HID种类USB设施的支持。能够将Windows8.1HID设施简介HID设施的特色互换的数据积蓄在称为报表(Report)的构造内,设施的固件必然支持HlD报表的格式。主机经过控制和中止传输中的传达和恳求报表来传达和接收数据。报表的格式特别灵巧。每一笔事务能够携带小量或中量的数据。低速设施每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设施每一笔事务最大是1024B。一个报表能够使用多笔事务。设施能够在未预期的时间传达信息给主机,比方键

3、盘的按键或是鼠标的挪动。因此主机会准时轮询设施,以获得最新的数据。HID设施的最大传输速度有限制。主机能够保证低速的中止端点每10ms内最多1笔事务,每一秒最多是800B。保证全速端点每lms一笔事务,每一秒最多是64000B。保证高速端点每125us三笔事务,每一秒最多是。HID设施没有保证的传输速率。假如设施是设置在10ms的时距,事务之间的时间可能等于或小于10ms。除非设施是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。这是最快的轮询速率,因此端点能够保证有正确的带宽可供使用。HID设施除了传达数据给主机外,它也会从主机接收数据。只需能够符合HlD种类规范的设施都能够是

4、HID设施。设施除了HlD接口以外,它可能同时还包含有其余的USB接口。比方影像显示设施可能使用HID接口来做亮度、比较度的软件控制,而使用传统的影像接口来传达要显示的数据。USB扩音器能够使用及时传输来播放语音,同时使用HID接口来控制音量、低音等。HIDDeviceClassDefinitionforHumaninterfaceDevicesHIDUsageTables此中前者是HID的基本规范文件,后者能够是前者的附件,为开发人员供给实质的控制种类的描绘。文件是用来定义让主机认识以及使用HID数据的数值。这两份文件是由DeviceWorkingGroup制定的,能够在网址#Class_D

5、efinition下载。USBHID设施的硬件要求HID接口必然符合DeviceClassDefinitionforHumaninterfaceDevices规范内所定义的HID类其余需求。在此文件内描绘了所需的描绘符、传输的频次以及传输的种类等。为了符合规范,HID接口的端点与描绘符都必然符合数个要求。所有的HID传输都是使用默认控制管道或是一此中止管道,HID设施必然有一此中止输入端点来传达数据到主机,中止输出端点则不是必需的。主机外设默认控制管道HID种类HID种类驱动程序设施中止管道图8-1HID传输的传输种类表8-1HID设施的传输种类传输数据根源数据种类能否需种类要管道设施(输入)

6、没有严格时间限制的数据是控制主机(输出)没有严格时间限制的数据或是没有中止输出管道时的任何数据中止设施(输入)准时或低延缓的数据是主机(输出)准时或低延缓的数据是主机与设施之间所互换的数据,能够分红两各种类:低延缓的数据,必然赶快地到达目的;配置或其余的数据,没有严格时间限制的需求。中止管道是控制管道以外的另一种数据互换的方式,特别合适使用在接收端需要准时或是尽可能及时收到数据的时候。中止输入管道携带数据到主机,中止输出管道则是携带数据到设施。在总线忙的时候,控制管道可能会被延缓,而中止管道保证会有可获得的带宽。HID不需要必然有中止输出管道。假如没有中止输出管道,主机会在控制管道上使用HID

7、设施独有的Set_Report恳求来传达所有的报表。HID固件的要求主机的驱动程序要与HID设施通讯,设施的固件必然符合以下需求:设施的描绘符必然鉴识该设施包含有HID接口。除了默认控制管道外,固件必然其余支持一此中止输入管道。固件必然包含一个报表描绘符来定义要传达与接收的设施数据。假如要传达数据,固件必然支持Get_Report控制传输与中止输入传输。假如要接收数据,固件必然支持Set_Report控制传输与选择性的中止输出传输。所有的HID数据都必然使用定义过的报表格式来定义报表中数据的大小与内容。设施能够支持一个或多个报表。在固件中的一个报表描绘符用来描绘此报表,以及怎样使用报表数据的信

8、息。在每一个报表中的一个数值,定义此报表是一个输入(Input)、输出(Output)或是特色(Feature)报表。主机在输入报表中接收数据,在输出报表中传达数据,特色报表能够在任何方向传达。Windows98以及此后版本的HID驱动程序使用中止传输来传达输入报表。输出报表的传输种类要依据设施支持的端点与Windows的版本而定。Windows98Gold只符合HID规范,它的HID驱动程序使用控制传输来传达输出报表。Windows98SE、Wndows2000符合HID规范,HID驱动程序在有中止输出端点时使用中止传输,不然使用控制传输来传达输出报表。特色报表都是使用控制传输。8.2HID

9、设施描绘符HID设施连结到USB主机后,主机经过发送Get_Descriptor恳求读取HID设施的描绘符,认识描绘符对认识USB设施是至关重要的。HID设施的描绘符HID设施除了支持USB设施的5种标准描绘符以外,还支持HID设施独有的3种描绘符。这些描绘符是:USB标准描绘符:设施、配置、接口、端点和字符串描绘符。HID独有的描绘符:HID、报表(Report)和实体(Physical)描绘符。从描绘符的关系关系看,HID描绘符是关系于接口。因此假如一个HID设施有2个端点,设施不需要每个端点有一个HID描绘符。接口描绘符InterfaceHID描绘符端点描绘符HidEndpointHID

10、、报表和实体描报表描绘符实体描绘符述符是HID设施特有ReportPhysical的描绘符图8-2HID描绘符的关系关系从前面的USB描绘符能够看出一个规律,描绘符的第一、二字节分别是描绘符的长度和种类,描绘符的种类字段(bDescriptorType)表示描绘符的种类,下表列出了不同样描绘符的种类字段数值。种类标准种类HID特定表8-2HID的描绘符描绘符应用数值设施Device所有设施必然有,只好一个01配置Configuration所有设施必然有,最少一个02字符串String可选择03接口Interface每一个接口一个04端点Endpoint除端点0以外的每个端点一个05设施限制De

11、vice_Qualiffier同时支持全速与高速的设施必然有06Other_Speed_Configuration一个07Interface_power08HIDHID设施必然有21Hub29报表ReportHID设施必然有22实体Physical可选择的23对于一个HID设施,设施描绘符与配置描绘符没有HID特定的信息。其设施描绘符的bDeviceClass和bDeviceSubClass字段的值为0,接口描绘符的bInterfaceClass字段值为03,表示设施的该接口是HID种类。在接口描绘符中其余包含HID特定信息的字段还有子种类码(blnterfaceSubClass)与协议码(b

12、lnterfaceProtocol字段)。在接口描绘符中子种类码字段等于1表示此设施支持启动接口(BootInterface)。假如设施有启动接口,即使主机的HID没有加载驱动程序,设施也能够使用。这类情况可能发生在计算机是由DOS直接启动,在启动时观看系统设置画面或使用Wndows的安全模式时。含有启动接口的键盘或鼠标能够使用BIOS也好多主机支持的默认简单协议。HID规范定义了键盘与鼠标的启动接口协议。假如设施没有启动接口,并且接口描绘符中协议码字段是1,表示设施支持键盘接口,协议码字段是2,表示支持鼠标接口。接口描绘符中协议码字段是0,表示设施不支持启动协议。在HIDUsageTable

13、s规范中定义了键盘与鼠标的启动描绘符(BootDescriptor)。BIOS不需要从设施中读取描绘符,因为它知道启动协议,并且假定设施支持启动协议。因此要启动的设施不需要在固件内包含启动接口描绘符,它只需在主机还没有要求在报表描绘符中的定义协议时支持启动协议即可。在操作系统加载HlD驱动程序后会使用Set_Protocol恳求,将设施由启动协议变换成报表协议。HID描绘符HID描绘符的主要作用是用来鉴识HID通讯所使用的额外描绘符。下表是HID描绘符构造。8-3HID描绘符构造偏字数值移字段节说明种类量数0bLength1Numeric描绘符字节数1bDescriptorType1Const

14、ant0 x21=HID描绘符2bcdHID2NumericHID规范版本号(BCD)4bCountryCode1Numeric硬件设施所在国家的国家代码5bNumDescriptors1Numeric种类描绘符数量(最罕有一个报表描绘符)6bDescriptorType1Constant种类描绘符的种类7wDescriptorLength2Numeric报表描绘符的总长度9bDescriptorType.1Constant附带的描绘符的种类,可选的10wDescriptorLength.2Numeric附带的描绘符的总长度,可选的bcdHID:设施与其描绘符所依据的HID规范的版本号码,此数

15、值是格式字符。比方版本的bcdHID是0110h。(2bytes)bCountryCode:硬件目的国家的鉴识码。假如不说明,该字段为bDescriptorType:HID描绘符隶属的描绘符的种类(报表或实体)4个16进制的0。每一个HIDBCD都必须最少支持一个报表描绘符。一个接口能够支持多个报表描绘符,以及一个或多个实体描绘符。HID描绘符的偏移量为9和10的bDescriptorType和wDescriptorLength能够重复存在多个。报表描绘符报表描绘符定义了履行设施功能的数据格式和使用方法。报表描绘符和USB的其余描绘符是不同样样的,它不是一个简单的表格,报表描绘符是USB所有描

16、绘符中最复杂的。报表描绘符特别复杂而有弹性,因为它需要办理各种用途的设施。报表的数据必然以简短的格式来积蓄,这样才不会浪费设施内的积蓄空间以及数据传输时的总线时间。实质上能够这样理解,报表内容的简短,是经过报表描绘符全面的、复杂的数据描绘实现的。报表描绘符必然先描绘数据的大小与内容。报表描绘符的内容与大小因设施的不同样而不同样,在进行报表传输从前,主机必然先恳求设施的报表描绘符,只有获得了报表描绘符才可正确分析报表的数据。报表描绘符是报表描绘项目(Item)的会合,每一个描绘项目都有相对一致的数据构造,项目好多,经过编码实现。(1)项目报表描绘符由描绘HID设施的数据项目(Item)构成。项目

17、的第一个字节(项目前缀)由三部分构成:项目标记(itemTag):说明项目的功能,项目种类(itemType):说明项目的数据种类,项目长度(itemSize):说明项目的数据部分的长度。HID的项目有短项目和长项目两种,此中短项目的格式以以以下图。位序76543210字段Data(能够是0、1、2、4个字节)bTagbTypebSize图8-3HID报表短项目格式短项目的数据字节数由bSize的值定义,bSize为0、1、2、3时Data部分的字节数分别为0、1、2、4个字节。(nn为数据长度)短项目的项目种类由bType定义,bType为0、1、2时分别为Main、Global和Local

18、种类。(见后边的表8-4HID项目列表)长项目能够携带好多的数据,其格式以以以下图。位序76543210字段DatabLongItemTagbDataSize1111111字节数12551101图8-4HID报表长项目格式项目中的第一个字节为上图中的特定值时表示该项目是一个长项目。长项目中的bDataSize说明Data部分的字节数,bLongItemTag在HID规范中没有定义。下边是经过汇编实现的一个简单的报表描绘符,描绘符的每一行是一个项目,该描绘符描绘了一个从设施接收2个字节的输入报表和发送2个字节到设施的输出报表。HID_Report_desc_table:db06h,A0h,FFh

19、db09h,A5hdbA1h,01hdb09H,A6hdb09h,A7hdb15h,80hdb25h,7Fhdb75h,08hdb95h,02hdb81h,02hdb09h,A9hdb15h,80hdb25h,7Fhdb75h,08hdb95h,02hdb91h,02h;UsagePage(Vendordefined)定义设施功能;Usage(VendorDefined)定义用法;Collection(Application)开一个会合;Usage(Vendordefined)定义用法;输入报表;Usgae(Vendordefined)定义用法;LogicalMinimum定义输入最小值=-1

20、28;LogicalMaximum定义输入最大值=+127;ReportSize定义报表数据项大小=8;ReportCount定义报表数据项个数=2;Input(Data,Variable,Absolute)输入项目;输出报表;Usgae(Vendordefined)定义用法;LogicalMinimum定义输入最小值=-128;LogicalMaximum定义输入最大值=+27;ReportSize定义报表数据项大小=8;ReportCount定义报表数据向个数=2;Output(Data,Variable,Absolute)输出项目dbC0h;EndCollection关休会合(2)项目的

21、分类报表的项目有Main、Global和Local三大类,每一类都有多个不同样的项目,实现不同样的描绘。Main类项目用于定义报表描绘符中的数据项。也能够组合此中的若干数据项成为一个会合。Main项目能够分为带数据的Main项目和不带数据的Main项目。带数据项的Main用于生成报表中的数据项,包含Input、Output和Feature项目。不带数据的Main项目不生成报表中的数据项,包含Collection和EndCollection项目。Global类项目实现对数据的描绘,用来鉴识报表并且描绘报表内的数据,包含数据的功能、最大与最小赞成值以及数据项的大小与数量等。改变由Main类项目生成

22、的项目状态表。Global类项目描绘对后续的所有项目有效,除非碰到有新的Global类项目。Local类项目定义控制的特色,这一类项目的作用域不超出下一个Main项目,因此在每一Main项目从前可能有多个Local项目。Local项目用于描绘后边的Input、Output和Feature项目。下表列出的是所有的项目的前缀字和简要功能说明。表8-4HID项目项目前缀,nn项目标记(Tag)为数据长度种类Input100000nnOutput100100nnMain类项目Feature101100nn(00)101000nnCollectionEndCollection110000nn项目列表功能

23、说明定义输入报表,主机利用该信息分析设施供给的数据。主机向控制端口发送Get_Report实现输入创立输出报表,经过向设施发送Set_Report实现输出定义送往设施的设置信息定义2个以上数据(Input、Output和Feature)的关系为会合,Collection开始一个会合,此后的EndCollection结束会合。Collection项目的数据部分说明Collection的种类Global类项目01)Local类项目10)指定设施的功能(06h,A0h,FFh)UsagePage000001nn其余因为Usage项目有32位数据值,UsagePage项目用于为Usage项目在报表描绘

24、符中占居积蓄空间。用于寄存后续的Usage项目的高16位。LogicalMinimum000101nn定义变量或数组项目的逻辑最小值和最大值LogicalMaximum001001nn(-128,+127)(15h,80h)(25h,7Fh)PhysicalMinimum001101nn定义变量或数组项目的物理最小值和最大值,分别PhysicalMaximum010001nn和LogicalMinimum、LogicalMaximum对应UnitExponent010101nn定义数值是鉴于10的指数Unit011001nn单位ReportSize011101nn指定报表数据地区所包含的位数(

25、=8)ReportID100001nn报表ID,该项目在报表中插入一个字节的报表IDReportCount100101nn报表中数据域的数量(=2)Push101001nn将Global项目状态表送入货仓Pop101101nn从货仓恢复Global项目状态表110001nn保存111101nn用法索引值,表示对项目或会合建议的用法,用于Usage000010nn当一个项目描绘多个控制,对每一个变量和数组元素都有建议的用法(09h,A7h)UsageMinimum000110nn定义阵列或位图中控制操作的第一个和最后一个用UsageMaximum001010nn法DesignatorIndex0

26、01110nn确立用于控制的实体,指向物理描绘符中的目标DesignatorMinimum010010nn定义阵列或位图目标的初步和停止索引值DesignatorMaximum010110nnStringIndex011110nn确立字符串描绘符中的索引值StringMinimum100010nn定义用于阵列或位图控制中字符串序列索引值的最StringMaximum100110nn小值和最大值Delimiter101010nn定义一组Local项目的开始和结束,1=开始,0=结束101010nn保存111110nn在这些项目中,UsagePage用来指定设施的功能,而Usage项目用来指定个别

27、报表的功能。UsagePage项目相当于是HID的子会合,Usage相当于是UsagePage的子会合。报表描绘符的项目(1)Input、Outpot和Feature项目这3个项目用来定义报表中的数据字段。Input项目能够应用就任何控制、计数器读数或其余设施传给主机的信息。一个输入报表包含一个或多个Input项目,主机使用中止输入传输来恳求输入报表。Ouput项目用来定义主机传达给设施的信息。一个输出报表包含一个或多个Outpot项目。输出报表包含控制状态的数据。假如有中止输出管道,兼容主机使用中止输出传输来传达输出报表,不然使用Set_Report控制恳求。Feature项目应用到主机传达

28、给设施的信息,或是主机从设施读取Feature项目。一个特色报表包含一个或多个Feature项目,Feature项目平常是包合影响设施与其组件整体行为的配置。特色报表平常是控制能够使用实质的控制面板调整的设置,比方主机能够使用虚假控制面板来让用户选择控制特色。主机使用Set_Report与Get_Report恳求来传送与接收特色报表。在每一个Input、Output和Feature项目的前缀字此后是32位描绘数据,目前最多定义了9个位,余的位则是保存。位08的定义中只有位7不可以够应用于Input项目,除此之外其余的位定义都适应于Input、Output和Feature项目。表8-5Input

29、、Output和Feature项目的数据项说明数据字段含义说明位值名称00Data数据:表示项目的内容是可改正的(读/写)。1Constant常数:表示项目的内容是不可以改正的(只读)。0Array数组:报告所有控制的状态。如在键盘报表中每一个键在报表中占一位,报表传输所有键的状态,能够同时按下随意多个键。1变量:报告作用中的控制。如在键盘报表中只报告按下的键的编1Variable号,能够同时按下的键的数量等于报表的计数(Global类项目ReportCount)0Absolute2RelativeNoWrap31Wrap40Linear1Non-Linear绝对:表示数值以一个固定值为基准。

30、游戏杆平常是报告绝对数据(游戏杆目前的地点)。相对:表示数据的改变以上一个读数为基准。鼠标平常是报告相对数据(鼠标的挪动地点)。假如设置为1表示展转,当数值超出最小值到最大值的范围时将展转,假如最小值是0而最大值是10,超出最大值的下一个数值是0。线形:表示丈量的数据与报表的数占有线性的关系。非线性:表示丈量的数据与报表的数据没有线性的关系。精选状态:表示控制在没合用户交互时会回到一个特定的状态。50Preferred如按钮就有精选状态,在无操作时保持未按下的状态。Non-PreferredNoNullPosition61NullState70Non-Volatile非精选状态:它保持在上一个

31、用户选择的状态。如交替的开关就没有精选状态。无空状态地点:表示控制永久在传达有效的数据。空状态:表示控制支持一个没有传达有效数据的状态。如控制杆可能拥有一个多方向的按钮开关,在没有按下时在空状态,这时控制将传达一个在LogicalMinimum与LogicalMaximum范围以外的数值来表示它在空状态。不可以变的:表示设施只有在主机恳求时才改变数值。当主机传达一个报表并且不要改变不可以变项目时,假如该项目是定义成相对Relative)的,数值0表示不改变数据,假如不可以变项目是定义成绝对(Absolute)的,超出范围外的数值则表示不改变数据。可变的:表示设施能够自己改变数值,其实不是必然主

32、机传达报表1Volatile要求给设施来改变数值。比方设施控制面板能够由主机软件传达一个报表给设施,也能够由用户自己按设施上的实质按钮。0BitField位字段:表示每一个位或是一个字节内的一组位能够代表一份数据。8BufferedBytes缓冲字节:表示信息包含一个或多个字节,缓冲字节的报表大小1必然是8。931位保存注:该位不可以够应用到数组。:只应用于Output和Feature项目,对于Input项目该位保存。(2)Collection和EndCollection项目所有的报表种类都能够使用Collection与EndCollection项目来将有关的Main类型项目构成群组。这两个项

33、目分别用于翻开和关休会合。所有在Collection与EndCollection项目之间的Main种类项目都是Collection的一部分。Collection有3各种类:Application、Physical与Logical,其项目的数据项的值分别为1、0和2。厂商也能够自己定义Collection种类,数据项的值为80hFFh保存给厂约定义。EndCollection项目无数据项。ApplicationCollection包含有共同用途的项目或履行单调功能的项目。比方键盘的开机描绘符将键盘的按键与LED指示灯数据会合成一个ApplicationCollection。所有的报表必然在一个A

34、pplicationCollection内。PhysicalCollection包含在一个单调几何点上的数据项目,能够将每个地点的数据会合成一个PhysicalCollection。在设施报告多个传感器的地点的时候,使用PhysicalCollection指明不同样的数据来自不同样的传感器。LogicalCollection形成一个数据构造,包含由Collection所连结的不同样种类的项目。比方数据缓冲区的内容以及缓冲区内字节数量的计数。(3)UsagePage和Usage项目Usagepage项目的数据部分为12个字节,目前的定义所有都是一个字节。UsagePage定义了常用的设施功能,对

35、于UsagePage(以及其余项目)的详尽定义内容,能够查阅HIDUsagetables(),下表是来自HIDUsagetables的UsagePage定义。表8-6UsagePage定义PageIDPageName00Undefined01GenericDesktopControls02SimulationControls03VRControls04SportControls05GameControls06GenericDeviceControls07Keyboard/Keypad08LEDs09Button0AOrdinal0BTelephony0CConsumer0DDigitizer0

36、EReserved0FPIDPage10Unicode11-13Reserved14AlphanumericDisplay15-3fReserved40MedicalInstruments41-7FReserved80-83Monitorpages84-87Powerpages88-8BReserved8CBarCodeScannerpage8DScalepage8EMagneticStripeReading(MSR)Devices8FReservedPointofSalepages90CameraControlPage91ArcadeFEFFReservedFF00-FFFFVendor-d

37、efined对于UsagePage的每一个有效定义项,都有一个相应的下一级定义,如UsagePage的数据项数值为1,则设施定义为GenericDesktopControls,对于该类设施的详尽功能能够在HIDUsageTables中查到详尽的定义。下表是HIDUsageTables中对GenericDesktopControls设施的功能定义。表8-7GenericDesktopControls用法定义参阅HIDUsageIDUsageNameUsageUsageTablesType中的有关章节00Undefined01PointerCP02MouseCA03Reserved04Joysti

38、ckCA05GamePadCA06KeyboardCA07KeypadCA08Multi-axisControllerCA09TabletPCSystemControlsCA0A-2FReserved30XDV31YDV32ZDV33RxDV34RyDV35RzDV36SliderDV37DialDV38WheelDV39HatswitchDV3ACountedBufferCL3BByteCountDV3CMotionWakeupOSC3DStartOOC3ESelectOOC3FReserved40VxDVNotificationDV,DF48ResolutionMultiplierDV49

39、-7FReserved80SystemControlCA81SystemPowerDownOSC82SystemSleepOSCWakeUpOSC84SystemContextMenuOSC85SystemMainMenuOSC86SystemAppMenuOSC87SystemMenuHelpOSC88SystemMenuExitOSC89SystemMenuSelectOSC8ASystemMenuRightRTC8BSystemMenuLeftRTC8CSystemMenuUpRTC8DSystemMenuDownRTC8ESystemColdRestartOSCWarmRestartO

40、SC90D-padUpOOC91D-padDownOOC92D-padRightOOC93D-padLeftOOC94-9FReservedA0SystemDockOSCUndockOSCA2SystemSetupOSCA3SystemBreakOSCA4SystemDebuggerBreakOSCA5ApplicationBreakOSCA6ApplicationDebuggerBreakOSCA7SystemSpeakerMuteOSCHibernateOSCA9-AFReservedB0SystemDisplayInvertOSCB1SystemDisplayInternalOSCB2S

41、ystemDisplayExternalOSCB3SystemDisplayBothOSCB4SystemDisplayDualOSCB5SystemDisplayToggleInt/ExtOSCB6SystemDisplaySwapOSCPrimary/SecondaryB7SystemDisplayLCDAutoscaleOSCB8-FFFFReserved用法(Usage)定义了各种各种设施特色,对于UsagePage的每一项都定义了常用的各种用法。用法说了然3种信息,即控制、会合和数据。控制说明设施的状态,如on/off、Enable/Disable等。会合说明控制和数据的组合关系。上

42、表中的用法种类(UsageType)描绘了应用程序怎样办原因Main种类项目生成的数据,详尽的定义和详尽说明请参阅HIDUsageTables。(4)ReportID项目ReportID放在信息包中报表数据从前,设施能够支持多个同样种类的报表,每一个报表包含不同样的数据与其独有的ID。在报表描绘符中,ReportID项目作用于此后续所有的项目,直到碰到下一个ReportID为止。假如报表描绘符中没有ReportID项目,默认的ID值是0,描绘符不可以够定义一个为0的ReportID,输入报表、输出报表与特色报表能够分享同一个ReportID。在Set_Report和Get_Report恳求传输

43、中,主机在设置事务的wValue字段的低字节中指定一个ReportID。在中止传输中假如接口支持一个以上的ReportID,ReportID必然是传达报表中的第一个字节。假如接口只支持数值为0的默认ReportID,此ReportID不该当在中止传输中跟着报表一同传达。(5)LogicalMinimum和LogicalMaximum项目LogicalMinimum与LogicalMaximum项目定义报表的变量(Variable)或阵列(Array)数据的限制范围,此限制范围以逻辑单位来表示。比方设施报表的一个电流值读数是500mA,而一个单位是2mA,则LogicalMaximum值等于25

44、0。负数值以2的补码来表示。假如LogicalMinimum与LogicalMaximum都是正数,就不需要有正负号位。不论LogicalMinimum与LogicalMaximum是以有正负号或是无正负号的数值来表示,设施都能够正确地传输数据。数据的接收者必然知道数据能否能够是负值。(5)PhysicalMinimum和PhysicalMaximum项目PhysicalMinimum和PhysicalMaximum项目定义数值的限制范围,该限制范围使用Unit项目定义的单位来表示。上例中设施报表的一个电流值读数是500mA,单位是2mA,LogicalMaximum值等于250,而Physi

45、calMaximum值是500。LogicalMinimum与LogicalMaximum值说了然设施返回数值的界限,能够依据PhysicalMinimum和PhysicalMaximum值对数据进行偏移和比率变换。(6)UnitExponent项目UnitExponent项目定义了在使用逻辑范围和实质范围将设施的返回数值变换成实质数值时,使用10的多少次方对数值进行定标。UnitExponent的值的编码为4位补码,代表10的指数范围是-8+7。表8-8UnitExponent数值表代码00h01h02h03h04h05h06h07h08h09h0Ah0Bh0Ch0Dh0Eh0FH数值012

46、34567-8-7-6-5-4-3-2-1依据以上5个项目的值能够换算出报表传达数据(逻辑数据)与物理数据的变换关系。物理数据值=逻辑数据值分辨率分辨率=(LogicalMaximum-LogicalMinimum)(PhysicalMaximum-PhysicalMinimum)10UnitExponent)(7)Unit项目Unit项目指定报表数据在使用Physical与UnitExponent项目变换后使用什么胸怀单位,以及单位的幂指数值。Unit的数值部分能够长达4字节,依据4位为一段分段,可以分为8个半字节段,由高到低分别为半字节7、半字节6、半字节0。每一个半字节对应不同样的基本单

47、位,其数值表示单位的指数值,采纳4位2的补码表示,取值范围是-8+7之间。从半字节06由下表给出了详尽的定义,此中半字节0表示丈量系统,半字节7保存。比方在半字节0数值为1(表示采纳线性公制丈量系统)的条件下,半字节1表示长度(单位为厘米),假如其数值为1表示厘米,数值为2表示(厘米)2,成为面积单位。半字节3表示时间(单位为秒),假如其数值为-2,表示(秒)-2。8-9Unit单位的定义半字节丈量数值含义序号项目012340丈量系统线性、公制角度、公制线性、英制角度、英制1长度厘米半径英寸度2质量克石拉(slug)3时间无秒4温度开式度(Kelvin)华式度5电流安培6亮度烛光保存固然表中但

48、是定义了有限的基本单位,但能够经过这些基本单位的组合派生出大部分其余的常用单位。比方报表使用一个字节传达一个从-20到110华氏度温度值,能够定义以下报表描绘项目:LogicalMinimum=-128LogicalMaximum=127PhysicalMinimum=-20PhysicalMaximum=110UnitExponent=0Unit=30003hUnit的半字节0=3选择英制线性丈量系统,半字节4=3选择华氏温度单位。130(110+20)华氏度的数值范围线性散布到了256和有效数值地区,每一位相当于华氏度,这样就提升了分辨率。(8)ReportSize和ReportCount

49、项目ReportSize项目指定Input、Output与Feature项目字段的大小,以位为单位。ReportCount项目指定Input、Output与Feature项目包含的字段数量。比方两个8位的字段,ReportSize等于8,而ReportCount等于2。8个1位的字段,ReportSize等于1,而ReportCount等于8。Input、Output与Feature项目报表能够有多个项目,每一个项目能够有自己的ReportSize和ReportCount项目。(9)Push和Pop项目Push项目将一个Global项目状态表格的副本压入CPU的货仓内。格包含所有从前定义的Go

50、bal项目的目前设置。Pop项目恢复从前压入货仓的Global项目状态的积蓄状态。GIobal项目状态表(10)Usage、UsageMinimum和UsageMaximum项目这3个项目输入Local种类项目。Usage项目和Global种类的UsagePage项目共同描绘项目或会合的功能。一个报表能够指定一个Usage给好多个控制,或是指定不同样的Usage给每一个控制。假如一个报表项目从前有一个Usage,此Usage应用到该项目的所有控制。假如一个报表项目从前有一个以上的Usage,每一个Usage应用到一个控制,Usage与控制是按次次结合的。比以下边报表描绘符的一个局部,报表含有2

51、个输入字节,第一个字节的用法是x,第2个字节是y。ReportSize(8)ReportCount(2)Usage(x)Usage(y)Input(Data,Variable,Absolute)假如一个报表项目从前有一个以上的Usage,并且控制的数量多于Usage的数量,每一个Usage与一个控制对应,最后一个Usage则应用到所有节余的控制。比方在下边报表包含16个字节输入数据,第一个字节对应用法x,第2个字节对应用法y,节余的14个字节对应厂约定义的用法。Usage(x)Usage(y)Usage(Vendordefined)ReportSize(8)ReportCount(16)Inp

52、ut(Data,Variable,Absolute)UsageMinimum和UsageMaximum能够指定一个Usage给多个控制或是数组项目。将UsageMinimum到UsgaeMaximun定义的用法次序对应到多个控制中。比方在一个键盘描绘符中定义的标准键盘的左、右修饰键的输入项目中,使用一个字节的8位分别输入键盘的左、右Ctrl键、Shift键、Alt键和GUI键,从HIDUsagetables文档中的第10节能够查到对于键盘用法的定义,此中上述8个修饰键的用法定义值为224到231。以下是报表描绘符的修饰键部分描绘。Usage(6);6=KeyboardCollection(1)

53、;1=ApplicationUsagePage(7);7=Keyboard/KeypadUsageMinimum(224)UsageMaximum(231)LogicalMinimum(0)LogicalMaximum(1)ReportSize(1)ReportCount(8)Input(Data,Variable,Absolute)8.3USB接口的键盘描绘符典范下边作为一个例子,介绍一个USB接口的101键盘的所有描绘符。该键盘固件部分由一个微办理器实现所有控制功能,下边列出的代码为微办理器汇编实现描绘符定义。设施的描绘符设施描绘符的代码以下。;=;Devicedescriptor设施描绘

54、符;=DEVICE_DESC_DATA:DB0 x12;bLength=18,该描绘符长度为18字节DB0 x01;bDescriptorType=01,表示是设施描绘符DB0 x10,0 x01;bcdUSB,USB设施版本号=DB0 x00;DeviceClass,设施类码,HID设施为0,种类在接口描绘符中定义DB0X00;DeviceSubClass,设施子类码,DeviceClass为0时该字段必然为0DB0X00;bDevicePortocol,协议码,DeviceClass为0时该字段必然为0DB0 x08;bMaxPacketSize0,端点0的最大包尺寸DB0 xFF,0 x

55、FF;bVendor,厂商ID,由USB实现者论坛确立的DB0 x01,0 x00;bProduct,产品IDDB0 x00,0 x01;bcdDevice,设施版本号为DB0 x04;iManufacturer,厂商字符串的索引值,见字符串描绘符DB0 x0E;iProduct,产品字符串的索引值,见字符串描绘符DB0 x30;iSerialNumber,产品序列号字符串的索引值,见字符串描绘符DB0X01;bNumConfigurations,配置数量只有1个配置描绘符配置描绘符的代码以下。;=;Configurationdescriptor配置描绘符;=CONFIG_DESC_DATA:

56、DB0 x09;bLength=9,该描绘符长度为9字节DB0 x02;bDescriptorType=02,表示是配置描绘符DB0 x3B,0 x00;wTotalLength=59,配置、接口、端点和HID描绘符的总和字节数DB0 x02;bNumInterfaces=2,本配置支持的接口数量为2个DB0 x01;bConfigurationValue=1,本配置描绘符的表记符DB0 x00;iCongfiguration=0,配置描绘符说明字符串的索引值,0表示无DB0XA0;bmAttributes,电源及唤醒设置,版中D7=1,D6=0表示总线供电;D5=1表示支持远程唤醒DB0X3

57、2;MaxPower=50,本设施最大耗电为50X2mA=100mA需要说明的是wTotalLength的值,该数值为配置描绘符长度(9)加上后续的键盘的接口描绘符长度(9)、端点描绘符长度(7)、HID描绘符长度(9),以及该配置下的鼠标的接口描绘符长度(9)、端点描绘符长度(7)、HID描绘符长度(9),共59个字节。对于鼠标的有关描绘符在下边的表达中省略了。接口描绘符接口描绘符的代码以下。;=;Interfacedescriptor接口描绘符;=InterfaceDescriptor0:DB0 x09;bLength=9,该描绘符长度DB0 x04;bDescriptorType=4,表

58、示是接口描绘符DB0 x00;bInterfaceNumber=0,此接口的鉴识表记符DB0 x00;bAlternateSetting=0,表示此接口无代替设置值DB0 x01;bNumEndpoints=1,本接口的端点数量,HID设施使用端点1DB0 x03;bInterfaceClass=3,表示该设施是HID种类DB0 x01;bInterfaceSubClass=1,表示支持启动接口DB0 x01;bInterfaceProtocol=1,表示支持键盘协议DB0 x00;iInterface=0,接口描绘符说明字符串的索引值,0表示无字符串HID描绘符HID描绘符的代码以下。;=;

59、HIDdescriptorHID描绘符;=HIDDescriptor0:DB0 x09;bLength=9,该描绘符长度DB0 x21;bDescriptorType=21h,表示是HID描绘符DB0 x00,0 x01;bcdHID=0100,HID规范版本为DB0 x00;bCountryCode=0,硬件设施所在国家的国家代码,0表示未指明DB0 x01;nNumDescriptors=1,表示支持的描绘符有1个,即一个报表描绘符DB0 x22;bDescriptorType=22h,描绘符种类,表示支持的描绘符是报表描绘符DB0 x3F,0 x00;wDescriptorLength=

60、63,表示支持的报表描绘符的长度端点描绘符端点描绘符的代码以下。;=;EndPointdescriptor端点描绘符;=EndpointDescriptor0:DB0 x07;bLength=7,该描绘符长度DB0 x05;bDescriptorType=5,表示是端点描绘符DB0 x81;bEndpointAddress=10000001b,表示1号输入端点DB0X03;bmAttributes=00000011b,表示中止种类端点DB0 x08,0 x00;wMaxPacketSize=8,端点发送和接收的最大包尺寸为8DB10;bInterval=10,表示中止端点轮询时间间隔为10ms

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论