最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【解答】为何USB HID Report中的Item的Report Count可以大于Logical Maximum

USB crifan 5393浏览 0评论

【解答】为何USB HID Report中的Item的Report Count可以大于Logical Maximum

 

【问题】

在分析 USB HID Report的时候,发现代码中,Report Count=263,Logical Maximum=0xFF=255,

出现了Report Count大于Logical Maximum的情况,觉得很是不理解,

为何Report Count可以大于Logical Maximum?是不是代码写错了?

 

【解答】

不是代码错了。是自己理解错了。

经过询问别人和自己再仔细看HID的数据手册规范,才终于搞懂了,此处为何Report Count可以大于Logical Maximum。

简单的解释就是,Report Count和Logical Maximum,是两个不相干的概念,所以可能会出现Report Count可以大于Logical Maximum。

之所以会有“为何Report Count可以大于Logical Maximum?”的疑问,是没有理解Logical Maximum的概念,混淆了两者的关系。

之前错误的将Logical Maximum理解为,是设备report出来的,逻辑上,最大所允许的个数(count),所以,应该是至少是大于或等于Report Count的值,即Report Count要小于或等于Logical Maximum才对。后来才发现,实际上,Logical Maximum的意思,逻辑最大值,是针对设备report中,单个的值来说的。

举个例子:

 

 

 【TODO:等网易不抽风的时候,再传图片  mouse HID.jpg  ,否则传了都是失败。。。】

 
对应的生成的report是:
 

【解答】为何USB HID Report中的Item的Report Count可以大于Logical Maximum - carifan - work and job

 
中,Logical Maximum (1),Report Count (3), 其中
Logical Maximum (1):指的是,后面的数据,即Input (Data, Variable, Absolute),input的数据,的逻辑值最大只能为1,对应的最小为0,所以此input数据,即鼠标输入给主机的数据,取值范围就只是0或1。
Report Count (3):而此处的report count中的count,是指的是你report出来的数据的个数,此处是对应的input输入report count=3个的单位长度为report size=1bit的数据。
 
【总结】
简单总结就是:
Report Count中的count,指的是数据的个数,有几个这样的input或output数据。
而Logical Maximum中的maximum指的是,每一个单个的数据的逻辑最大值。
而此处Logical Maximum和Report Count没有啥关系,当然可能会出现“Report Count大于Logical Maximum”的情况了。

 

转载请注明:在路上 » 【解答】为何USB HID Report中的Item的Report Count可以大于Logical Maximum

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
91 queries in 0.167 seconds, using 22.13MB memory