USB报告描述符(Report Descriptor)是HID设备中的一个描述符

来源:互联网 发布:如何查看网站域名价格 编辑:程序博客网 时间:2024/04/29 21:44
在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,
配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。
USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较
复杂的一个描述符。
USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。
输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等
信息返回给电脑,键盘将按键数据数据返回给电脑等;输出报告是主机发送
给USB设备的,例如键盘上的数字键盘锁定灯和大写字母锁定灯等。报告是
一个数据包,里面包含的是所要传送的数据。输入报告是通过中断输入端点
输入的,而输出报告有点区别,当没有中断输出端点时,可以通过控制输出
端点0发送,当有中断输出端点时,通过中断输出端点发出。
而报告描述符,是描述一个报告以及报告里面的数据是用来干什么用的。
通过它,USB HOST可以分析出报告里面的数据所表示的意思。它通过控制输入
端点0返回,主机使用获取报告描述符命令来获取报告描述符,注重这个哀求
是发送到接口的,而不是到设备。一个报告描述符可以描述多个报告,不同的
报告通过报告ID来识别,报告ID在报告最前面,即第一个字节。当报告描述符中
没有规定报告ID时,报告中就没有ID字段,开始就是数据。更详细的说明请参看
USB HID协议,该协议可从Http://www.usb.org下载。
USB报告描述符可以通过使用HID Descriptor tool来生成,这个工具可以
到Http://www.usb.org下载,为了方便大家,我顺便上传了一份。
http://www.ednchina.com /Upload/Blog/2007/4/2/af7c3443-ad61-4465-adc7-a74d28bbc322.zipuploadfile-/2007-4/42672233.zip下面通过由HID Descriptor tool生成的USB鼠标和USB键盘来说明一下报告
描述符和报告。
code char KeyBoardReportDescriptor[63] = {
//表示用途页为通用桌面设备
0x05 0x01// USAGE_PAGE (Generic Desktop)
//表示用途为键盘
0x09 0x06// USAGE (Keyboard)
//表示应用集合,必须要以END_COLLECTION来结束它,见最后的END_COLLECTION
0xa1 0x01// COLLECTION (Application)
//表示用途页为按键
0x05 0x07//USAGE_PAGE (Keyboard)
//用途最小值,这里为左ctrl键
0x19 0xe0//USAGE_MINIMUM (Keyboard LeftControl)
//用途最大值,这里为右GUI键,即window键
0x29 0xe7//USAGE_MAXIMUM (Keyboard Right GUI)
//逻辑最小值为0
0x15 0x00//LOGICAL_MINIMUM (0)
//逻辑最大值为1
0x25 0x01//LOGICAL_MAXIMUM (1)
//报告大小(即这个字段的宽度)为1bit,所以前面的逻辑最小值为0,逻辑最大值为1
0x75 0x01//REPORT_SIZE (1)
//报告的个数为8,即总共有8个bits