浅议基于WinCE的通信技术
2017-06-03侯萱
侯萱
(中国计量大学 浙江杭州 310018)
摘要:本文着重阐述了基于嵌入式系统PDA在Windows CE平台下实现红外通讯功能的开发方法,目的在于实现遵从IrDA标准的PDA系统与和IrDA标准不兼容的红外设备进行通讯。主要内容涉及PDA针对与IrDA协议不兼容设备进行红外通讯的解决办法,相关驱动程序设计方法与开发策略,以及实际验证与研究结论等,核心的技术思路是通过对红外通讯协议进行自定义进而绕开IrDA协议,通过EVC开发环境开发相关驱动程序对PDA进行下载,从而通过PDA的URAT串行端口发送与协议相对应的编码到IR收发器,实现需求的红外通信功能。文中对技术方法、设计思路、开发流程、编译环境,以及驱动程序主要模块的关键源代码,给予了充分的阐述和说明。
关键词:红外通讯;自定义协议;IrDA
1.前言
由于红外通信的方便高效,使之在PC、PC外设以及信息家电等设备上的应用日益广泛,如目前PDA的红外通信收发端口已成为必要的通信接口,因此应用PDA的红外收发端口对某些受红外控制的设备进行控制与通信正成为一个新的技术应用方向。由于当前PDA红外收发协议都是遵照IrDA协议的,而大部分的红外通信器所使用的IR通信协议一般并不与IrDA协议相兼容。为实现与这类设备进行红外通信,必须对红外通讯协议进行自定义,开发相关驱动程序对PDA进行下载,从而通过PDA的URAT串行端口发送与协议相对应的编码到IR收发器,实现需求的红外通信功能。考虑到当前PDA采纳的Pocket PC架构是基于WinCE系统,由于WinCE系统是专门为信息设备和嵌入式应用等所设计,并具有可压缩、高效和易升级特性的操作系统,因此在WinCE平台上利用EVC开发环境,开发和编译自定义协议的红外通讯驱动程序和应用软件,进而实现基于WinCE的自定义红外协议PDA通讯技术,对于PDA通讯功能的拓展和相关红外通讯设备的适用性提高,具有很好的技术深化意义和开发应用价值。
2.红外通讯基本原理与IrDA协议简介
红外通讯一般采用红外波段内的近红外线,波长在0.75μm至25μm之间,目前红外通信主要应用在无线遥控领域。红外遥控器在发射遥控指令时把二进制数调制成一系列的脉冲串行格式信号后发射出去,常用的调制方法有脉冲宽度调制(PWM)和脉冲位置调制(PPM)两种,用于遥控的红外信号的载波频率大约在36kHz上下,通常以载波的通断实现。红外受控器件的接受头在接受到红外光波时,如果光波的频率是在要求的频率下,如38~40kHz,则在接受头输出端输出低电平,反之则是高电平。
IrDA是常用于计算机和外设中的红外传输标准,该标准起源于Hewlett-Packard计算器中使用的红外通信连接。最初的IrDA标准定义协议是IrDA1.0,简称为SIR(Serial InfraRed),它是基于HP-SIR开发出来的一种异步的、半双工的红外通讯方式。SIR以系统的异步通讯收发器(UART)为依托,通过对串行数据脉冲的波形压缩和对所接收的光信号电脉冲的波形扩展这一编码解码过程(3/16 EnDec)实现红外数据传输。由于受到UART通讯速率的限制,SIR的最高通讯速率只有115.2Kbps,即通常的电脑串行端口的最高速率,但在一般应用中已能满足传输设备对通讯速率要求。随后IrDA又推出了更高速率的协议标准,如FIR(传输速率达到4Mbit/s)和VFIR协议标准(传输速率达到16Mbit/s)。
3.自定义红外协议PDA通讯技术
3.1 WinCE系统红外通讯特点
Windows CE的设计思路是一种小型基于ROM的,具有Win32子集API的操作系统,同时Windows CE设备几乎均具有与IrDA协议兼容的红外IR端口。一般基于WinCE的设备具有3种实现红外IR通信的方法,即原始IR、仿真红外串口IrComm和红外套接字IrSock。原始IR就是系统将IR收发机作为串行電缆,不对数据做任何处理,而由应用程序负责检测冲突和其它可能发生的问题;IrComm模式把红外口虚拟为串口和并口,通讯时把它作为一个串口或并口来对待。IrComm端口在很多方面与串行端口和原始IR端口不同。这些差别是因为IrComm端口是一个模拟端口而不是真实的设备。IrComm驱动程序使用IrSock来管理IR链接。然后驱动程序只负责反映数据流和一些控制字符以便模拟串行连接。IrSock实际上是一种与套接相似的API,这种API建立在用于红外通信的IrDA堆栈顶端。IrSock是IrDA堆栈唯一高级接口,IrSock所提供的是一种查询准备通过红外端口进行会话的设备的方法,以及仲裁、冲突侦测和控制。
3.2 设计与开发思路
基于PDA自定通讯协议技术实现对移动通讯信道分配仿真器的红外控制,关键是在红外通讯的基本收发规则的基础上,通过自定义红外通讯协议进而绕开IrDA协议,进行驱动程序和应用软件的开发。首先必须使用原始IR方法进行通讯,同时要考虑如何实现38~40kHz的红外载波,解决思路是通过设置串口的波特率为115200HZ,数据位为8位,偶校验,两个停止位,并由串口连续发送数据0xDB,则完整的串行通信数据帧就是011011011011,由此连续发送的0xDB数据就构成了38.4KHZ的载波;其次要考虑采用合适的驱动程序与应用软件的编译环境,由于是EVC(eMbedded Visual C++)是对应WinCE平台进行嵌入式系统开发的软件编译环境,在开发手段与编译方式上与VC++非常类似,因此基于EVC编译环境进行相关驱动程序和应用软件的开发,在编译调试通过后下载到PDA上,即可实现对通讯仿真器的红外控制功能。
4.结束语
本文自定义的红外协议是按照有调制脉冲编码方式进行的,也可以改变MakeStream()来实现其他的编码方式,在这种情况下当获知某种红外遥控设备的编码协议后,则可以使用PDA对该设备进行红外控制,从而实现PDA的通用控制器角色并易于走进工业控制领域。进一步的开发改进方向可以在PDA上构建小型数据库,并且存储多种红外控制协议,从而使该红外控制驱动程序更为通用;另外以上红外控制方案仅涉及到红外发送功能,如果要增加红外接受功能,则可利用基于IrDA协议的Ircomm和IrSock方法。随着PC上红外应用的日益广泛以及对红外通信质量要求的提高,与IrDA协议兼容的设备将越来越多,以该两种方法开发驱动程序实现PDA的多功能红外控制较采用原始IR方法将更加高效和稳定。
参考文献
[1][美] Douglas Boling 著. Microsoft Windows CE 程序设计. 北京大学出版社. 1999年8月
[2][美] John Catsoulis 著. 嵌入式硬件设计 徐君明等译. 中国电力出版社
[3]Microsoft Windows CE Programmers Guide 1999 Microsoft Press