用途最小值,用途最大值、逻辑最小值,逻辑最大值分别是什么意思?
如题:

code uint8 ReportDescriptor[]=
{
 //每行开始的第一字节为该条目的前缀,前缀的格式为:
 //D7~D4:bTag。D3~D2:bType;D1~D0:bSize。以下分别对每个条目注释。

 //这是一个全局(bType为1)条目,将用途页选择为普通桌面Generic Desktop Page。
 //后面跟1字节数据(bSize为1),后面的字节数就不注释了,自己根据bSize来判断。
 0x05, 0x01, // USAGE_PAGE (Generic Desktop)

 //这是一个局部(bType为2)条目,用途选择为0x00。在普通桌面页中,
 //该用途是未定义的,如果使用该用途来开集合,那么系统将不会把它
 //当作标准系统设备,从而就成了一个用户自定义的HID设备。
 0x09, 0x00, // USAGE (0)

 //这是一个主条目(bType为0)条目,开集合,后面跟的数据0x01表示
 //该集合是一个应用集合。它的性质在前面由用途页和用途定义为
 //用户自定义。
 0xa1, 0x01, // COLLECTION (Application)

 //这是一个全局条目,说明逻辑值最小值为0。
 0x15, 0x00, //     LOGICAL_MINIMUM (0)  逻辑最小值什么意思?

 //这是一个全局条目,说明逻辑值最大为255。
 0x25, 0xff, //     LOGICAL_MAXIMUM (255) 逻辑最大值什么意思?

 //这是一个局部条目,说明用途的最小值为1。 这里用途的最小值是什么意思?
 0x19, 0x01, //     USAGE_MINIMUM (1)

 //这是一个局部条目,说明用途的最大值8。  这里用途的最大值是什么意思?
 0x29, 0x08, //     USAGE_MAXIMUM (8)  

 //这是一个全局条目,说明数据域的数量为八个。
 0x95, 0x08, //     REPORT_COUNT (8)    我的数据有214个(0xD6),这里是不是可以修改为:0x95, 0xD6,

 //这是一个全局条目,说明每个数据域的长度为8bit,即1字节。
 0x75, 0x08, //     REPORT_SIZE (8)

 //这是一个主条目,说明有8个长度为8bit的数据域做为输入。
 0x81, 0x02, //     INPUT (Data,Var,Abs)     这里很不理解我要传送214个字节该如何修改,是要修改成数组形式吗?

 //这是一个局部条目,说明用途的最小值为1。这里用途的最大值和最小值是什么意思?又是指那个用途的最小值和最大值?
 0x19, 0x01, //     USAGE_MINIMUM (1)

 //这是一个局部条目,说明用途的最大值8。
 0x29, 0x08, //     USAGE_MAXIMUM (8) 

 //这是一个主条目。定义输出数据(8字节,注意前面的全局条目)。
 0x91, 0x02, //   OUTPUT (Data,Var,Abs)    这里是要下发的8个数据如何修改?

 //下面这个主条目用来关闭前面的集合。bSize为0,所以后面没数据。
 0xc0        // END_COLLECTION
};

用途最大值减掉用途最小值就是你数据的个数(输入214,输出8),逻辑最小值到逻辑最大值之间就是你所能返回的数据(0~255)
但是你返回的数值计算机不一定认识,如果你返回的值没在用途最小值与用途最大值之间的话,计算机是不识别你所返回的值的,就是说你可以
返回这样的值,但是这个值我不一定处理!

那物理最小值、物理最大值,又份别是什么意思?两者之间有什么关系?

针对我要开发的驱动是要选择开应用集合: 0xa1, 0x01, // COLLECTION (Application)

还是开物理集合: 0xa1, 0x03,(好像是03)

一般都是应用集合。物理值就是实际的值。
http://group.ednchina.com/GROUP_MES_14600_93_33447.HTM

 

