打印

USB人体学输入设备的实现 --人体接口设备的原理(人体接口概述)

[复制链接]
1787|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zya888|  楼主 | 2016-1-31 17:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在日常生活中,经常见到HID的应用,典型的是和计算机连接的键盘和鼠标。正如HID这个名字所描述的那样,它是一个设备,用来在人和设备(计算机)之间创建一个接口。由接口描述符实现将一个设备定义成HID。
沙发
quangg| | 2016-1-31 17:56 | 只看该作者
下面给出的一个鼠标的工程,在这个工程中,设备报告按键和X/Y移动的信息。这个信息以主机能理解和使用的格式传递给主机。
        在报告描述符中,声明了鼠标数据的结构和格式。
        主机周期性的轮询设备数据;如果设备没有准备好,它不响应(NAK)主机。如果设备准备好,则它响应(ACK)鼠标,并且通过一个中断类型的传输来传输信息。基于前面报告描述符所发送的信息,当主机从设备接收到数据,它理解数据的含义和如何使用数据。

使用特权

评论回复
板凳
peace555| | 2016-1-31 17:56 | 只看该作者
描述符以结构化的形式提供了,连接到主机设备的相关信息。当把一个USB设备插入计算机时,计算机(主机)通过USB描述符表要求设备的相关信息。通过接口描述符,计算机知道所连接的设备是HID。很多时候,主机要求一个设备所搜集数据的数据报告。为了理解这些信息,一个报告描述符用来定义HID报告内的数据格式,以及如何使用这些数据

使用特权

评论回复
地板
quangg| | 2016-1-31 17:57 | 只看该作者
HID报告描述符的一个重要的特性是,对于一个相同的设备有几百种方法建立和组织报告。它能包含设备所支持的各种特性的信息,指定了设备数据的组织结构,识别数据是否有一个指数(比如10-3,103),或者指定数据所跟的单位,比如:大小、时间、电流等。
        最后,报告描述符的目的是报告主机所希望接收和发送的设备和数据信息。报告描述符可以复杂也可以非常简单。在很多情况下,并不能区分出复杂描述符设备和简单描述符设备的区别。虽然表面上看上去非常令人“恐惧”,但是“本质”是很容易理解的。一旦理解了报告描述符,则很容易的创建描述符,并且开始设计自己的HID。

使用特权

评论回复
5
zya888|  楼主 | 2016-1-31 17:59 | 只看该作者
理解HID报告最容易的方法是分开查看其中的内容。
       本章给出的例子是建立一个三按键的鼠标。图11.6给出了三按键鼠标的报告描述符。

图片1.png (112.9 KB )

图片1.png

使用特权

评论回复
6
zzzhui| | 2016-1-31 17:59 | 只看该作者
这个过程类似于“老板”和“雇员”。“雇员”(设备)告诉他的“老板”(主机),他将以特定格式的报告,发布他所有的“发现”。这个报告也包含所有要求的信息,这些信息用于解数据,并处理它。所以,在一个指定的时间,比如每10ms,“老板”检查报告是否准备好。如果报告准备好,则“雇员”响应(ACK)“老板”,并且向“老板”发送一个报告,这个报告的格式是先前讨论的格式。由于双方前期讨论了格式,“老板”准确的知道如何处理数据。如果没有准备好报告,则“雇员”不响应“老板”,老板转向下一个“雇员”。由于在报告描述符中包含了很多的信息,下面将详细介绍这个报告描述符。

使用特权

评论回复
7
quangg| | 2016-1-31 17:59 | 只看该作者
这个报告看上去很复杂,但是非常直观。下面将这个报告进行分解。当思考鼠标和它所读取得信息,你将思考
按键和光标移动。光标是由X和Y值组成。按键是由按下/释放信息构成。这就是说描述符有一部分用于按键。另一部分用于光标。

使用特权

评论回复
8
zya888|  楼主 | 2016-1-31 18:00 | 只看该作者
在HID报告描述符中,这里有多个输入条目(Input)。每个输入条目是一个数据位域,用于告诉逐句将要从鼠标发送的数据。图11.8,11.9和11.10给出了输入条目的配置和每个位域的设置。后面将详细讨论这些位域的设置。

使用特权

评论回复
9
zzzhui| | 2016-1-31 18:00 | 只看该作者
图11.7给出了描述符的详细说明。下面将看看描述符表内的每一行的目的。通过理解每一行,来看每一行属于按键还是光标移动,以及它对数
据的影响。

图片2.png (269.97 KB )

图片2.png

使用特权

评论回复
10
quangg| | 2016-1-31 18:01 | 只看该作者
图11.8给出了输入条目的设置,该设置用于鼠标按键的3位数据。

图片2.png (150.58 KB )

图片2.png

使用特权

评论回复
11
zya888|  楼主 | 2016-1-31 18:01 | 只看该作者
最后的输入条目是X和Y轴信息。由于比特位2设置成相对的,主机接收到的信息包含X和Y数据的变化,然后主机根据这个信息相应的修改光标。

图片3.png (218.63 KB )

图片3.png

使用特权

评论回复
12
quangg| | 2016-1-31 18:02 | 只看该作者
下面将更深入的分析报告描述符,一个报告描述符有
下面的三种条目类型:
主条目类型
全局条目类型
本地条目类型
      区分这些条目类型和一个条目是非常重要的。在前面所给出的三种条目类型下,有很多不同的条目。因为条目描述符可能非常复杂,在这里只讨论通用的条目。

使用特权

评论回复
13
zya888|  楼主 | 2016-1-31 18:03 | 只看该作者
主条目
      主条目用于定义数据所包含的东西或者将数据分组。主条目中有5种不同的条目,包括:Input、Output、Feature、Collection和End Collection。Input、Output和Feature用于定义条目Collection和End Collection用于分组目的。

使用特权

评论回复
14
zzzhui| | 2016-1-31 18:03 | 只看该作者
如图11.9所示,为了保留字节剩下的5位,在鼠标按键的高5位补零。由于不想改变数据,因此除了设置比特0位常数外,使用相同的输入条目设置作为按键的设置。

使用特权

评论回复
15
zzzhui| | 2016-1-31 18:03 | 只看该作者
下面将更深入的分析报告描述符,一个报告描述符有下面的三种条目类型:主条目类型全局条目类型本地条目类型区分这些条目类型和一个条目是非常重要的。在前面所给出的三种条目类型下,有很多不同的条目。因为条目描述符可能非常复杂,在这里只讨论通用的条目

使用特权

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

本版积分规则

32

主题

239

帖子

1

粉丝