版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机械鼠标的工作原理机械鼠标的工作原理机械鼠标是通过移动鼠标,带动胶球,胶球滚动又磨擦鼠标内分管水平和垂直两个方向的栅轮滚轴,驱动栅轮转动。栅轮轮沿为格栅状。紧靠栅轮格栅两侧,一侧是一红外发光管,另一侧是红外接收组件。红外接收组件为一三端器件,其中包含甲乙两个红外接收管。在水平和垂直栅轮夹角正对方向有一压紧轮,它使胶球无论向何方向滚动都始终压紧在两个栅轮轴上。 通过ps/2 口或串口与主机相连。接口使用四根线,分别为电源 , 地,时钟和数据。正常工作时,鼠标的移动转换为水平和垂直栅轮不同方向和转速的转动。栅轮转动时,栅轮的轮齿周期性遮挡红外发光管发出的红外线照射到接收组件中的甲管和乙管,从而甲和
2、乙输出端输出电脉冲至鼠标内控制芯片。由于红外接收组件中甲乙两管垂直排列,栅轮轮齿夹在红外发射与接收中间的部分的移动方向为上下方向,而甲乙接收管与红外发射管的夹角不为零,于是甲乙管输出的电脉冲有一个相位差。鼠标内控制芯片通过此脉冲相位差判知水平或垂直栅轮的转动方向,通过此脉冲的频率判知栅轮的转动速度,并不断通过数据线向主机传送鼠标移动信息,主机通过处理使屏幕上的光标同鼠标同步移动。机械鼠标是靠橡胶球带动光栅轮的,用两套光电对管是因为鼠标有X、Y轴两个运动方向,设仅横向移动鼠标,此时只有X轴方向的运动,那么存在需要识别X轴的光栅轮是顺时针还是逆时针转动(也就是你的鼠标是向左移还是向右移),这就只能
3、够依靠一套光电对管来探测(光电对管指的是发光和接收两个元件),在光电接收管中按上下方位封装好两个光电三极管就能通过判断两个光电三极管的导通次序来得知光栅轮的转动方向了。你要用来测电机转动很简单,这个元件中间的引脚为公共集电极,1和3脚分别为两个光电三极管的发射极,如果只需要测转速而不需判断电机转动方向则只需要在电路中连接1、2或者2、3脚另一脚不接就是把这个元件当作单个光电三极管在用了。按照鼠标的PS/2协议规范,实际编程时先对鼠标发送0 xff使其复位,默认采样频率为100次/s,缩放比例为11,数据报告禁止。使用0 xea命令进入stream模式,使用0 xe8、0 x03命令设置解析度为
4、8点/mm,使用0 xf4命令使能数据报告。配合AT89S51单片机的定时器功能,将其时间常数设置为0.1 s,每次中断时发送0 xeb命令读取位移数据信息,每发出一次,单片机接收到的位移数据包都包含有位移信息和按键动作信息。具体格式如表1所列。表1 3D型鼠标接收数据格式鼠标编程通讯协议作者:不详来源:不详发布时间:2006-4-19 0:09:32收 藏 评 论鼠标编程通讯协议数据格式 MicroSoft 公司标准:MICROSOFT FORMAT 字节 字元(B i t) 7 6 5 4 3 2 1 0 BYTE1 1 1 L R Y7 Y6 X7 X6 BYTE2 0 0 X5 X4
5、X3 X2 X1 X0 BYTE3 0 0 Y5 Y4 Y3 Y2 Y1 Y0 注释:L = 左键状态R = 右键状态 1 = 按下0 = 释放 X0-X7 = X 距离Y0-Y7 = Y 距离 X7或Y7为符号位 串口特性:波特率 = 1200 Baud,8 位数据,无校验位,2 停止位。 MOUSE SYSTEM 公司标准:MOUSE SYSTEM FORMAT 字节 字元(B i t) 7 6 5 4 3 2 1 0 BYTE1 1 0 0 0 0 L M R BYTE2 X7 X6 X5 X4 X3 X2 X1 X0 BYTE3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 BYTE
6、4 X7 X6 X5 X4 X3 X2 X1 X0 BYTE5 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 注释:L = 左键状态R = 右键状态M = 中间键状态 1 = 按下0 = 释放 X0-X7 = X 距离Y0-Y7 = Y 距离 X7或Y7为符号位 串口特性:波特率 = 1200 Baud,8 位数据,无校验位,2 停止位。 IBM 公司 PS/2 MOUSE 标准:PS/2 MOUSE FORMAT 字节 字元(B i t) 7 6 5 4 3 2 1 0 BYTE1 YV XV YS XS 1 0 R L BYTE2 X7 X6 X5 X4 X3 X2 X1 X0 BYTE
7、3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 注释:L = 左键状态R = 右键状态 1 = 按下0 = 释放 X0-X7 = X 距离Y0-Y7 = Y 距离 X7或Y7为符号位 XS,YS = 符号位 1 反向移动 XV,YV = 溢出位 1 X Y 数据溢出 鼠标应用程序设计 用汇编语言编写的鼠标和键盘应用程序。 在程序执行后屏幕上显示包括鼠标和键盘的状态。当用户移动鼠标时,屏幕显示鼠标的位置;按下鼠标左键时,显示“Left Button press”;在放开左键时显示“Left Button Press”消失。在按下鼠标右键时,显示“Right Button Press and
8、Program returned to Dos .”P206程序结构: Prog7-1. Asm 中引用的外部定义子程序为tab6 . Inc 。它包含所有定义、过程和宏。外部过程有:clrScrn.asm(清屏过程)、onCur.asm(开光标过程)、offCur.asm(关光标过程)、mvCur.asm(移动光标)、bdwrite.asm(显示字符过程)、kdState.asm(取键盘状态过程)、msOff.asm(鼠标关)、msOn.asm(鼠标开)msInit.asm(鼠标初始化)msState.asm(鼠标状态)等。P206程序结构:Prog7-1. Asm 中引用的外部定义子程序为
9、tab6 . Inc 。它包含所有定义、过程和宏。外部过程包括:clrScrn.asm(清屏过程)、onCur.asm(开光标过程)、offCur.asm(关光标过程)、mvCur.asm(移动光标)、bdwrite.asm(显示字符过程)、kdState.asm(取键盘状态过程)、msOff.asm(鼠标关)、msOn.asm(鼠标开)msInit.asm(鼠标初始化)msState.asm(鼠标状态)等。Tabl6.inc包含有proto6s.inc、def6.inc和mac6.inc三个子程序。鼠标的操作方式用汇编语言对鼠标的各项操作进行描述的,也可以用C、C+等其他语言来描述。1. 初
10、始化鼠标驱动程序: 例如:中断号INT33h 功能16h 子功能17h 中断号:用于请求服务 功能号:用于确定用户期望获取哪种服务 子功能号:进一步指定所希望的服务 调用寄存器:设置被调用的服务功能所要求的参数 返回寄存器:返回服务功能执行结果 调用的进程:设置参数 中断号INT33h 功能15h BX寄存器 ES:DX 功能16h 功能17h ES:DX2. 显示或隐藏鼠标光标中断33h的功能1和2分别置鼠标光标为“打开”和“关闭”。而鼠标驱动程序一直跟踪鼠标的移动,当鼠标移动时就更新它在屏幕的位置。鼠标的程序从开始通常在打开光标,一直到程序结束。鼠标驱动程序采用光标标记,用做显示和隐藏光标
11、的分层方法。初次打开光标标记设为-1;功能1将标记加至0,使光标出现。功能2将标记减1,当标记为负值时就隐藏光标。3. 设置文本鼠标光标的形状在以视频文本模式工作时,鼠标驱动程序生成两类光标:(1)硬件光标,由视频硬件所产生的常规屏幕光标,由水平扫描线组成。(2)软件或属性光标,这种情况下,鼠标驱动程序在光标出现的屏幕位置写数据。驱动程序在改变此位置显示的字符或改变字符属性,使它闪烁、背景色等。(3)中断33h的功能Ah设置文本光标的类型:AX存放功能号;BX存放应光标或软件光标选择;CX存放起始扫描线;DX存放终止扫描线。4. 设置图形鼠标光标的形状中断33h的功能9h设置图形模式下的鼠标光
12、标的形状,并定义光标里的一个点为热点。光标由16 x 16位的视频掩码和16 x 16位的光标掩码组成。5. 取得或设置鼠标光标的位置中断33h的功能4h用于设置鼠标光标位置,功能3h则用于报告光标的位置。AX存放功能号,CX被赋予X坐标,DX被赋予Y坐标。P200例7-46. 将鼠标光标限定在屏幕的一部分将鼠标光标可以限制在屏幕的一个矩形区域内,由中断33h的功能7h设置鼠标光标移动的水平范围,8h设置垂直范围。P201例7-57. 定义不显示鼠标光标的屏幕区域中断33h的功能10h定义屏幕的一个区域,当鼠标进入该区域时会自动关掉。进入时,CX存放被保护域的左列号,SI存放右列号;DX存放首
13、行号,DI存放末行号。例7-6 设置一个范围是从第1050列和530行之间的矩形域。 MOV AX , 10h ;功能号 MOV CX , 10 ;左列 MOV S I , 50 ;右列 MOV DX , 5 ;首行 MOV D I , 30 ;末行 INT 33h ;调用中断设置域8. 跟踪鼠标的移动中断33h 功能Bh报告自从上次调用该功能后,鼠标移动的实际距离(测量单位为米基)。该功能在CX中返回相对的水平位移;DX中返回相对的垂直位移。例7-7 查询鼠标光标的相对位移。 MOV AX , 0Bh INT 33h MOV HORZ_MOTION , CX MOV VERT_MOTION
14、, DX9. 设置鼠标与光标移动的比率 程序可以改变鼠标移动相对于鼠标光标移动的比率。大多数鼠标的分辨率为每英寸200米基。在一定方向上移动一定数目的米基,转换为鼠标光标移动一个像素。默认情况8米基使水平移动一个像素;16米基使光标垂直移动一个像素。中断21h的功能Fh可以改变米基 像素的比例。中断33h的功能13h是改变产生双倍速率的这个阀值,默认值为64米基/秒。P202例7-810. 监视鼠标按钮中断33h的功能5h和6h报告鼠标按钮的信息。这两项功能都在AX返回一个按钮状态字节,报告按钮2个或3个当前状态。此状态字节由中断21h的功能3h返回。它报告鼠标光标的位置。中断33h的功能5h
15、和6h跟踪按下按钮和释放按钮。11.截取单击、双击和拖动事件许多使用鼠标的程序都要检测鼠标的单击和双击,并跟踪按钮按下的拖动事件。12. 建立鼠标中断例程在INT 33h的功能Ch建立列程。入口时,ES:DX指向列程CX中存放一个位模式,设定几种应当调用的例程事件。其模式为:光电鼠标传感器的精密测量与控制系统 下载作者:华侨大学 陈智博 林永忠 蔡钟山 刘聃 肖威威来源:不详发布时间:2008-10-18 15:07:23收 藏 评 论摘要 对于普通的带传动装置进行较高精度的速度控制,传统的检测及控制器件未必能让人满意。光电鼠标芯片因以其高精度、低现场环境要求、低价格等因素非常适用于位置检测场
16、合。鉴于此,结合光电鼠标芯片与AT89S51单片机,通过对普通带传动装置的改进,可使其传动做到快速、稳定、准确。测试表明,这种检测及控制方式是行之有效的。关键词 PS/2协议 低速 PID控制 单片机接口 光学鼠标 速度测量引言带传动是工业生产中普遍使用的传输装置,其常用的速度检测装置是安装在电机旋转端的光电编码器;但设备在长期使用中,因磨损等不可预计情况,使得电机转速与带传动速度出现严重的不一致。这种半闭环控制方式在需要较高精度的带传动速度控制上误差很大。光栅尺等因价格昂贵、对现场环境要求高,往往对于普通工况中带传动装置的改装并不很适用。鉴于此,本文提出了使用一般商用的光电鼠标代替传统的检测
17、器件的方法,通过AT89S51单片机实现现场的PID控制,使带传动速度达到满意的要求。1 检测系统硬件组成1.1 OM02光学传感器芯片及鼠标控制器这款光学CMOS传感器是一款针对个人计算机所配置的非接触式光电鼠标芯片,集成有数字信号处理器(DSP)、双通道正交输出端口等。在芯片底部有一个感光眼,能够不断地对物体进行拍照,并将前后两次图像送入DSP中进行处理,得到移动的方向和距离。DSP产生的位移值,转换成双通道正交信号,配合鼠标控制器,将双通道正交信号转化成单片机能够处理的PS/2数据格式。设备安装在一套塑料的光学透镜设备上,并配有一个高强度的LED。此外,它可提供高达400点/in的分辨率
18、以及16 in/s以内的检测速度。图1为鼠标芯片传感器的装配图。因OM02芯片为CMOS型传感器,因此必须配有与之相适应的高强度发光二极管,发射角度(与底板之间的夹角)为3045。在标准安装配合后,底板距离工作表面的有效距离在02 mm内,OM02芯片可进行正常的数据接收检测。图1 鼠标芯片传感器装配图1.2 检测控制原理及系统硬件设计本系统采用全闭环控制方式,如图2所示。将鼠标检测到的位移增量反馈回单片机,并进行数字式PID控制,然后将运算结果通过D/A转换芯片传给变频器,进而控制电机的转速。图2 光电鼠标检测控制原理框图系统主要由电动机、传动部分、执行部分和控制部分组成。机械传动系统作为机
19、器的重要组成部分,不仅应能实现预期功能,而且应具有良好性能。为此,采用三相交流异步电机(Y263M14型,0.12 kW)、变频器(富士FRN0.4C1S4C)、301蜗轮蜗杆减速器、v型B相带传输装置、P204型球轴承及轴承座等作为模拟工业设备的主要传动及执行部分。通过单片机调整数模转换器的输出电压U,可改变变频器的输出频率,从而改变电机转速。2 单片机程序设计2.1 鼠标通信协议原理鼠标与单片机的数据通信方式采用PS/2通信协议。PS/2鼠标的物理接口为6脚圆形接口。使用中只需第1引脚Data、第3引脚GND、第4引脚+5VPower和第5引脚Clock这4个引脚即可。鼠标履行一种双向同步
20、串行通信协议,在时钟信号的作用下串行发送或者接收数据。通常情况下,单片机在总线上具有总线控制优先权,可在任何时候抑制来自于鼠标的通信。从鼠标到单片机的数据在时钟的下降沿被读取;相反,单片机到鼠标的数据在时钟的上升沿被读取。时钟信号总由鼠标内部的芯片提供,时钟频率一般在1020 kHz。(1) 单片机对鼠标的通信根据协议要求,单片机对鼠标的控制只需把时钟线拉低最少100 s以上来禁止其通信,并且单片机拉低数据线使之处于请求发送状态。如图3所示,时钟线升为高电平后被PS/2设备重新拉低,即可开始单片机向鼠标的通信。图3 单片机对PS/2设备通信的时序(2) 鼠标对单片机的通信因单片机对总线具有控制
21、权,当鼠标要向单片机发送信息时,必须先检查时钟线是否为高电平。如图4所示,当时钟线出现高电平、数据线出现低电平时,表明鼠标请求发送,单片机可以接收来自鼠标的数据。图4 鼠标对单片机通信的时序(3) 单片机发送的控制数据按照鼠标的PS/2协议规范,实际编程时先对鼠标发送0 xff使其复位,默认采样频率为100次/s,缩放比例为11,数据报告禁止。使用0 xea命令进入stream模式,使用0 xe8、0 x03命令设置解析度为8点/mm,使用0 xf4命令使能数据报告。配合AT89S51单片机的定时器功能,将其时间常数设置为0.1 s,每次中断时发送0 xeb命令读取位移数据信息,每发出一次,单
22、片机接收到的位移数据包都包含有位移信息和按键动作信息。具体格式如表1所列。编译时也只需提取X3的有效数据包即Y方向位移增量。表1 3D型鼠标接收数据格式2.2 PID控制软件算法对该交流变频调速系统建模,首先取电压输入为一个随机值,再测得其转速值。取两个数值构成一个数据对,然后对大量数据对用Matlab仿真求得其幅频特性和相频特性,并且对其幅频特性和相频特性进行相似的拟合。根据拟合的曲线可以近似求得其传递函数为:使用神经网络PID自适应控制对系统进行Matlab的仿真测试,效果令人满意。但因其输入层、隐含层、输出层的多阶矩阵运算使得单片机的运算时间大幅度增加,造成时间上的不确定因素增大;同比使
23、用增量型PID控制,尽管后者需调整3个控制参数,但同样可使精度达到预期的效果,运算时间也大幅度下降,为此选用增量型PID算法作为控制算法。增量式数字PID的控制算法为:其中kp为比列系数,ki为积分系数,kd为微分系数;e(k)为当前位移增量与上一次位移增量的变化量; 同理,e(k-1)、e(k-2)各为往前时间间隔的位移变化量。利用单片机串行中断接收功能,可在PC机上实时在线调节PID的kp、ki、kd参数。 3 上位机监测设计通过单片机的串口发送端,在LabVIEW中编写程序来完成PC 机与数据通信设备的数据交换,直接通过串口接收外部数据并进行图形显示,并可将数据存放在txt文件当中。在L
24、abVIEW中主要是使用VISA控件实现串行口直接数据通信,通过RS232串行接口和LabVIEW实现数据的通信。图5 带运动的时间位移图使用read string控件对数据进行接收,并通过Waveform graph控件就可以显示实时波形。在LabVIEW中自带的范例中,数据的接收并非是连续不断的,而要通过一定的延时;因此,为了不间断地接收单片机发送的串口数据包,须将前面的写和延时都去掉。因串口接收到的数据是字符型的,而我们所需要的是整型数据,因此可通过强制转换将数据转换为单精度整型。创建数组,将数据和数组初始化相结合得到一个完整的数组,通过Waveform graph控件以及移位寄存器即可
25、实现上位机的实时显示与记录。4 检测控制性能评价PS/2接口最大的使用频率是33 kHz。本实验单片机使用12 MHz的晶振,可轻松实现接口功能。但受其芯片特性的影响,尽管OM02的鼠标芯片最高可使用的分辨率为400DPI,但在使用较高分辨率的情况下,鼠标传输的误码率将有所上升,其位移精度也将受到质疑。为保证位移量的准确性,采用200DPI的分辨率,配合看门狗,精度误差和程序稳定性将大为好转。测试结果如图5所示,图中纵坐标为位移增量点,每一点为0.125 mm。带在较低速的运行中尽管存在速度的上下跳动变化,但跳动量较小。图中带速度的设定值为32点,即40.00 mm/s(灵敏度为0.125 m
26、m/s),速度平均值为39.987mm/s(测量数据引自速度曲线刚开始稳定时的前1000个时间点)。因其光电鼠标传感器在正常工作环境中使用,系统呈线性变化,对此可引入速度修正系数k,以提高检测精确度。结语使用光电鼠标作为检测带运动的速度传感器,其价格低廉、准确性高且使用方便,配合单片机的数字式PID编程控制以及LabVIEW虚拟仪器的图形检测显示,可以很好地对速度要求较低、精度要求不太高的设备进行改装,使其输出速度稳定。又因为光电鼠标技术已趋于成熟,一般情况下对检测表面的粗糙度要求不高,在比较恶劣的工况下仍可保证运行无障碍。近些年所推出的激光鼠标,其分辨率可达到0.01 mm,效果甚佳。该实验
27、在某企业的生产部门进行了现场测试,效果理想。编者注: 本文为期刊缩略版,全文见本刊网站。参考文献1 OM02 Optical Mouse sensor Data Sheet,2004.2 赵玉昆.PS2鼠标和单片机的接口J. 上海应用技术学院学报, 2004,4(1).3 林邓伟,刑文生. 光电鼠标芯片组在无接触检测运动物体中的应用J. 微计算机信息,2006,22(72).4 宋健. 数字PID算法在喷雾机器人导航系统中的应用J. 潍坊学院学报,2003,3(6).陈智博,主要研究方向为机械电子工程;林永忠(本科),主要研究方向为自动检测与控制;蔡钟山、刘聃(本科),主要研究方向为检测技术与
28、自动化装置;肖威威(本科),主要研究方向为机械制造及自动化。PS/2 鼠标接口定义作者:本站来源:发布时间:2009-2-12 10:34:34收 藏 评 论PS/2 鼠标接口定义PS/2 鼠标接口为 6 针母插。PinNameDescription1DATAKey Data2n/cNot connected3GNDGnd4VCC+5 VDC5CLKClock6n/cNot connected串行口转PS 2鼠标转接器作者:本站来源:本站原创发布时间:2007-11-30 12:50:35收 藏 评 论串行口转PS 2鼠标转接器说明:本图是我根据一些资料和自己对一些名牌鼠表内带转换口的测量画出
29、的,不过我用在普通PS/2鼠标上试验没有成功过,大家可以注意到PS/2鼠标关键的两脚 1 (Data) 和 5 (Clock) 没有连接,而空脚 2,6 却和 RxD, TxD 相连,所以我认为,PS/2鼠标实际上是无法接在RS-232口的,一些名牌鼠标可以只不过是它利用了1,5两个空脚另外做了两个和 RS-232 口兼容的 RxD, TxD 而已,而普通PS/2鼠标却没有做。 所以大家拿到资料后不要一下子就对自己的鼠标“咔嚓”一剪 . . 我可不管了。本转换口把一个 PS/2 鼠标接到串行口上,到鼠标一侧为 6 针 PS/2 母插头:到 PC 一侧为 9 针母插头: 引脚定义到PS/2 鼠标
30、到串行口Data1RxD22RxDGnd35GndVcc47RtsClk54+6TxD63TxD基于C+的游戏操纵杆模拟鼠标的程序作者:佚名来源:本站整理发布时间:2010-9-1 11:54:08收 藏 评 论要编写一个支持游戏操纵杆的应用程序,首先必须要捕获游戏操纵杆,接着要处理Windows发送给程序窗口的操纵杆消息,最后使用完操纵杆后,还应将捕获的操纵杆资源释放。调用API函数joySetCapture能捕获游戏操纵杆。调用joySetCapture函数后,操纵杆产生的所有消息将会发送到指定的窗口。它的原型为:MMRESULT joySetCapture(HWND hwnd, UINT
31、 uJoyID, UINT uPeriod, BOOL fChanged );其中,参数hwnd为接收操纵杆消息的窗口句柄;参数uJoyID为要捕获的操纵杆标识,它可以是JOYSTICKID1或是JOYSTICKID2,即第一、第二个游戏操纵杆;参数uPeriod为轮询的频率,单位为毫秒,它指定给应用程序发送有关操纵杆信息的间隔时间;参数fChanged为改变位置标识,可设为false。要释放操纵杆的捕获时,使用joyReleaseCapture函数。它只有一个参数,就是操纵杆的标识JOYSTICKID1或JOYSTICKID2。下面,就让我们用Borland C+ Builder 5.0来做
32、一个用游戏操纵杆模拟鼠标的程序。运行Borland C+ Builder 5.0,双击窗体Form1,在Form1的OnCreate事件中加入以下代码捕获一个游戏操纵杆:void _fastcall TForm1:FormCreate(Tobject *Sender)int JoyMsg;/捕获游戏操纵杆JoyMsg=joySetCapture(Handle,JOYSTICKID1,0,false);if(JoyMsg=JOYERR_NOCANDO)/捕获失败ShowMessage(不能捕获游戏杆!);elseif(JoyMsg=JOYERR_UNPLUGGED)/没有连接ShowMessag
33、e(游戏杆未与系统连接!);elseif(JoyMsg=MMSYSERR_NODRIVER)/没有安装ShowMessage(系统没有安装游戏杆!);else/捕获成功ShowMessage(捕获游戏杆成功!);在Form1的OnCloseQuery事件中加入代码,让程序关闭时释放操纵杆捕获的资源:void _fastcall TForm1:FormCloseQuery(Tobject *Sender, bool &CanClose)/释放操纵杆捕获joyReleaseCapture(JOYSTICKID1);捕获游戏操纵杆后,Windows会把所有的操纵杆消息发送给窗口Form1。当操纵杆的
34、方向钮按被按下时,产生的是MM_JOY1MOVE消息,当功能按钮被按下时,产生MM_JOY1BUTTONDOWN消息。在程序中分别响应并处理这两个消息,就可以模拟鼠标的移动和点击。但是在C+ Builder中,这两条消息并不是标准的Windows消息,这就需要我们自已定义和处理消息了。在C+ Builder里响应自定义消息的步骤为:1.建立消息映射表2.声明消息处理函数3.编写消息处理函数首先在代码编辑窗口点击右键,选择弹出菜单的“Open Source/Header File”或是按热键Ctrl+F6,打开窗体Form1头文件“Uint1.h”。在窗体的TForm1类中的公有成员中加入代码来
35、建立消息映射表,把消息的处理权交给自定义的消息处理函数:public:BEGIN_MESSAGE_MAPMESSAGE_HANDLER(MM_JOY1BUTTONDOWN,Tmessage,OnJoyDown)MESSAGE_HANDLER(MM_JOY1MOVE,Tmessage,OnJoyMove)END_MESSAGE_MAP(Tform)然后在类的私有成员中加入代码声明消息处理函数:private:void _fastcall OnJoyDown(Tmessage &Message);void _fastcall OnJoyMove(Tmessage &Message);最后,按Ctr
36、l+F6键切换回“Uint1.cpp”的编辑窗口,在末尾空白处添加下面两个自定义的消息响应函数:/自定义的MM_JOY1BUTTONDOWN消息响应函数OnJoyDownvoid _fastcall TForm1:OnJoyDown(Tmessage &Message)if(Message.Wparam & JOY_BUTTON1)/模拟鼠标左键按下mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);Caption=左键按下;if(Message.Wparam & JOY_BUTTON2)/模拟鼠标右键按下mouse_event(MOUSEEVENTF_RIGH
37、TDOWN,0,0,0,0);Caption=右键按下;if(Message.Wparam & JOY_BUTTON3)/模拟鼠标左键抬起mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);Caption=左键抬起;if(Message.Wparam & JOY_BUTTON4)/模拟鼠标右键抬起mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);Caption=右键抬起;/继续传递消息Tform:Dispatch(&Message);/自定义的MM_JOY1MOVE消息响应函数OnJoyDownvoid _fastcall TForm
38、1:OnJoyMove(Tmessage &Message)int x,y;POINT pt;/取得鼠标当前坐标GetCursorPos(&pt);x=LOWORD(Message.Lparam);y=HIWORD(Message.Lparam);if(x!=32678)if(x)/向右pt.x+=10;else/向左pt.x-=10;if(y!=32678)if(y)/向下pt.y+=10;else/向上pt.y-=10;/设置鼠标坐标SetCursorPos(pt.x,pt.y);/继续传递消息Tform:Dispatch(&Message);注意:调试运行这个程序,系统必须要安装有游戏操
39、纵杆。自定义的消息处理函数末尾最好加一句 TForm1:Dispatch(&Message),这条语句的作用是让消息继续传递下去。Windows是使用用消息处理机制的,如果没有这一句语句,消息将完全被拦截,Windows程序可能由于得不到消息而无法实现正常的功能。新颖的鼠标设计方案作者:佚名来源:本站整理发布时间:2010-8-5 10:30:34收 藏 评 论 类似的设计,大家在2008年的Computex展时应该也见过,很可惜当时代工厂不愿意卖。当时厂商也不愿意跟我提,是帮哪家代工,只说这价格会非常贵。前几天在偶然间看到这产品,要价落219.95美元(另一款较旧的Pro约200美元),嗯,
40、大约1,490元人民币,果然不便宜呀。 这产品最重要的机制,就是上面那一根,可以上、下滚动,并且左右横移,借以控制光标。而下面则有滚轮、左键、右键、中键(双击键) 这种产品的机制,最大的优势,就是你的手不会有太大的移动,能够控制在键盘打字的状态下,并且也结合了护腕垫机能,算是相当不错的设计。不过就我自己玩的结果,他是适合大范围移动,但要很精准来移极短距离光标的话,鼠标还是比较容易做到的。 但是有使用过的人反映,这种设计其实还不如小黑的小红点好用。不过,这也算是一种可以考虑的鼠标研发路子。护腕垫部分可以拆除Pro版计算机鼠标工作原理作者:佚名来源:本站整理发布时间:2009-7-24 12:03
41、:35收 藏 评 论计算机鼠标工作原理 HYPERLINK /article/88/171/2009/2009072480299.html l 1#1 鼠标的发展简介 HYPERLINK /article/88/171/2009/2009072480299.html l 3#3 鼠标的内部结构 HYPERLINK /article/88/171/2009/2009072480299.html l 2#2 鼠标的诞生 HYPERLINK /article/88/171/2009/2009072480299.html l 4#4 鼠标接口 HYPERLINK /article/88/171/200
42、9/2009072480299.html l 5#5 光电鼠标 HYPERLINK /article/88/171/2009/2009072480299.html l 6#6 光电鼠标的精度 HYPERLINK /article/88/171/2009/2009072480299.html l 7#7 无线鼠标 HYPERLINK /article/88/171/2009/2009072480299.html l 8#8 配对和安全性 HYPERLINK /article/88/171/2009/2009072480299.html l 9#9 蓝牙鼠标 HYPERLINK /article/
43、88/171/2009/2009072480299.html l 10#10 为什么叫蓝牙? HYPERLINK /article/88/171/2009/2009072480299.html l 11#11 射频鼠标 HYPERLINK /article/88/171/2009/2009072480299.html l 12#12 多媒体鼠标和遥控器鼠标 HYPERLINK /article/88/171/2009/2009072480299.html l 13#13 游戏鼠标 HYPERLINK /article/88/171/2009/2009072480299.html l 14#14
44、 鼠标的横纵滚轮鼠标的发展简介1984年,随着Apple Macintosh的推出,鼠标也一同跃上舞台。从此在它们的帮助下,计算机的使用方法得以彻底重新定义。在您计算机使用生涯的每一天,只要想移动光标或者激活某些内容,您都会伸出手使用鼠标。鼠标感知您的手部移动和单击并将它们发送给计算机,使计算机能够做出相应的响应。这款微软智能鼠标利用了光学技术。在本文中,我们将揭开人机界面这一重要部分的神秘面纱并了解它的工作原理。鼠标的诞生鼠标的简单与高效令人赞叹。同样令人吃惊的是鼠标变成日常生活的一部分经历了漫长的时间。考虑到人们在讲述之前会自然而然地先指向相关物体,一种出色的指针设备经历了如此漫长的发展过
45、程真是令人惊讶。尽管在上世纪60年代就已经存在对鼠标的初步构思,但直到过了几十年之后鼠标才成为主流。 在初期,由于计算机使用类似于电传打字机或穿孔卡的粗糙界面进行数据输入,因而不需要进行指向。早期的文本终端只是在模仿电传打字机(将屏幕替换为纸),因此经过许多年(上世纪整个60年代到70年代)箭头键才出现在多数终端上。全屏幕编辑器首次真正地利用光标键,它们为人类提供了第一种指向方法。光笔很多年来在各种机器上作为指针设备。图形输入板、操纵杆及其他各种设备也在上世纪70年代大行其道。然而,这些设备实际上都没有作为选择的指针设备受到普遍欢迎。当鼠标连接到Mac计算机并登上舞台时便一举成功。鼠标的某些方
46、面是非常自然的。与绘图式屏幕相比,鼠标非常便宜并且仅占用一点儿桌面空间。在PC世界中,由于缺乏操作系统的支持,鼠标用了较长的时间才得以普及。在 Windows 3.1使图形用户界面(GUI)成为标准后,鼠标很快成为了所选的人机接口方式。鼠标的内部结构所有鼠标的主要目的都是将手部运动转换为计算机可以读取的信号。让我们来看一下轨迹球鼠标的内部结构,从而了解其工作原理: 鼠标的内部部件鼠标内部的滚球接触桌面并在鼠标移动时滚动。 鼠标逻辑板的底面:滚球露出的一部分与桌面接触。鼠标内部的两根辊轴与滚球接触。一根辊轴定向为可检测X方向的运动,另一根辊轴与第一根辊轴成90度,可以检测Y方向的运动。当滚球转动
47、时,一根或两根辊轴也会转动。下图显示了此鼠标中的两根白色的辊轴: 与滚球接触的辊轴检测X方向和Y方向的运动。每根辊轴都与一个轴连接,该轴旋转一个上面有孔的圆盘。当辊轴滚动时,与其连接的轴和圆盘也会旋转。下图显示了圆盘: 典型的光学译码盘:此圆盘的外边缘周围有36个孔。圆盘的一侧有一个红外线LED,另一侧有一个红外线传感器。圆盘中的孔使LED发出的光束中断,因此红外线传感器可以感应到光线脉冲。脉冲频率与鼠标移动的速度和距离直接相关。 跟踪鼠标运动的光学译码盘的特写:圆盘的一侧有一个红外线 LED(透明),另一侧有一个红外线传感器(红色)。请注意红外线传感器(红色)与译码盘之间的那块塑料。板上处理
48、器芯片读取来自红外线传感器的脉冲并将它们转换为计算机可以理解的二进制数据。该芯片通过鼠标线缆将二进制数据发送给计算机。 编码器芯片在鼠标的逻辑部分占有重要地位,这种小型处理器读取来自红外线传感器的脉冲并将它们转换成发送到计算机的字节。您还可以看到两个用来检测单击活动的按钮(在线缆连接器的两侧)。在这种光学机械布局内,圆盘做机械运动,光学系统对光线脉冲计数。在这个鼠标中,滚球的直径为21毫米,辊轴的直径为7毫米。译码盘上有36个孔。因此,如果鼠标移动25.4毫米(1英寸),编码器芯片就会检测到41个光线脉冲。您可能已经注意到,每个译码盘有两个红外线LED和两个红外线传感器,译码盘的一侧有两个红外
49、线LED,另一侧有两个红外线传感器,这样鼠标内部就有四对LED/传感器。通过这种布局,处理器能够检测到圆盘的转动方向。译码盘与每个红外线传感器之间有一块塑料,其上有一个精确定位的小孔。红外线传感器通过这块塑料上的开口可以“看到”光线。圆盘一侧开口的位置略高于另一侧开口的位置,准确地讲是高出译码盘上孔的高度的一半。这种差异使得两个红外线传感器在略微不同的时间看到光线脉冲。有些时候,一个传感器可以看到光线脉冲而另一个传感器看不到,反之亦然。本页对如何确定方向进行了详细介绍。鼠标接口目前,市场中的多数鼠标都使用USB接头连接到计算机上。USB是一种将各种类型的外围设备(包括打印机、数码相机、键盘和鼠
50、标)连接到计算机的标准方式。有关这项技术的更多信息,请参见USB端口工作原理。 一些现在还在使用的老式鼠标会有一个PS/2型接头,如下所示:典型的PS/2接头。还有其他一小部分老式鼠标使用一种串行接头与计算机相连,而不是使用PS/2接头。光电鼠标光电鼠标由安捷伦科技开发并于1999年底问世。这种鼠标实际上采用了一个每秒钟可以拍摄几千张图片的微型相机。 多数光电鼠标几乎可以在任何表面上工作而不需要使用鼠标垫,它们采用一个小型的红色发光二极管(LED)向鼠标工作表面发出光线,光线反射到互补金属氧化物半导体(CMOS)传感器上。除LED外,最近的一项创新是基于激光的光电鼠标,与LED技术相比这种鼠标
51、可以检测到更多鼠标底部表面的细节。这样较之于LED鼠标,基于激光的鼠标可在更多表面上使用。下面介绍光电鼠标的传感器与其他部件如何协同工作:CMOS传感器将每一幅图像都发送给数字信号处理器(DSP)进行分析。 DSP检测各图像中的图案,并分析图像中图案的位置如何变动。 根据一系列图像中图案位置的变化,DSP确定鼠标的移动距离并将相应坐标发送给计算机。 计算机根据从鼠标接收到的坐标信息,移动屏幕上的光标。这个过程每秒发生数百次,使得光标的移动看上去非常流畅。 在这张照片中,可以看到鼠标底部的传感器。与轨迹球鼠标相比,光电鼠标具有下列优势:没有可移动的零部件,这意味着磨损更少、故障率更低。 灰尘无法
52、进入鼠标内部并干扰跟踪传感器。 增加的跟踪分辨率意味着响应更顺畅。 不需要鼠标垫等专用表面。 苹果公司将自己的光电鼠标转变成了一件时髦的艺术品。推陈出新另一种类型的光电鼠标已经存在了十多年。在最初的光电鼠标技术中,一束汇聚的光线发射到一个反射率很高的鼠标垫,然后从鼠标垫表面反射到传感器上。鼠标垫上有由较暗的线条构成的网格。每次移动鼠标时,网格会使光束中断。光束中断时,传感器会向计算机发送一个信号并且光标会移动相应的量。 这种光电鼠标很难使用,要求您在握住它的时候必须使其与鼠标垫正好成直角,才能确保光束和传感器对齐。此外,如果鼠标垫损坏或遗失,那么在买到新的鼠标垫之前,这种鼠标将无法使用。而当今
53、的光电鼠标对于用户更加友好并且更加可靠。光电鼠标的精度许多因素影响着光电鼠标的精度,其中最重要的一个方面是分辨率。分辨率是在您移动鼠标时光学传感器及聚焦透镜所能“看到”的每英寸的像素数。分辨率表示为点每英寸(dpi)。分辨率越高,鼠标就越灵敏,而且移动鼠标以获得响应所需的距离就越短。 多数鼠标的分辨率为400或800dpi。然而,专为电子游戏而设计的鼠标可提供高达1600dpi的分辨率。某些游戏鼠标允许您在玩的过程中降低分辨率,让鼠标在需要进行小幅度、慢速运动的情况下灵敏度低一些。过去很长一段时间内,有线鼠标的响应速度较之无线鼠标更为迅速。然而,随着无线技术及光学传感器的改进,这个事实正在改变
54、。影响鼠标质量的其他因素包括:光学传感器的大小如果其他鼠标部件可以应付的话,尺寸越大越好。大小从16x16像素到30 x30像素不等。 刷新率指的是在您移动鼠标时传感器采集图像的频率。如果其他鼠标部件可以处理得来的话,通常是越快越好。刷新率为每秒1500到6000个图像样品。 图像处理速率指的是光学传感器的大小与刷新率的综合指标。依然是越快越好,速率为48.6万到580万像素/秒。 最大速度指的是您可以移动鼠标并获得精确轨迹的最大速度。越快越好,速度为0.4到1米/秒。 无线鼠标多数无线鼠标使用射频(RF)技术向计算机传输信息。由于基于射频,RF设备需要两个主要部件:发射器和接收器。其工作原理
55、如下: 发射器安装在鼠标外壳内。它发送一个电磁(射频)信号将鼠标移动和所单击鼠标键的相关信息进行编码。 接收器与计算机相连。它接受信号,将信号解码并传送到鼠标驱动程序软件和计算机操作系统。 接收器可以是插入计算机中的单独设备、插入扩展插槽内的专用卡,也可以是内置部件。 Logitech供图MX900和扩展坞许多电子设备都使用射频进行通信,包括手机、无线网络和车库自动门。为了在通信时不产生冲突,不同类型的设备指定了不同的频率。较新式的手机使用的频率为900兆赫,车库自动门的工作频率为40兆赫,而802.11b/g无线网络的工作频率为2.4千兆赫。兆赫(MHz)表示“每秒100万周”,“900兆赫
56、”表示“每秒有9亿个电磁波”。千兆赫(GHz)表示“每称10亿周”。要了解有关RF和频率的更多信息,请参见无线电频谱工作原理。优势与常用于短距离无线通信的红外线技术(如电视遥控器)不同,RF设备在发射器(鼠标)和接收器之间不需要畅通的瞄准线。正如使用无线电波通信的其他类型的设备一样,无线鼠标信号可以穿过桌子或显示器等障碍物。RF技术为无线鼠标提供了大量额外优势,其中包括:RF发射器需要很低的功率,可以使用电池操作 RF部件很便宜 RF部件重量轻 与目前市场中的多数鼠标一样,无线鼠标采用光学传感器技术而非早期的轨迹球系统。光学技术提高了精度,并且几乎可以让您在任何表面上使用无线鼠标就线缆不再将您
57、束缚在计算机附近这一点上来说,这是一个重要功能。 配对和安全性为了使鼠标中的发射器与其接收器通信,它们二者必须配对。这意味着,这两个设备使用一个公共识别码以相同的频率在同一个信道工作。信道仅仅是一个特定频率的代码。配对目的是排除自其它源和RF设备的干扰。配对方法随鼠标厂商而不同。某些设备在提供时已经预先配对。其他设备则使用配对序列等方法,当您按特定按钮或者转动接收器和/或鼠标上的滚轮时,配对会自动开始。为了保护鼠标向接收器发送的信息,多数无线鼠标都包括一个加密方案将数据加密为不可读取的格式。一些设备还使用一种跳频方法,使得鼠标和接收器按照预定方式自动改变频率。这样可以进一步防止干扰和窃听。蓝牙
58、鼠标无线鼠标普遍采用的一种RF技术是蓝牙。蓝牙技术可以将打印机、耳机、键盘和鼠标等外设与计算机和掌上型电脑(PDA)等支持蓝牙的设备进行无线连接。由于蓝牙接收器可以一次支持多个蓝牙外设,因此蓝牙也称为个人局域网 (PAN)。蓝牙设备的传输范围大约为10米。 蓝牙使用RF技术在2.4GHz的频带上工作。它通过一种称为扩频跳频的技术避免了多个蓝牙外设之间的干扰。802.11b/g无线网络等无线上网设备也在2.4GHz频带上工作,同样的还有一些无绳电话和微波炉。1.2版本的蓝牙提供了自适应跳频(AFH),这是一种专门避免与其他2.4GHz通信之间发生干扰的增强型跳频技术。为什么叫蓝牙?Harald
59、Bluetooth是公元10世纪末期的丹麦国王。他努力将丹麦及挪威的一部分统一为一个王国并将基督教引入丹麦。他留下了一块大型纪念碑“Jelling神谕古文石”来纪念他的父母。Harald Bluetooth于公元986年在与儿子Svend Forkbeard的一场战争中被杀死。选择这一名称作为标准是要表明来自波罗的海地区(包括丹麦、瑞典、挪威和芬兰)的公司对通信行业的重要性,即使该名称与这种技术的工作原理毫不粘边。 射频鼠标另一种常见的无线鼠标是工作频率为27MHz、传输距离大约为2米的RF设备。最近,2.4GHz的射频鼠标进入市场,它的传输距离更远(大约10米),而且传输速度更快、干扰更少。
60、一个房间内有多个射频鼠标可能会导致串扰,这意味着接收器可能无意间接收来自错误鼠标的信息传输。配对与多信道有助于避免这个问题。 一般情况下,RF接收器插入USB端口并且不接受除鼠标(可能还有与鼠标一起销售的键盘)以外的任何外设。专供笔记本电脑配套使用的一些便携式鼠标带有一个紧凑型接收器,不使用时可以放在鼠标内部的插槽中。与鼠标有关的提示如果您想使用无线射频鼠标和键盘,请一起购买它们。每个厂商和设备的配对与传输技术是各不相同的。如果您单独购买RF无线键盘和鼠标,您可能需要将它们各自的接收器连接到PC上。鼠标创新配合使用一些PC键盘与鼠标设计为配套使用,以便为您提供更多输入选项。例如,Logitec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电缆过路顶管保护施工方案
- 锚杆框架梁坡面排水施工方案
- 隧道排水专项施工方案
- 2026中国运动绷带与贴扎类产品消费升级趋势与品牌建设报告
- 2025年万安县城区学校选调教师真题
- 2026中国细胞治疗CDMO行业监管政策演变与生产工艺标准化研究
- 薪酬福利调整与员工关系协议
- 玩具出口贸易合同2026版
- 风险降低与风险规避与应对合同
- 2026前沿锂电池制造行业市场违规的供需态势分析及投资效益研判规划报告
- 国家普通话水平测试试题及答案
- 车辆事故安全警示教育
- GB/T 45681-2025铸钢件补焊通用技术规范
- T/CNCIA 01030-2023负离子涂料
- 四年级上册语文课文必背内容
- 2025年浙江省慢阻肺病患者健康服务规范试题
- 电工(考评员、高级考评员)-练习题
- 合同签署确认
- 疼痛患者的心理支持与心理疏导
- JGJ114-2014 钢筋焊接网混凝土结构技术规程
- 怒江水电开发的工程伦理案例分析
评论
0/150
提交评论