操作系统中鼠标操作原理

上传人:第*** 文档编号:54455981 上传时间:2018-09-13 格式:PPT 页数:49 大小:1.49MB
返回 下载 相关 举报
操作系统中鼠标操作原理_第1页
第1页 / 共49页
操作系统中鼠标操作原理_第2页
第2页 / 共49页
操作系统中鼠标操作原理_第3页
第3页 / 共49页
操作系统中鼠标操作原理_第4页
第4页 / 共49页
操作系统中鼠标操作原理_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《操作系统中鼠标操作原理》由会员分享,可在线阅读,更多相关《操作系统中鼠标操作原理(49页珍藏版)》请在金锄头文库上搜索。

1、操作系统下鼠标操作原理,软件组整理,目 录 1、鼠标的类型及与主板的连接关系 2、鼠标工作原理 3、鼠标硬件原理图 4、HID协议与操作系统HID驱动简介 5、操作系统HID接口 6、图形显示基本原理与操作系统焦点模型 7、应用程序鼠标捕获与程序处理,鼠标的类型,按照与电脑的连接方式来分的话有串口鼠标、PS/2鼠标和USB鼠标。如下图所示:,鼠标与主板的连接关系,鼠标分别连接到主板的串口、PS2、USB口。,串口,PS2口,USB口,鼠标工作原理,光电鼠标工作原理示意图,激光鼠标原理与之类似。,鼠标光学跟踪引擎部分横截面示意图,光学鼠标主要由四部分的核心组件构成,分别是发光二极管、透镜组件、光

2、学引擎(Optical Engine)以及控制芯片组成。光学鼠标通过底部的LED灯,灯光以30度角射向桌面,照射出粗糙的表面所产生的阴影,然后再通过平面的折射透过另外一块透镜反馈到传感器上。,当鼠标移动的时候,成像传感器录得连续的图案,然后通过“数字信号处理器”(DSP)对每张图片的前后对比分析处理,以判断鼠标移动的方向以及位移,从而得出鼠标x, y方向的移动数值。再通过SPI传给鼠标的微型控制单元(Micro Controller Unit)。鼠标的处理器对这些数值处理之后,传给电脑主机。传统的光电鼠标采样频率约为3000 Frames/sec(帧/秒),也就是说它在一秒钟内只能采集和处理3

3、000张图像。,鼠标硬件原理图1,鼠标硬件原理图2,HID协议简介,一、应用场合 USB HID类是比较大的一个类,HID类设备属于人机交互操作的设备。用于控制计算机操作的一些方面,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球、电话拨号设备、VCR遥控等等设备。另外,使用HID设备的一个好处就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用API调用即可完成通信。所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。,HID协议简介,二、USB HID类可采用的通信管道 所有的HID设备通过USB的控制管

4、道(默认管道,即端点0)和中断管道与主机通信。 USB HID规范定义的HID设备可用端点包含三种管道: 1、控制(端点0)( 必选) 传输USB描述符、类请求代码以及供查询的消息数据等 2、中断输入 (必选) 传输从设备到主机的输入数据 3、中断输出 (可选 )传输从主机到设备的输出数据,HID协议简介,控制管道主要用于以下3个方面:1、接收/响应USB主机的控制请示及相关的类数据。2、在USB主机查询时传输数据(如响应Get_Report请求等)。3、接收USB主机的数据。 中断管道主要用于以下两个方面:1、USB主机接收USB设备的异步传输数据。2、USB主机发送有实时性要求的数据给US

5、B设备;从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备。,HID协议简介,三、USB HID设备的描述符 HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,还包括3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符。,HID协议简介,除了HID的三个特定描述符组成对HID设备的解释外,5个标准描述符中与HID设备有关的部分有: 设备描述符中bDeviceClass、bDeviceSubClass和bDeviceProtocol三个字段的值必须为零。

6、 接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备),bInterfaceProtocol的取值含义如下表所示: 表2、HID接口描述符中bInterfaceProtocol的含义 bInterfaceProtocol的取值(十进制) 含义 0 NONE 1 键盘 2 鼠标 3255

7、保留,HID协议简介,下面仅对这3个HID设备类特定描述符中的HID描述符进行说明。 HID描述符关联于接口描述符,因而如果一个设备只有一个接口描述符,则无论它有几个端点描述符,HID设备只有一个HID描述符。HID设备描述符主要描述HID规范的版本号、HID通信所使用的额外描述符、报表描述符的长度等。 其他信息请自行百度。,操作系统HID驱动简介, HID 设备驱动简介 为简化USB设备的开发过程,USB提出了设备类的概念。HID设备类,即人机接口设备。典型的HID设备如键盘、鼠标。 所有设备类都必须支持标准USB描述符和标准USB设备请求。如果有必要,设备类还可以自行定义其专用的描述符和设

8、 备请求,这分别被称为设备类定义描述符和设备类定义请求。另外,一个完整的设备类还将指明其接口和端点的使用方法,如如接口所包含端点的个数、端点的最大 数据包长度等。,操作系统HID驱动简介,HID设备既可以是低速设备也可以是全速设备,其典型的数据传输类型为中断IN传输,即它适用于主机接收USB设备 发来的小量到中等量的数据。HID具有以下的功能特点:1)适用于传输少量或中量的数据;2)传输的数据具有突发性;3)传输的最大速率有限制;4)无固 定的传输率。 HID设备类除支持标准USB描述符外(设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符),还自行 定义了3种类描述符,分别为HID

