打印
[USB驱动]

HID报告描述符疑问

[复制链接]
957|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinmeng_wit|  楼主 | 2019-3-28 16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
找了一个鼠标的报告描述符,如下:

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.     //填充5个bit,补足一个字节

31.     0x95, 0x01, // REPORT_COUNT (1)

32.     0x75, 0x05, // REPORT_SIZE (5)

33.     0x81, 0x03, // INPUT (Cnst,Var,Abs)

34.     //用途页为通用桌面

35.     0x05, 0x01, // USAGE_PAGE (Generic Desktop)

36.     //用途为X

37.     0x09, 0x30, // USAGE (X)

38.     //用途为Y

39.     0x09, 0x31, // USAGE (Y)

40.     //用途为滚轮

41.     0x09, 0x38, // USAGE (Wheel)

42.     //逻辑最小值为-127

43.     0x15, 0x81, // LOGICAL_MINIMUM (-127)

44.     //逻辑最大值为+127

45.     0x25, 0x7f, // LOGICAL_MAXIMUM (127)

46.     //大小为8个bits

47.     0x75, 0x08, // REPORT_SIZE (8)

48.     //数量为3个,即分别代表x,y,滚轮

49.     0x95, 0x03, // REPORT_COUNT (3)

50.     //输入,变量,值,相对值

51.     0x81, 0x06, // INPUT (Data,Var,Rel)

52.     //关集合

53.     0xc0, // END_COLLECTION

54.     0xc0 // END_COLLECTION

55. };

不理解的地方如下:
1.COLLECTION我知道是一个集合的开始,但是我不知道使用集合的作用是什么。
2.上面的报告描述符里面有两个集合一个是COLLECTION (Application),另外一个是COLLECTION (Physical)。描述符里必须要用集合?用集合和不用集合有什么区别。
3.描述符里面第19行和第43行都是逻辑最小值,为什么要写两个??

使用特权

评论回复

相关帖子

沙发
零三翟邢止胃| | 2019-3-29 08:38 | 只看该作者
感谢分享啊! 真是不错啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

240

帖子

1

粉丝