




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机械鼠标的工作原理机械鼠标的工作原理机械鼠标是通过移动鼠标,带动胶球,胶球滚动又磨擦鼠标内分管水平和垂直两个方向的栅轮滚轴,驱动栅轮转动。栅轮轮沿为格栅状。紧靠栅轮格栅两侧,一侧是一红外发光管,另一侧是红外接收组件。红外接收组件为一三端器件,其中包含甲乙两个红外接收管。在水平和垂直栅轮夹角正对方向有一压紧轮,它使胶球无论向何方向滚动都始终压紧在两个栅轮轴上。 通过ps/2 口或串口与主机相连。接口使用四根线,分别为电源 , 地,时钟和数据。正常工作时,鼠标的移动转换为水平和垂直栅轮不同方向和转速的转动。栅轮转动时,栅轮的轮齿周期性遮挡红外发光管发出的红外线照射到接收组件中的甲管和乙管,从而甲和乙输出端输出电脉冲至鼠标内控制芯片。由于红外接收组件中甲乙两管垂直排列,栅轮轮齿夹在红外发射与接收中间的部分的移动方向为上下方向,而甲乙接收管与红外发射管的夹角不为零,于是甲乙管输出的电脉冲有一个相位差。鼠标内控制芯片通过此脉冲相位差判知水平或垂直栅轮的转动方向,通过此脉冲的频率判知栅轮的转动速度,并不断通过数据线向主机传送鼠标移动信息,主机通过处理使屏幕上的光标同鼠标同步移动。机械鼠标是靠橡胶球带动光栅轮的,用两套光电对管是因为鼠标有X、Y轴两个运动方向,设仅横向移动鼠标,此时只有X轴方向的运动,那么存在需要识别X轴的光栅轮是顺时针还是逆时针转动(也就是你的鼠标是向左移还是向右移),这就只能够依靠一套光电对管来探测(光电对管指的是发光和接收两个元件),在光电接收管中按上下方位封装好两个光电三极管就能通过判断两个光电三极管的导通次序来得知光栅轮的转动方向了。你要用来测电机转动很简单,这个元件中间的引脚为公共集电极,1和3脚分别为两个光电三极管的发射极,如果只需要测转速而不需判断电机转动方向则只需要在电路中连接1、2或者2、3脚另一脚不接就是把这个元件当作单个光电三极管在用了。按照鼠标的PS/2协议规范,实际编程时先对鼠标发送0xff使其复位,默认采样频率为100次/s,缩放比例为11,数据报告禁止。使用0xea命令进入stream模式,使用0xe8、0x03命令设置解析度为8点/mm,使用0xf4命令使能数据报告。配合AT89S51单片机的定时器功能,将其时间常数设置为0.1 s,每次中断时发送0xeb命令读取位移数据信息,每发出一次,单片机接收到的位移数据包都包含有位移信息和按键动作信息。具体格式如表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 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 BYTE4 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 BYTE3 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 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 中引用的外部定义子程序为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. 初始化鼠标驱动程序: 例如:中断号INT33h 功能16h 子功能17h 中断号:用于请求服务 功能号:用于确定用户期望获取哪种服务 子功能号:进一步指定所希望的服务 调用寄存器:设置被调用的服务功能所要求的参数 返回寄存器:返回服务功能执行结果 调用的进程:设置参数 中断号INT33h 功能15h BX寄存器 ES:DX 功能16h 功能17h ES:DX2. 显示或隐藏鼠标光标中断33h的功能1和2分别置鼠标光标为“打开”和“关闭”。而鼠标驱动程序一直跟踪鼠标的移动,当鼠标移动时就更新它在屏幕的位置。鼠标的程序从开始通常在打开光标,一直到程序结束。鼠标驱动程序采用光标标记,用做显示和隐藏光标的分层方法。初次打开光标标记设为-1;功能1将标记加至0,使光标出现。功能2将标记减1,当标记为负值时就隐藏光标。3. 设置文本鼠标光标的形状在以视频文本模式工作时,鼠标驱动程序生成两类光标:(1)硬件光标,由视频硬件所产生的常规屏幕光标,由水平扫描线组成。(2)软件或属性光标,这种情况下,鼠标驱动程序在光标出现的屏幕位置写数据。驱动程序在改变此位置显示的字符或改变字符属性,使它闪烁、背景色等。(3)中断33h的功能Ah设置文本光标的类型:AX存放功能号;BX存放应光标或软件光标选择;CX存放起始扫描线;DX存放终止扫描线。4. 设置图形鼠标光标的形状中断33h的功能9h设置图形模式下的鼠标光标的形状,并定义光标里的一个点为热点。光标由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存放首行号,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 , DX9. 设置鼠标与光标移动的比率 程序可以改变鼠标移动相对于鼠标光标移动的比率。大多数鼠标的分辨率为每英寸200米基。在一定方向上移动一定数目的米基,转换为鼠标光标移动一个像素。默认情况8米基使水平移动一个像素;16米基使光标垂直移动一个像素。中断21h的功能Fh可以改变米基 像素的比例。中断33h的功能13h是改变产生双倍速率的这个阀值,默认值为64米基/秒。P202例7-810. 监视鼠标按钮中断33h的功能5h和6h报告鼠标按钮的信息。这两项功能都在AX返回一个按钮状态字节,报告按钮2个或3个当前状态。此状态字节由中断21h的功能3h返回。它报告鼠标光标的位置。中断33h的功能5h和6h跟踪按下按钮和释放按钮。11.截取单击、双击和拖动事件许多使用鼠标的程序都要检测鼠标的单击和双击,并跟踪按钮按下的拖动事件。12. 建立鼠标中断例程在INT 33h的功能Ch建立列程。入口时,ES:DX指向列程CX中存放一个位模式,设定几种应当调用的例程事件。其模式为:光电鼠标传感器的精密测量与控制系统 下载作者:华侨大学 陈智博 林永忠 蔡钟山 刘聃 肖威威来源:不详发布时间:2008-10-18 15:07:23收 藏 评 论摘要 对于普通的带传动装置进行较高精度的速度控制,传统的检测及控制器件未必能让人满意。光电鼠标芯片因以其高精度、低现场环境要求、低价格等因素非常适用于位置检测场合。鉴于此,结合光电鼠标芯片与AT89S51单片机,通过对普通带传动装置的改进,可使其传动做到快速、稳定、准确。测试表明,这种检测及控制方式是行之有效的。关键词 PS/2协议 低速 PID控制 单片机接口 光学鼠标 速度测量引言带传动是工业生产中普遍使用的传输装置,其常用的速度检测装置是安装在电机旋转端的光电编码器;但设备在长期使用中,因磨损等不可预计情况,使得电机转速与带传动速度出现严重的不一致。这种半闭环控制方式在需要较高精度的带传动速度控制上误差很大。光栅尺等因价格昂贵、对现场环境要求高,往往对于普通工况中带传动装置的改装并不很适用。鉴于此,本文提出了使用一般商用的光电鼠标代替传统的检测器件的方法,通过AT89S51单片机实现现场的PID控制,使带传动速度达到满意的要求。1 检测系统硬件组成1.1 OM02光学传感器芯片及鼠标控制器这款光学CMOS传感器是一款针对个人计算机所配置的非接触式光电鼠标芯片,集成有数字信号处理器(DSP)、双通道正交输出端口等。在芯片底部有一个感光眼,能够不断地对物体进行拍照,并将前后两次图像送入DSP中进行处理,得到移动的方向和距离。DSP产生的位移值,转换成双通道正交信号,配合鼠标控制器,将双通道正交信号转化成单片机能够处理的PS/2数据格式。设备安装在一套塑料的光学透镜设备上,并配有一个高强度的LED。此外,它可提供高达400点/in的分辨率以及16 in/s以内的检测速度。图1为鼠标芯片传感器的装配图。因OM02芯片为CMOS型传感器,因此必须配有与之相适应的高强度发光二极管,发射角度(与底板之间的夹角)为3045。在标准安装配合后,底板距离工作表面的有效距离在02 mm内,OM02芯片可进行正常的数据接收检测。图1 鼠标芯片传感器装配图1.2 检测控制原理及系统硬件设计本系统采用全闭环控制方式,如图2所示。将鼠标检测到的位移增量反馈回单片机,并进行数字式PID控制,然后将运算结果通过D/A转换芯片传给变频器,进而控制电机的转速。图2 光电鼠标检测控制原理框图系统主要由电动机、传动部分、执行部分和控制部分组成。机械传动系统作为机器的重要组成部分,不仅应能实现预期功能,而且应具有良好性能。为此,采用三相交流异步电机(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个引脚即可。鼠标履行一种双向同步串行通信协议,在时钟信号的作用下串行发送或者接收数据。通常情况下,单片机在总线上具有总线控制优先权,可在任何时候抑制来自于鼠标的通信。从鼠标到单片机的数据在时钟的下降沿被读取;相反,单片机到鼠标的数据在时钟的上升沿被读取。时钟信号总由鼠标内部的芯片提供,时钟频率一般在1020 kHz。(1) 单片机对鼠标的通信根据协议要求,单片机对鼠标的控制只需把时钟线拉低最少100 s以上来禁止其通信,并且单片机拉低数据线使之处于请求发送状态。如图3所示,时钟线升为高电平后被PS/2设备重新拉低,即可开始单片机向鼠标的通信。图3 单片机对PS/2设备通信的时序(2) 鼠标对单片机的通信因单片机对总线具有控制权,当鼠标要向单片机发送信息时,必须先检查时钟线是否为高电平。如图4所示,当时钟线出现高电平、数据线出现低电平时,表明鼠标请求发送,单片机可以接收来自鼠标的数据。图4 鼠标对单片机通信的时序(3) 单片机发送的控制数据按照鼠标的PS/2协议规范,实际编程时先对鼠标发送0xff使其复位,默认采样频率为100次/s,缩放比例为11,数据报告禁止。使用0xea命令进入stream模式,使用0xe8、0x03命令设置解析度为8点/mm,使用0xf4命令使能数据报告。配合AT89S51单片机的定时器功能,将其时间常数设置为0.1 s,每次中断时发送0xeb命令读取位移数据信息,每发出一次,单片机接收到的位移数据包都包含有位移信息和按键动作信息。具体格式如表1所列。编译时也只需提取X3的有效数据包即Y方向位移增量。表1 3D型鼠标接收数据格式2.2 PID控制软件算法对该交流变频调速系统建模,首先取电压输入为一个随机值,再测得其转速值。取两个数值构成一个数据对,然后对大量数据对用Matlab仿真求得其幅频特性和相频特性,并且对其幅频特性和相频特性进行相似的拟合。根据拟合的曲线可以近似求得其传递函数为:使用神经网络PID自适应控制对系统进行Matlab的仿真测试,效果令人满意。但因其输入层、隐含层、输出层的多阶矩阵运算使得单片机的运算时间大幅度增加,造成时间上的不确定因素增大;同比使用增量型PID控制,尽管后者需调整3个控制参数,但同样可使精度达到预期的效果,运算时间也大幅度下降,为此选用增量型PID算法作为控制算法。增量式数字PID的控制算法为:其中kp为比列系数,ki为积分系数,kd为微分系数;e(k)为当前位移增量与上一次位移增量的变化量; 同理,e(k-1)、e(k-2)各为往前时间间隔的位移变化量。利用单片机串行中断接收功能,可在PC机上实时在线调节PID的kp、ki、kd参数。 3 上位机监测设计通过单片机的串口发送端,在LabVIEW中编写程序来完成PC 机与数据通信设备的数据交换,直接通过串口接收外部数据并进行图形显示,并可将数据存放在txt文件当中。在LabVIEW中主要是使用VISA控件实现串行口直接数据通信,通过RS232串行接口和LabVIEW实现数据的通信。图5 带运动的时间位移图使用read string控件对数据进行接收,并通过Waveform graph控件就可以显示实时波形。在LabVIEW中自带的范例中,数据的接收并非是连续不断的,而要通过一定的延时;因此,为了不间断地接收单片机发送的串口数据包,须将前面的写和延时都去掉。因串口接收到的数据是字符型的,而我们所需要的是整型数据,因此可通过强制转换将数据转换为单精度整型。创建数组,将数据和数组初始化相结合得到一个完整的数组,通过Waveform graph控件以及移位寄存器即可实现上位机的实时显示与记录。4 检测控制性能评价PS/2接口最大的使用频率是33 kHz。本实验单片机使用12 MHz的晶振,可轻松实现接口功能。但受其芯片特性的影响,尽管OM02的鼠标芯片最高可使用的分辨率为400DPI,但在使用较高分辨率的情况下,鼠标传输的误码率将有所上升,其位移精度也将受到质疑。为保证位移量的准确性,采用200DPI的分辨率,配合看门狗,精度误差和程序稳定性将大为好转。测试结果如图5所示,图中纵坐标为位移增量点,每一点为0.125 mm。带在较低速的运行中尽管存在速度的上下跳动变化,但跳动量较小。图中带速度的设定值为32点,即40.00 mm/s(灵敏度为0.125 mm/s),速度平均值为39.987mm/s(测量数据引自速度曲线刚开始稳定时的前1000个时间点)。因其光电鼠标传感器在正常工作环境中使用,系统呈线性变化,对此可引入速度修正系数k,以提高检测精确度。结语使用光电鼠标作为检测带运动的速度传感器,其价格低廉、准确性高且使用方便,配合单片机的数字式PID编程控制以及LabVIEW虚拟仪器的图形检测显示,可以很好地对速度要求较低、精度要求不太高的设备进行改装,使其输出速度稳定。又因为光电鼠标技术已趋于成熟,一般情况下对检测表面的粗糙度要求不高,在比较恶劣的工况下仍可保证运行无障碍。近些年所推出的激光鼠标,其分辨率可达到0.01 mm,效果甚佳。该实验在某企业的生产部门进行了现场测试,效果理想。编者注: 本文为期刊缩略版,全文见本刊网站。参考文献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).陈智博,主要研究方向为机械电子工程;林永忠(本科),主要研究方向为自动检测与控制;蔡钟山、刘聃(本科),主要研究方向为检测技术与自动化装置;肖威威(本科),主要研究方向为机械制造及自动化。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鼠标转接器说明:本图是我根据一些资料和自己对一些名牌鼠表内带转换口的测量画出的,不过我用在普通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 鼠标到串行口Data1RxD22RxDGnd35GndVcc47RtsClk54+6TxD63TxD基于C+的游戏操纵杆模拟鼠标的程序作者:佚名来源:本站整理发布时间:2010-9-1 11:54:08收 藏 评 论要编写一个支持游戏操纵杆的应用程序,首先必须要捕获游戏操纵杆,接着要处理Windows发送给程序窗口的操纵杆消息,最后使用完操纵杆后,还应将捕获的操纵杆资源释放。调用API函数joySetCapture能捕获游戏操纵杆。调用joySetCapture函数后,操纵杆产生的所有消息将会发送到指定的窗口。它的原型为:MMRESULT joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged );其中,参数hwnd为接收操纵杆消息的窗口句柄;参数uJoyID为要捕获的操纵杆标识,它可以是JOYSTICKID1或是JOYSTICKID2,即第一、第二个游戏操纵杆;参数uPeriod为轮询的频率,单位为毫秒,它指定给应用程序发送有关操纵杆信息的间隔时间;参数fChanged为改变位置标识,可设为false。要释放操纵杆的捕获时,使用joyReleaseCapture函数。它只有一个参数,就是操纵杆的标识JOYSTICKID1或JOYSTICKID2。下面,就让我们用Borland C+ Builder 5.0来做一个用游戏操纵杆模拟鼠标的程序。运行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)/没有连接ShowMessage(游戏杆未与系统连接!);elseif(JoyMsg=MMSYSERR_NODRIVER)/没有安装ShowMessage(系统没有安装游戏杆!);else/捕获成功ShowMessage(捕获游戏杆成功!);在Form1的OnCloseQuery事件中加入代码,让程序关闭时释放操纵杆捕获的资源:void _fastcall TForm1:FormCloseQuery(Tobject *Sender, bool &CanClose)/释放操纵杆捕获joyReleaseCapture(JOYSTICKID1);捕获游戏操纵杆后,Windows会把所有的操纵杆消息发送给窗口Form1。当操纵杆的方向钮按被按下时,产生的是MM_JOY1MOVE消息,当功能按钮被按下时,产生MM_JOY1BUTTONDOWN消息。在程序中分别响应并处理这两个消息,就可以模拟鼠标的移动和点击。但是在C+ Builder中,这两条消息并不是标准的Windows消息,这就需要我们自已定义和处理消息了。在C+ Builder里响应自定义消息的步骤为:1.建立消息映射表2.声明消息处理函数3.编写消息处理函数首先在代码编辑窗口点击右键,选择弹出菜单的“Open Source/Header File”或是按热键Ctrl+F6,打开窗体Form1头文件“Uint1.h”。在窗体的TForm1类中的公有成员中加入代码来建立消息映射表,把消息的处理权交给自定义的消息处理函数: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);最后,按Ctrl+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_RIGHTDOWN,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 TForm1: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);注意:调试运行这个程序,系统必须要安装有游戏操纵杆。自定义的消息处理函数末尾最好加一句 TForm1:Dispatch(&Message),这条语句的作用是让消息继续传递下去。Windows是使用用消息处理机制的,如果没有这一句语句,消息将完全被拦截,Windows程序可能由于得不到消息而无法实现正常的功能。新颖的鼠标设计方案作者:佚名来源:本站整理发布时间:2010-8-5 10:30:34收 藏 评 论 类似的设计,大家在2008年的Computex展时应该也见过,很可惜当时代工厂不愿意卖。当时厂商也不愿意跟我提,是帮哪家代工,只说这价格会非常贵。前几天在偶然间看到这产品,要价落219.95美元(另一款较旧的Pro约200美元),嗯.,大约1,490元人民币,果然不便宜呀。 这产品最重要的机制,就是上面那一根,可以上、下滚动,并且左右横移,借以控制光标。而下面则有滚轮、左键、右键、中键(双击键) 这种产品的机制,最大的优势,就是你的手不会有太大的移动,能够控制在键盘打字的状态下,并且也结合了护腕垫机能,算是相当不错的设计。不过就我自己玩的结果,他是适合大范围移动,但要很精准来移极短距离光标的话,鼠标还是比较容易做到的。 但是有使用过的人反映,这种设计其实还不如小黑的小红点好用。不过,这也算是一种可以考虑的鼠标研发路子。护腕垫部分可以拆除Pro版计算机鼠标工作原理作者:佚名来源:本站整理发布时间:2009-7-24 12:03:35收 藏 评 论计算机鼠标工作原理鼠标的发展简介鼠标的内部结构鼠标的诞生鼠标接口光电鼠标光电鼠标的精度无线鼠标配对和安全性蓝牙鼠标为什么叫蓝牙?射频鼠标多媒体鼠标和遥控器鼠标游戏鼠标鼠标的横纵滚轮鼠标的发展简介1984年,随着Apple Macintosh的推出,鼠标也一同跃上舞台。从此在它们的帮助下,计算机的使用方法得以彻底重新定义。在您计算机使用生涯的每一天,只要想移动光标或者激活某些内容,您都会伸出手使用鼠标。鼠标感知您的手部移动和单击并将它们发送给计算机,使计算机能够做出相应的响应。这款微软智能鼠标利用了光学技术。在本文中,我们将揭开人机界面这一重要部分的神秘面纱并了解它的工作原理。鼠标的诞生鼠标的简单与高效令人赞叹。同样令人吃惊的是鼠标变成日常生活的一部分经历了漫长的时间。考虑到人们在讲述之前会自然而然地先指向相关物体,一种出色的指针设备经历了如此漫长的发展过程真是令人惊讶。尽管在上世纪60年代就已经存在对鼠标的初步构思,但直到过了几十年之后鼠标才成为主流。 在初期,由于计算机使用类似于电传打字机或穿孔卡的粗糙界面进行数据输入,因而不需要进行指向。早期的文本终端只是在模仿电传打字机(将屏幕替换为纸),因此经过许多年(上世纪整个60年代到70年代)箭头键才出现在多数终端上。全屏幕编辑器首次真正地利用光标键,它们为人类提供了第一种指向方法。光笔很多年来在各种机器上作为指针设备。图形输入板、操纵杆及其他各种设备也在上世纪70年代大行其道。然而,这些设备实际上都没有作为选择的指针设备受到普遍欢迎。当鼠标连接到Mac计算机并登上舞台时便一举成功。鼠标的某些方面是非常自然的。与绘图式屏幕相比,鼠标非常便宜并且仅占用一点儿桌面空间。在PC世界中,由于缺乏操作系统的支持,鼠标用了较长的时间才得以普及。在 Windows 3.1使图形用户界面(GUI)成为标准后,鼠标很快成为了所选的人机接口方式。鼠标的内部结构所有鼠标的主要目的都是将手部运动转换为计算机可以读取的信号。让我们来看一下轨迹球鼠标的内部结构,从而了解其工作原理: 鼠标的内部部件1. 鼠标内部的滚球接触桌面并在鼠标移动时滚动。 鼠标逻辑板的底面:滚球露出的一部分与桌面接触。2.3. 鼠标内部的两根辊轴与滚球接触。一根辊轴定向为可检测X方向的运动,另一根辊轴与第一根辊轴成90度,可以检测Y方向的运动。当滚球转动时,一根或两根辊轴也会转动。下图显示了此鼠标中的两根白色的辊轴: 与滚球接触的辊轴检测X方向和Y方向的运动。4. 每根辊轴都与一个轴连接,该轴旋转一个上面有孔的圆盘。当辊轴滚动时,与其连接的轴和圆盘也会旋转。下图显示了圆盘: 典型的光学译码盘:此圆盘的外边缘周围有36个孔。5. 圆盘的一侧有一个红外线LED,另一侧有一个红外线传感器。圆盘中的孔使LED发出的光束中断,因此红外线传感器可以感应到光线脉冲。脉冲频率与鼠标移动的速度和距离直接相关。 跟踪鼠标运动的光学译码盘的特写:圆盘的一侧有一个红外线 LED(透明),另一侧有一个红外线传感器(红色)。请注意红外线传感器(红色)与译码盘之间的那块塑料。6. 板上处理器芯片读取来自红外线传感器的脉冲并将它们转换为计算机可以理解的二进制数据。该芯片通过鼠标线缆将二进制数据发送给计算机。 编码器芯片在鼠标的逻辑部分占有重要地位,这种小型处理器读取来自红外线传感器的脉冲并将它们转换成发送到计算机的字节。您还可以看到两个用来检测单击活动的按钮(在线缆连接器的两侧)。在这种光学机械布局内,圆盘做机械运动,光学系统对光线脉冲计数。在这个鼠标中,滚球的直径为21毫米,辊轴的直径为7毫米。译码盘上有36个孔。因此,如果鼠标移动25.4毫米(1英寸),编码器芯片就会检测到41个光线脉冲。您可能已经注意到,每个译码盘有两个红外线LED和两个红外线传感器,译码盘的一侧有两个红外线LED,另一侧有两个红外线传感器,这样鼠标内部就有四对LED/传感器。通过这种布局,处理器能够检测到圆盘的转动方向。译码盘与每个红外线传感器之间有一块塑料,其上有一个精确定位的小孔。红外线传感器通过这块塑料上的开口可以“看到”光线。圆盘一侧开口的位置略高于另一侧开口的位置,准确地讲是高出译码盘上孔的高度的一半。这种差异使得两个红外线传感器在略微不同的时间看到光线脉冲。有些时候,一个传感器可以看到光线脉冲而另一个传感器看不到,反之亦然。本页对如何确定方向进行了详细介绍。鼠标接口目前,市场中的多数鼠标都使用USB接头连接到计算机上。USB是一种将各种类型的外围设备(包括打印机、数码相机、键盘和鼠标)连接到计算机的标准方式。有关这项技术的更多信息,请参见USB端口工作原理。 一些现在还在使用的老式鼠标会有一个PS/2型接头,如下所示:典型的PS/2接头。还有其他一小部分老式鼠标使用一种串行接头与计算机相连,而不是使用PS/2接头。光电鼠标光电鼠标由安捷伦科技开发并于1999年底问世。这种鼠标实际上采用了一个每秒钟可以拍摄几千张图片的微型相机。 多数光电鼠标几乎可以在任何表面上工作而不需要使用鼠标垫,它们采用一个小型的红色发光二极管(LED)向鼠标工作表面发出光线,光线反射到互补金属氧化物半导体(CMOS)传感器上。除LED外,最近的一项创新是基于激光的光电鼠标,与LED技术相比这种鼠标可以检测到更多鼠标底部表面的细节。这样较之于LED鼠标,基于激光的鼠标可在更多表面上使用。下面介绍光电鼠标的传感器与其他部件如何协同工作: CMOS传感器将每一幅图像都发送给数字信号处理器(DSP)进行分析。 DSP检测各图像中的图案,并分析图像中图案的位置如何变动。 根据一系列图像中图案位置的变化,DSP确定鼠标的移动距离并将相应坐标发送给计算机。 计算机根据从鼠标接收到的坐标信息,移动屏幕上的光标。这个过程每秒发生数百次,使得光标的移动看上去非常流畅。 在这张照片中,可以看到鼠标底部的传感器。与轨迹球鼠标相比,光电鼠标具有下列优势: 没有可移动的零部件,这意味着磨损更少、故障率更低。 灰尘无法进入鼠标内部并干扰跟踪传感器。 增加的跟踪分辨率意味着响应更顺畅。 不需要鼠标垫等专用表面。 苹果公司将自己的光电鼠标转变成了一件时髦的艺术品。推陈出新另一种类型的光电鼠标已经存在了十多年。在最初的光电鼠标技术中,一束汇聚的光线发射到一个反射率很高的鼠标垫,然后从鼠标垫表面反射到传感器上。鼠标垫上有由较暗的线条构成的网格。每次移动鼠标时,网格会使光束中断。光束中断时,传感器会向计算机发送一个信号并且光标会移动相应的量。 这种光电鼠标很难使用,要求您在握住它的时候必须使其与鼠标垫正好成直角,才能确保光束和传感器对齐。此外,如果鼠标垫损坏或遗失,那么在买到新的鼠标垫之前,这种鼠标将无法使用。而当今的光电鼠标对于用户更加友好并且更加可靠。光电鼠标的精度许多因素影响着光电鼠标的精度,其中最重要的一个方面是分辨率。分辨率是在您移动鼠标时光学传感器及聚焦透镜所能“看到”的每英寸的像素数。分辨率表示为点每英寸(dpi)。分辨率越高,鼠标就越灵敏,而且移动鼠标以获得响应所需的距离就越短。 多数鼠标的分辨率为400或800dpi。然而,专为电子游戏而设计的鼠标可提供高达1600dpi的分辨率。某些游戏鼠标允许您在玩的过程中降低分辨率,让鼠标在需要进行小幅度、慢速运动的情况下灵敏度低一些。过去很长一段时间内,有线鼠标的响应速度较之无线鼠标更为迅速。然而,随着无线技术及光学传感器的改进,这个事实正在改变。影响鼠标质量的其他因素包括: 光学传感器的大小如果其他鼠标部件可以应付的话,尺寸越大越好。大小从16x16像素到30x30像素不等。 刷新率指的是在您移动鼠标时传感器采集图像的频率。如果其他鼠标部件可以处理得来的话,通常是越快越好。刷新率为每秒1500到6000个图像样品。 图像处理速率指的是光学传感器的大小与刷新率的综合指标。依然是越快越好,速率为48.6万到580万像素/秒。 最大速度指的是您可以移动鼠标并获得精确轨迹的最大速度。越快越好,速度为0.4到1米/秒。 无线鼠标多数无线鼠标使用射频(RF)技术向计算机传输信息。由于基于射频,RF设备需要两个主要部件:发射器和接收器。其工作原理如下: 发射器安装在鼠标外壳内。它发送一个电磁(射频)信号将鼠标移动和所单击鼠标键的相关信息进行编码。 接收器与计算机相连。它接受信号,将信号解码并传送到鼠标驱动程序软件和计算机操作系统。 接收器可以是插入计算机中的单独设备、插入扩展插槽内的专用卡,也可以是内置部件。 Logitech供图MX900和扩展坞许多电子设备都使用射频进行通信,包括手机、无线网络和车库自动门。为了在通信时不产生冲突,不同类型的设备指定了不同的频率。较新式的手机使用的频率为900兆赫,车库自动门的工作频率为40兆赫,而802.11b/g无线网络的工作频率为2.4千兆赫。兆赫(MHz)表示“每秒100万周”,“900兆赫”表示“每秒有9亿个电磁波”。千兆赫(GHz)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030领带产业行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030镍合金行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030铝金属围栏行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030金融支付卡行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030重型机械行业市场发展分析及竞争格局与投资战略研究报告
- 2025-2030轻质建材行业市场深度调研及前景趋势与投资战略研究报告
- 2025-2030超高清晰度电视行业市场现状供需分析及投资评估规划分析研究报告
- 筷子的历史试题及答案
- 瓜子儿童创意课件
- 退役语文考试题及答案
- 产科妊娠期肝内胆汁淤积症护理查房课件
- 皮炎护理查房
- 危险废物培训知识
- 2024-2030年中国床垫市场运行现状及投资发展前景预测报告
- 渔业生态环境保护国际合作-洞察分析
- 五年级全册心理健康教育课件
- 铁路反恐防暴安全知识
- 民用爆炸物品的安全管理
- 血液标本采集(静脉采血)
- 中建室内电梯安装专项方案
- 水利水电建筑工程基础知识单选题100道及答案解析
评论
0/150
提交评论