9、描述符(主要用于识别HID设备所包含的其他类描述符)、报告描述符(提供HID设备和主机间交换数据的格式)和物理描 述符。一个HID设备只能支持一个HID描述符;可以支持一个或多个报告描述符;物理描述符是可选的,大多数HID设备不需要使用它。,操作系统HID驱动简介, USB HID设备驱动原理 设备的USB 人机交互设备必须遵循以下的USB开始程序,如右图所示: 1) 插入设备USB设备第一次连接到总线时,虽然接上了电源,但是总线仍然没有任何功能,一定要到重置总线为止才可以开始运作。注意,一旦USB在D端使用了 1.5k的提升电阻,就会立即通知总线的集线器,有一个低速设备(1.5Mb/s)刚被

10、连接上。而程序以设备地址0开始运行。设备插上时,电源打开重置的过程: 重置执行初始设置并出发总线重置中断-位于中止模式下知道总线被重置为止等待设备列举执行程序循环,操作系统HID驱动简介,2) 总线重置接着主机将会辨认新的USB设备并重置它。在总线重置过程中,除了设定堆栈指针外,也出发所有被使用到的中断。(总线重置的中断服务程序ISR功能) 3) 设备列举。主机会负责检测与设定所有连接至根集线器的设备,辨别与设定一个USB设备的程序,称为设备列举。主机首先会送出SETUP封包以读取默认地址0的设备描 述符。当收到描述符后,主机将会指定新的USB地址给设备。从设备所返回的信息中,主机就会知道设备

11、所支持的数据端点的数量。完成设备列举。,操作系统HID驱动简介,4) 数据捕捉与转换这里以键盘为例,在固件中将以周期性的方式,把扫描的形式写入到扫描矩阵的列I/O端口伤(接口2),并且在行I/O接口伤读取结果值以决定哪个键被按下 了。通过键盘扫描后所得到的数据码,可以使用中断传输以端点1来传送给主机。设备就将键盘的8B数据放置在IN令牌包随后跟随的资料封包的数据域位内,再 返回给主机。当含有LED的按键(如NumLock ,Caps lock 与 Scroll lock)被按下或放开时,主机就会送出含有设定报告(Set_Report)要求的SETUP封包,通过控制传输传至设备的端口0上。,操作

12、系统HID驱动简介, USB HID设备驱动程序设计的流程说明 USB总线与设备间的交互都是通过USBD即USB总线驱动程序完成。USBD起着中间桥梁作用,解释USB设备类驱动程序发来的命令并将其划分为一系列的USB事务,然后发送给USB主控制器驱动程序。 具体流程是插入一个USB设备后,主机检测到有设备接入,USBD就从链表中查找匹配HID设备类。为每一个接入的 HID设备驱动建立一个对应的USB_HID_SIO_CHAN结构来对该HID设备驱动进行管理。这里的USB_HID_SIO_CHAN结构是 USBD为每一个HID设备所分配的一个关键的内部数据结构。此后由USB主控制器驱动程序来负责

13、硬件底层的驱动。 而HID设备移除时,会调用函数usbHIDDeviceAttachCallback() ,这时先判断是否有与该HID设备绑定的结构,有则清除该结构。而HID设备移除时,会调用函数usbHIDDeviceAttachCallback() ,这时先判断是否有与该HID设备绑定的结构,有则清除该结构。,操作系统HID驱动简介,从框图中,可以看出除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符;而物理描述符不是必需的。还有就是HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提

14、供一个HID描述符。 接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备)。,操作系统HID驱动简介,成功注册一个没有被初始化的HID设备的程序流程如右图所示。 USB HID设备驱动程序的简单介绍见下页。,操作系统HID接口,设备文件一般注册为“/dev/input/mouse0”,对

15、应的驱动程序及接口如下: /输入子系统层的操作-drivers/input/input.c open /dev/input/mouse0 mousedev_open() /drivers/input/mousedev.c /*打开鼠标类输入设备*/ input_open_device() input_handle-dev-open /驱动层物理设备的操作-drivers/usb/input/usbmouse.c usb_mouse_open()注册Input Handler驱动层只是把输入设备注册到输入子系统中,在驱动层的代码中本身并不创建设备结点。 应用程序用来与设备打交道的设备结点的创建由

16、Event Handler层调用Input core中的函数来实现。,操作系统HID接口,而在创建具体的设备节点之前,Event Handler层需要先注册一类设备的输入事件处理函数及相关接口 static int _init mousedev_init(void) /注册输入事件处理、连接、断开、设备(文件)操作函数input_register_handler(,操作系统HID接口,下面集中分析mousedev_event事件处理: 分析数据事件结构体 linux/input.h中有定义,这个文件还定义了标准按键的编码等struct input_event struct timeval ti

17、me; /按键时间_u16 type; /类型,在下面有定义_u16 code; /要模拟成什么按键_s32 value;/是按下还是释放 ;code: 事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.代码植0127为键盘上的按键代码,0x1100x116 为鼠标上按键代码,其中0x110(BTN_ LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_ MIDDLE)为鼠标中键.其它代码含义请参看include/linux/input.h文件. 如果事件的类型代码是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号