usb hid协议

usb hid协议

ID:35643552

大小:32.82 KB

页数:16页

时间:2019-04-06

usb hid协议_第1页
usb hid协议_第2页
usb hid协议_第3页
usb hid协议_第4页
usb hid协议_第5页
资源描述:

《usb hid协议》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、USBHID类设备属于人机交互操作的设备,是一个比较大的类,用于控制计算机操作的某些方面,如USB鼠标、USB键盘、USB游戏操作杆、USB触摸板、USB轨迹球、电话拨号设备、VCR遥控等等设备。另外,使用HID设备的一个好处就是操作系统自带了HID类的驱动程序,用户无需开发很麻烦的驱动程序,只有直接使用API调用即可完成通信,所有很多简单的USB设备喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。1、HID设备描述符    当插入USB设备后,主机会向设备请求各种描述符来识别设备。为了把一个设备识别为

2、HID类,设备在定义描述符的时候必须遵守HID规范。HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还包括3个HID设备类特定描述符:HID描述符、报告描述符、物理描述符。HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符。设备和主机的通信是通过报告的形式来实现的。而物理描述符不是必需的。    5个标准描述符中与HID设备有关的部分有:    设备描述符中bDeviceClass、bDeviceSubClas

3、s和bDeviceProtocol三个字段的值必须为0。    接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备是一个启动设备(BootDevice,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为BootDevice。如果为0则只有在操作系统启动后才能识别并使用您的HID设备)。HID接口描述符中bInterfaceProtocol的含义bInterfaceProtoc

4、ol的取值含义0NONE1键盘2鼠标3~255保留 1.1HID描述符    HID描述符关联于接口描述符,因而如果一个设备只有一个接口描述符,则无论它有几个端点描述符,HID设备只有一个HID描述符。HID设备描述符主要描述HID规范的版本号、HID设备所用的额外描述符、报告描述符的长度等。USBHID类描述符的结构偏移量域大小描述0bLength1描述符的字节数1bDescriptorType1描述符类型,HID类描述符为0x212bcdHID2HID版本号,如1.0版本的BCD码为0x000,版本1.1的

5、BCD码为0x01104bCountryCode1硬件目的国家的识别码(BCD码)5bNumDescrioptors1支持的附属描述符数目6bDescrioptorType1HID相关描述符的类型0x21:HID描述符0x22:报告描述符0x23:物理描述符7wDescriptorLength2报告描述符总长度9bDescriptorType1用于识别描述符类型的常量,使用一个以上描述符的设备10wDescrioptorLength2描述符总长度,使用一个以上描述符的设备1.2报告描述符    HID设备的报告

6、描述符比较复杂也比较难理解。它以item形式排列组合而成,无固定长度,用户可以自定义长度以及每一bit的含义。HID报告描述符已经不是简简单单地描述某个值对应某个固定意义了,它已经能够组合出很多种情况,并且需要PC上的HID驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成出本HID硬件设备独特的数据流格式,所以可以把它理解为“报告描述符脚本语言”更为贴切。我们使用“报告描述符”专用脚本语言,让用户来自己定义他们的HID设备都有什么数据以及这些数据各bit都有什么意义。USB协会提供了一

7、个HID描述符编辑工具HIDDescrioptorTool,用它可以方便生成报告描述符。    item类型分为三种:main,global和local。其中main类型又可以分为5种tag:·inputitemtag:指的是从设备的一个或多个类似控制管道得到的数据·outputitemtag:指的是发送给一个或多个类似控制管道的数据·featureitemtag:表示设备的输入输出不面向最终用户·collectionitemtag:一个有意义的input,output和feature的组合项目·endcoll

8、ectionitemtag:指定一个collectionitem的终止每一个mainitemtag(input,output,feature)都表明了来自一个特定管道的数据的大小,数据相对还是独立,以及其他相关信息。在此之前,global和localitem定义了数据的最大值和最小值,等等。localitem仅仅描述下一个mainitem定义的数据域,而globalitem是这一个报告

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。