网站导航: 首页 > 设计参考 > 正文 文章搜索
USB HID报告及报告描述符简介
 
文章编号:
081126115257
文章分类: 接口技术 USB
点 击:
...
关 键 词: 入门,HID,报告描述符
文章来源:
EDN China(作者:computeroo)
摘 要:

下面这个报告描述符是USB鼠标报告描述符,比起键盘的来说要简单些。
它描述了4个字节,第一个字节表示按键,第二个字节表示x轴(即鼠标左右移动,
0表示不动,正值表示往右移,负值表示往左移),第三个字节表示y轴(即鼠标
上下移动,0表示不动,正值表示往下移动,负值表示往上移动),第四个字节
表示鼠标滚轮(正值为往上滚动,负值为往下滚动)。

 
  1. code char MouseReportDescriptor[52] = {   
  2.     //通用桌面设备   
  3.     0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)   
  4.     //鼠标   
  5.     0x09, 0x02,                    // USAGE (Mouse)   
  6.     //集合   
  7.     0xa1, 0x01,                    // COLLECTION (Application)   
  8.     //指针设备   
  9.     0x09, 0x01,                    //   USAGE (Pointer)   
  10.     //集合   
  11.     0xa1, 0x00,                    //   COLLECTION (Physical)   
  12.     //按键   
  13.     0x05, 0x09,                    //     USAGE_PAGE (Button)   
  14.     //使用最小值1   
  15.     0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)   
  16.     //使用最大值3。1表示左键,2表示右键,3表示中键   
  17.     0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)   
  18.     //逻辑最小值0   
  19.     0x15, 0x00,                    //     LOGICAL_MINIMUM (0)   
  20.     //逻辑最大值1   
  21.     0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)   
  22.     //数量为3   
  23.     0x95, 0x03,                    //     REPORT_COUNT (3)   
  24.     //大小为1bit   
  25.     0x75, 0x01,                    //     REPORT_SIZE (1)   
  26.     //输入,变量,数值,绝对值   
  27.     //以上3个bit分别表示鼠标的三个按键情况,最低位(bit-0)为左键   
  28.     //bit-1为右键,bit-2为中键,按下时对应的位值为1,释放时对应的值为0   
  29.     0x81, 0x02,                    //     INPUT (Data,Var,Abs)   
  30.   
  31.     //填充5个bit,补足一个字节   
  32.     0x95, 0x01,                    //     REPORT_COUNT (1)   
  33.     0x75, 0x05,                    //     REPORT_SIZE (5)   
  34.     0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)   
  35.   
  36.     //用途页为通用桌面   
  37.     0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)   
  38.     //用途为X   
  39.     0x09, 0x30,                    //     USAGE (X)   
  40.     //用途为Y   
  41.     0x09, 0x31,                    //     USAGE (Y)   
  42.     //用途为滚轮   
  43.     0x09, 0x38,                    //     USAGE (Wheel)   
  44.     //逻辑最小值为-127   
  45.     0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)   
  46.     //逻辑最大值为+127   
  47.     0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)   
  48.     //大小为8个bits   
  49.     0x75, 0x08,                    //     REPORT_SIZE (8)   
  50.     //数量为3个,即分别代表x,y,滚轮   
  51.     0x95, 0x03,                    //     REPORT_COUNT (3)   
  52.     //输入,变量,值,相对值   
  53.     0x81, 0x06,                    //     INPUT (Data,Var,Rel)   
  54.   
  55.     //关集合   
  56.     0xc0,                          //   END_COLLECTION   
  57.     0xc0                           // END_COLLECTION   
  58. };   

 通过对上面的报告分析,我们知道报告返回4个字节,没有报告ID。如果鼠标左键按下,
则返回01 00 00 00(十六进制值),如果右键按下,则返回02 00 00 00,如果中键按下,
则返回04 00 00 00,如果三个键同时按下,则返回07 00 00 00。如果鼠标往右移动则
第二字节返回正值,值越大移动速度越快。其它的类推。

 这里只对报告描述符做一个简单的介绍,更详细的资料请参看USB HID协议以及HID Usage Tables,
可以从Http://www.usb.org下载。


根据这个实际设计的USB键盘和USB鼠标:

USB键盘:
http://computer00.21ic.org/user1/2198/archives/2007/36484.html

http://www.ednchina.com/blog/computer00/20134/message.aspx

USB鼠标:
http://computer00.21ic.org/user1/2198/archives/2007/36520.html

http://www.ednchina.com/blog/computer00/20135/message.aspx

温馨提示:

  百合电子工作室有一个关于USB开发方面的开源项目-Easy USB 51 Programer,整个开发过程写得非常详细,不防参考一下,您还可以进入她的论坛参与此项目的讨论。


 

 
相关文章:

上一页 12
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4