堵 峰,奚冠巍,吕文发
(1.海军驻无锡地区军代室,江苏 无锡 214000;2.中国船舶重工集团公司江苏自动化研究所,江苏 连云港 222006)
远程设备控制技术指的是通过本地计算机来实现对远程设备的监视和控制,如打开、关闭、添加、删除远程设备的文件或文件目录,控制远程设备鼠标移动,上传下载文件,关闭、重起系统等。本文将采用ARM芯片,模拟键盘、鼠标来实现本地计算机对远程设备的控制,实现接收远程设备发送的信息、模拟生成计算机主机可以接收的信息,实现远程设备各项参数的模拟键入等,使操作远程设备如操作本地计算机一样方便。
系统实时接收键盘、鼠标命令,向计算机主机进行转发,实现键盘、鼠标正常信息输入;在外部设备的控制下自动完成键盘、鼠标信息传输通道切换,并接收外部设备发送的指示信息,模拟生成计算机主机可以接收的信息并按照设计的时序发送至计算机主机,实现远程设备信息中各项参数的模拟键入;实现参数键入后,及时将控制权交还给键盘、鼠标,恢复正常操控功能,系统的结构框图如图1所示。
远程设备信息自动输入转换系统工作流程如下:
第一步,在未收到远程设备信息时,模拟器对键盘、鼠标进行实时转发,完成键盘、鼠标命令信息输入;
第二步,在需要输入远程设备信息时,首先进入需要输入远程设备信息的页面,在远程设备信息处理设备上输入需要发送的远程设备信息批号,并确认发送;
第三步,远程设备信息处理设备将远程设备信息的内容和需要输入的位置信息按照规定的接口协议发送给模拟器;
第四步,模拟器在收到远程设备的信息后,自动进行键盘、鼠标信息传输通道切换,屏蔽原有键盘、鼠标传输通道,接通模拟键盘、鼠标通道;
第五步,模拟器首先控制鼠标指针移到屏幕左上角位置(0,0)像素点上,然后调用鼠标最优移动算法将鼠标指针移动到指定位置像素区域,并模拟单击指令,选中需要输入的数据;
第六步,模拟器将接收到远程设备信息的键盘码转换成符合专用键盘格式的扫描码数据,完成远程设备信息的自动键入;
第七步,数据输入完成后,模拟器控制将键盘、鼠标信息传输通道切换回原来状态,恢复键盘、鼠标 正常操控功能。
图1 基于的ARM的远程设备信息自动输入转换系统结构框图
远程设备信息自动输入转换系统可采用成熟的接口电路技术,以ARM为主控芯片,结合串口控制芯片、DC-DC电源转换模块、继电器芯片等一些专用接口芯片和外围电路实现。远程设备信息自动输入转换系统逻辑原理图如图2所示。
图2 基于的ARM的远程设备信息自动输入转换系统逻辑原理图
ARM芯片采用NXP公司的LPC2378[1-2]。该芯片集成了4个UART串口,两个I2C口,两个USB主口,片内集成了512KB的Flash和38KB的SRAM。
在键盘、鼠标模拟器中,ARM 作为主控芯片完成远程设备信息的接收和发送应答,实现键盘、鼠标输入的切换,并把远程设备信息模拟转发给本地计算机。
系统在不通电的情况下,键盘输入和模拟键盘输出直接连通,当外部设备输入信息后,切换继电器输出引脚,实现远程设备信息解析并按照PS/2协议转发给本地计算机。信息发送完毕后,切换继电器,恢复键盘输入和模拟键盘输出直接连通状态。键盘输入和模拟键盘输出同时通过继电器切换和ARM芯片连接,实现信息的转发。
系统在不通电的情况下,鼠标输入和模拟鼠标输出直接连通。当外部设备输入信息后,切换继电器输出引脚,实现远程设备信息处理转发给本地计算机。信息发送完毕后,切换继电器,恢复鼠标输入和模拟鼠标输出直接连通状态。
远程设备输入采用RS485协议,输入和输出端完全隔离,控制芯片采用美信公司 MAX1490,在该芯片内集成了隔离变压器方便电路的设计。同时需要采用 TI公司的 SN74ALVC164245DL芯片来实现双向5V和3.3V交换,采用该方案后,技术难度小。
因为ARM的GPIO引脚是通用的,每个I/O口的功能至少有两个,如RS232发送串口,需要设置其为TXD和RXD引脚才能正确工作。管脚功能设置有管脚功能选择寄存器PINSELn设置。配置4个串口,远程设备占用一个串口,鼠标输入数据占用一个串口,模拟鼠标输出占用一个串口,调试、下载数据占用一个串口,而LPC2378正好4个串口,所以不需要再扩展串口。
管脚复用设置寄存器PINSEL0 = 0x4050005A,即设置P0.0为TXD3口,P0.1为RXD3口,P0.2为TXD0口,P0.3为RXD0口,P0.10为TXD2口,P0.11为RXD1口,P0.15为TXD1口。其中TXD3和RXD3口用于调试备用口,TXD0口和RXD0口为远程设备信息输入输出口,TXD2和RXD2口为模拟器和主机的通信串口,用于模拟鼠标方式向主机发送数据。TXD1和RXD1为接收鼠标的串口数据,判断鼠标是否正在移动或按键。
设置U0LCR为0x83,即使能除数访问寄存器,禁止间隔发送,使能奇偶检验,字长度为8位字符长度,1个停止位。设置波特率因子,本系统中,系统晶体频率为11.0592MHz,由公式
用户可以对除数的小数波特率发生器不影响UARTn的波特率。即MULVAL为1,DIVADDVAL为0,那么只要求出UnDL就可以了。设置调试口的波特率为 9600bps,即 TXD3和 RXD3波特率为9600bps,那么其UnDL为72;远程设备信息占用TXD0和RXD0口,其波特率为19200bps,那么其UnDL为36;鼠标发送接收波特率都为1200bps,那么其UnDL为576,主机鼠标接口UnDL也为576。
设置好UnDLM和UnDLL后,设置UnLCR,禁止访问除数锁存。接收和发送FIFO使能,FIFO只要接收字符就会中断,并且复位FIFO,注册FIFO中断。
键盘输入输出采用PS/2[3]协议,PS/2协议规定4根物理线,一根电源线,一根电源地线,两根双向信号线,一根时钟线,一根数据线。
1)键盘至主机格式
图3 键盘至主机格式
如图3所示,键盘在时钟上升沿将数据准备好,主机在下降沿时将数据读取至主机,当主机读取到完整的一帧扫描码(校验位、起始位、停止位均正确),将时钟拉低(时间约为12个时钟周期)后,再释放时钟,准备接收下一帧数据。
2)主机至键盘格式
图4 主机至键盘格式
主机在上升沿时将数据准备好,键盘在时钟下降沿时将数据读取,读取完整的一帧报文后将数据线拉低一个时钟周期后释放数据线。
键盘扫描码有两种不同的类型:“通码”和“断码”。当一个键被按下或按住就发送通码;当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了“扫描码集”,有三套标准的扫描码集分别是第一套、第二套和第三套。所有现代的键盘默认使用第二套扫描码。本方案也采用的是第一套扫描码集。例如,当按下键盘字符“A”时,发送通码1C,当释放键盘字符“A”后,发送断码F0,1C,断码的第一个字节一般都是F0,所以当按下键盘字符A然后释放,发送的字节码是1C,F0,1C。
在系统不开电时,直接连接键盘输入和模块键盘输出,一旦远程设备有数据输入且有键盘数据,此时检查键盘是否正在输入,等待键盘输入完成,开始切换继电器,实现模拟PS/2协议的数据发送。通过模拟键盘输出口输出到计算机主机。
鼠标输入采用的是微软的串口鼠标协议,传输波特率1200BPS、7个数据位、1个起始位、2个停止位、无校验。协议格式为3个字节:第1字节的6、7位固定为1,4,5位分别为左右键状态,2、3位为上下移动数据的高6、7位,0、1位为左右移动数据的高6、7位;第2、第3字节发送的低六位是左右上下的其余6位数据,其中Y表示上下、X表示左右移动的数据位[4]。例如:[0ECH 82H BAH](P1=ECH,P2=82H,P3=BAH)反馈出鼠标向右移动了 2个单位,向上移动了6个单位,目前左键按下。
鼠标数据流程为开机时主机通过拉低 DTR线检测鼠标,鼠标发送CD表示鼠标存在。在系统不开电是,直连接鼠标输入和模拟模块输出,一旦远程设备有数据输入且有鼠标数据,此时检查鼠标是否正在输入,等待鼠标输入完成,开始切换继电器,实现模拟RS232协议的数据发送。通过模块串口输出口输出到计算机主机。
该系统在保留原有人工键入方式的基础上,通过远程设备信息输入转换系统建立了加装的外加设备与原有设备之间信息的直接接口交联,实现了远程设备信息的自动输入;信息传输时间小于5s,与人工键入方式相比,时间缩短约3min。在不损失输入信息的精度、确保信息正确性的同时,消除了复杂的人工键入环节,降低了操作人员的负担和压力,缩短了系统的反应时间,满足了实际需要,同时为其它引进设备改装提供了可借鉴的技术思路,具有重要的意义。
[1] 周立功,等. 深入浅出 ARM7--LPC2300[M].广州:广州致远电子有限公司,2008.
[2] NXP.LPC2378 Datasheet[DB/OL].www.nxp.com,2006.
[3] 陈启美,吴守兵,周洋. 微机·外设·接口[M].北京:清华大学出版社,2002.
[4] 陈志宇,沈建华. 嵌入式设备鼠标接口的设计与实现[J].计算机应用,2003.