USB的逻辑值和用途值有什么区别?的更多相关文章

  1. Convert和Parse对null值处理的区别

    类型的转换在日常的变成中是经常被用到的,我们最常用的类型转换的方法就是Convert和Parse, 下面来说一下这两者null值处理的区别. int i1 = Convert.ToInt32(null ...

  2. SQL表值函数和标量值函数的区别

    SQL表值函数和标量值函数的区别 写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的, ...

  3. 编写高质量代码改善C#程序的157个建议——建议28:理解延迟求值和主动求值之间的区别

    建议28:理解延迟求值和主动求值之间的区别 要理解延迟求值(lazy evaluation)和主动求值(eager evaluation),先看个例子: List<, , , , , , , , ...

  4. javascript原始值和引用值类型及区别

    原始值和引用值类型及区别 首先,原始值和引用值类型都是js中的数据类型,为了充分利用存储空间,定义了不同的数据类型,而且js是弱类型,动态语言,数据类型可变. 原始值(简单数据类型) 存储在栈中的简单 ...

  5. js和php对bool值的判断区别

    一.将一种数据类型转换为bool值时,PHP和JS的转换规则不同 PHP中 当转换为 boolean 时,以下值被认为是 FALSE : 布尔值 FALSE 本身 整型值 0(零) 浮点型值 0.0( ...

  6. c#类库和可移值类库的区别

    所谓类库,只能指定一个类库的可运行平台. 而可移值类库,可以在无需修改代码的情况,同时可以在多平台上运行DLL文件.多平台如NET Framework.Silverlight.Windows Phon ...

  7. 实际举例C#引用类型和值类型的区别<网摘>

    我们都知道,c#的两大数据类型分别为值类型和引用类型.很多人或许闭着眼睛都能说出值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等,但是当被问及到二者之间的联系和区别, ...

  8. C# 引用类型与值类型的区别

    //引用类型(使用了class) class SomeRef{public Int32 x;} //值类型(使用了struct) struct SomeVal{public Int32 x;} sta ...

  9. 【转】c#引用类型与值类型的区别大盘点

    解析:CLR支持两种类型:值类型和引用类型.用Jeffrey Richter(<CLR via C#>作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能 ...

随机推荐

  1. Shopilex - 开源免费网店系统

    Shopilex - 开源免费网店系统 Shopilex是一套基于GPL开源协议的,MVC架构的开源电子商务网店系统,是目前中文领域里真正开源免费的网店系统.

  2. Linux 上使用 Gmail SMTP 服务器发送邮件通知

    导读 假定你想配置一个 Linux 应用,用于从你的服务器或桌面客户端发送邮件信息.邮件信息可能是邮件简报.状态更新(如 Cachet).监控警报(如 Monit).磁盘时间(如 RAID mdadm ...

  3. MD5方法代码(生成小写的md5) C#版本

    public string GetMD5Str(string input) { // Use input string to calculate MD5 hash MD5 md5 = System.S ...

  4. ButterKnife的使用

    ButterKnife是一个Android View注入的库. 1.开始使用 1.1 配置Eclipse 在使用ButterKnife需要先配置一下Eclipse. 项目右键-Properties-J ...

  5. mysql去掉字段字符中间空格

    mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数.   ...

  6. 苹果Swift编程语言新手教程【中国版】

    Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...

  7. MVC jsp+servlet+javabean 连接Mysql数据库測试demo

    本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...

  8. 使用MySQL的LAST_INSERT_ID--转

    LAST_INSERT_ID 自动返回最后一个 INSERT 或 UPDATE 操作为 AUTO_INCREMENT 列设置的第一个发生的值. 参考这里 The ID that was generat ...

  9. Vs2010发布Asp.Net网站及挂到IIS服务上

    首先用vs2010打开一个Asp.Net项目, 也可以通过vs菜单->生成->发布网站                           选择发布网站的路径 这样发布就OK了 下面就吧发 ...

  10. Carthage&&cocopads 摘抄笔记

    Carthage 是 iOS/Mac 开发生态圈的一个包管理工具,与现在流行的 CocoaPods 不同,它是一个去中心化的解决方案.知道它已经有一段时间了,但是一直没有好好玩过,今天整合 Carth ...