打印

USB人体学输入设备的实现 --人体接口设备的原理(报告描述符)

[复制链接]
2863|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
quangg|  楼主 | 2016-1-31 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主条目
      主条目用于定义数据所包含的东西或者将数据分组。主条目中有5种不同的条目,包括:Input、Output、
Feature、Collection和End Collection。Input、Output和Feature用于定义条目Collection和End Collection用于分组目的。
沙发
zhiyy| | 2016-1-31 18:05 | 只看该作者
一个Input条目指设备发送到主机的数据(比如:点击鼠标按键); 一个Ouput条目指主机发送设备的数据(比如:键盘上的Caps Lock LED灯).一个Feature条目是一个信息,这个信息是主机可以发送到设备,并且可以从设备读回。Feature条目包含设备配置信息,修改这个信息将改变设备的行为。PC接口应用程序经常使用Feature报告,在GUI上点击按键将修改设备的操作。Collection用于将Input、Output和Feature条目分组

使用特权

评论回复
板凳
ah9b87| | 2016-1-31 18:06 | 只看该作者
在HID规范中,有三种不同类型预定义的集合(Collection),包括:
物理(Physical) ;
应用(Application);
逻辑(Logic);

使用特权

评论回复
地板
quangg|  楼主 | 2016-1-31 18:06 | 只看该作者
一个物理集合是由一个几何点所搜集的数据组成。一个设备在一个时刻从多个传感器收集的数据可以在一个物理分组内分组数据。使用这个集合的一个设备例子是鼠标,它将按键和位置数据进行分组。

使用特权

评论回复
5
zhiyy| | 2016-1-31 18:07 | 只看该作者
每个输入、输出和特性条目都有一个PSoC Creator软件设置的8位前缀。一个输入条目有一个前缀’100000nn’,nn是跟随字节的个数。’10100nn’表示一个输出条目,’101100nn’表示一个特性条目。
      

使用特权

评论回复
6
peace555| | 2016-1-31 18:08 | 只看该作者
跟随前缀的是最多9个额外的比特位,这是固件开发人员必须设置的,用于描述条目数据。这还有23个额外的比特位,现在保留,用户不可以访问。在这个例子中,在输入条目中,前缀后只有一个字节(8位)。所以输入条目的前缀是0x81

使用特权

评论回复
7
zheng522| | 2016-1-31 18:08 | 只看该作者
一个应用集合将单设备内将服务不同或者公共目的的条目进行分组。一个例子是键盘,它将LED和键盘的按键进行分组。

使用特权

评论回复
8
ah9b87| | 2016-1-31 18:08 | 只看该作者
一个逻辑集合将不同条目的数据分组来构成一个结构化的数据集合。一个例子是一个数据缓冲区和缓冲数据占用的字节数之间的关系。逻辑集合建立两者之间的连接。

使用特权

评论回复
9
peace555| | 2016-1-31 18:08 | 只看该作者
每个输入、输出和特性条目都有一个PSoC Creator软件设置的8位前缀。一个输入条目有一个前缀’100000nn’,nn是跟随字节的个数。’10100nn’表示一个输出条目,’101100nn’表示一个特性条目。
      

使用特权

评论回复
10
zheng522| | 2016-1-31 18:09 | 只看该作者
注意:这里有9位数据,大于8位数据。如果用户在第8比特位选择“Buffered Bytes”,则要求这个额外的位,这将使这位的值为‘1’。前缀变成了0x82,添加一个额外的字节提供额外的数据。

使用特权

评论回复
11
ah9b87| | 2016-1-31 18:09 | 只看该作者
No Wrap/Wrap:No Wrap表示值超出设定的范围时,报告超出限制的值。Wrap表示,当值一直增加,当到达设置的最大值时,值翻转到最小的值。反之,当值一直减小,当到达设置的最小值时,值翻转到最大的值。当使用Array时,不能使用Wrap。

使用特权

评论回复
12
zhiyy| | 2016-1-31 18:09 | 只看该作者
下面将详细说明条目设置中,每位的设置含义: Data/Constant:Data表示数据是读/写。Constant表示数据是只读的,不能被主机修改。

使用特权

评论回复
13
zheng522| | 2016-1-31 18:10 | 只看该作者
Linear/Non-Linear:Linear表示测量数据,这些报告的数据之间有一个线性关系。当使用Array时,不能设置为Linear。当使用Non-Linear时,来自传感器的非线性曲线的数据就是这样一种情况。

使用特权

评论回复
14
peace555| | 2016-1-31 18:10 | 只看该作者
      Array/Variable:Array表示只报告当前活动的控制,比如正在按下按键。Variable表示报告每个控制的当前状态,而不考虑按钮是否按下。
      

使用特权

评论回复
15
peace555| | 2016-1-31 18:10 | 只看该作者
Absolute/Relative:Absolute表示值基于一个固定的区域。Relative表示值是对于最后一次所读取值的变化。鼠标是一个例子,提供相对的数据。而游戏杆提供的是绝对的数据。

使用特权

评论回复
16
zheng522| | 2016-1-31 18:11 | 只看该作者
No Null Position/Null State:No Null Position表示控制所发送的任何数据都包含有意义的数据。Null State表示控制可以发送无意义的数据,这个数据由超出所设置的最小和最大范围的值表示。

使用特权

评论回复
17
ah9b87| | 2016-1-31 18:12 | 只看该作者
Nonvolatile/Volatile:Nonvolatile表示只有和主机互动,设备才能修改值。Volatile表示设备不需要主机的验证就可以修改值。这位只应用到输出和特性条目。当使用Array时,不能使用Volatile。

使用特权

评论回复
18
peace555| | 2016-1-31 18:12 | 只看该作者
Bit Field/Buffered Bytes:Bit Field表示字节中的每一位能表示一片具体的数据。Buffered Bytes表示数据用一个或多个字节表示。鼠标或键盘时一个使用Bit Field的例子,而条码器数据使用Buffered Bytes。

使用特权

评论回复
19
zheng522| | 2016-1-31 18:14 | 只看该作者
全局条目和本地条目
      在前面的报告描述符中,可以看到这些条目,比如:usage,usage page,logical minimum等。全局条目用于描述数据,比如它的限制、单位、位大小和数量。本地条目用来定义数据的各种参数,比如:主机使用什么数据,然后将字符串和条目进行关联。这里有两个关键字用来区分全局和本地条目:全局条目“describe”和本地条目“define”。下面简单的介绍本地和全局条目。

使用特权

评论回复
20
ah9b87| | 2016-1-31 18:15 | 只看该作者
本地条目
Usage:用于条目或者集合的一个索引,表示它的使用或者功能。一个Usage和一个Usage Page表示低16位。
Usage Minimum and Maximum:用于链接Usage ID和一个数组或者比特映射的数据Usage Minimum定义了开始点,Usage Maximum定义了结束点。在鼠标工程中,有三个按键,Usage Minimum和Usage Maximum分配ID到按键1(0x01),按键2(0x02)和按键3(0x03)。

使用特权

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

本版积分规则

21

主题

226

帖子

1

粉丝