基于WINCE平台eVC编程要点之二- WinCE下的GPRS应用

来源:互联网 发布:mac版是什么意思? 编辑:程序博客网 时间:2024/05/19 23:12


9000嵌入式主板、EM9260嵌入式主板、EM9160嵌入式主板都是预装了正版WinCE操作系 统,ARM9嵌入式主板的所有通讯接口均配置有标准的WinCE驱动程序,本文侧重于介绍嵌入式主板中通讯串口的一种典型应用,即如何在这些嵌入式主板上 进行GPRS的应用开发。

  GPRS的标准应用模式是作为客户端模式,通过拨号“*99***1#”到中国移动的GPRS节点 服务器,从而实现拨号上网的功能。在WinCE操作系统中提供有RAS(Remote Access Service),即“远程访问服务”,它允许远程拨号连接,一旦建立了连接,就可以像局域网中的计算机一样进行通讯。在英创提供的系列ARM9嵌入式主 板接有GPRS设备,就可以通过RAS拨号直接接入到Internet,进一步可通过TCP/IP数据通讯来实现应用数据的通讯,从而实现应用数据进行无 线传输的功能。下面就分三个部分来介绍开发RAS功能实现GPRS自动拨号的过程。其中包括如何自动建立一个GPRS拨号连接、GPRS无线模块的电源管 理、自动进行GPRS拨号。

一、自动创建GPRS拨号连接

  在进行GPRS拨号之前,需要首先创建一个拨号连 接,也就是需要添加一个RASEntry到RAS的电话薄中,并将其保存在注册表中。RASEntry中需要设置作为调制解调器的设备属性(端口设置、拨 号选项)以及指定电话号码和用户验证参数。在EM9000嵌入式主板上,直接支持WinCE桌面系统,用户可以通过界面中“控制面板”手动添加GPRS拨 号连接。具体的设置方法请参见技术文档《EM9000 无线通讯网络设置》一文,这里就不再赘述。而EM9260、EM9160嵌入式主板没有支持WinCE的界面,所以英创公司为了方便用户的使用,英创专门 设计了自动创建拨号连接的程序RASEntry.exe,并捆绑在内核中,用户可以直接运行windows>目录下的RASEntry.exe,即 可自动创建GPRS的拨号连接。该程序对于英创的所有的ARM9嵌入式主板均适用。注意RASEntry.exe只需运行一次即可。

  对于EM9000标准板卡,GPRS拨号属性中的端口配置为 COM3,波特率为57600,8位数据位,无校验,1位停止位。EM9260、EM9160中GPRS拨号属性中的端口配置为 COM2,波特率为57600,8位数据位,无校验,1位停止位。

二、GPRS无线模块的上电过程

  在英创提供的所有ARM9嵌入式主板开发套件中均可直接接上MC39i模块进行GPRS应用开发,这里主要介绍西门子公司的MC39I的上电过程。

  MC39i 的电源管理是通过1路数字输入(GPRS_PWR)、2路数字输出(GPRS_STB、GPRS_AUX)来实现。其中GPRS_PWR用于检测 MC39i模块上电的状态,输入高表示无线模块已上电;GPRS_STB主要用于对MC39i进行上电操作,通过GPRS_STB输出一个脉冲,使能 MC39i上电;GPRS_AUX主要用于对MC39i进行控制,输出一个高电平,将关闭MC39i 电源供电。

  在程序设计中,为了确保每次MC39i模块上电操作正常,我们所提供的程序所采用的策略是先将模块关电,然后再进行正常的上电操作。

  GPRS_PowerOff( ); // 操作GPRS_AUX关闭MC39i模块电源
  Sleep( 200 ); // 延时200ms
  GPRS_PowerOn( ); // 操作GPRS_STB 对MC39i模块进行上电操作

  目 前华为公司的GTM900无线模块,与MC39i在外形尺寸以及管脚都是一致的,因此在英创提供的ARM9嵌入式主板开发套件中也可以直接接上 GTM900进行GPRS应用开发。GTM900的电源管理也是利用的GPRS_STB、GPRS_AUX,它和MC39I唯一的区别就在上电、关电的操 作过程,为此英创公司对阵GTM900提供相应的GPRS_PowerOff( )、GPRS_PowerOn( ) 函数,应用仍然按照相同调用顺序即可实现对GTM900的自动上电操作。

三、自动进行GPRS 拨号连接

  GPRS 拨号连接建立成功后,就可以直接调用WinCE系统提供的标准函数RasDial(…)来自动建立PPP连接,关于该函数的定义和使用方法可在eVC的在 线帮助中获得。这里主要是介绍如何在程序中实现自动进行GPRS拨号,即在英创公司所提供的自动拨号程序中所采取的策略。

  为了确保每次自动拨号成功,程序的执行流程如下:

  1、 无论当前的GPRS无线模块处于何种状态,通过相关的函数GPRS_PowerOff( )、GPRS_PowerOn() 对GPRS模块进行关电复位、重新上电的操作。以确保GPRS模块处于初始上电的状态。

  2、 调用WinCE系统提供的标准函数RasEnumConnections(…)列举当前已建立的活动连接,如果得到的活动连接数目不为0,再调用函数 RasHangUp(…)进行挂断操作,挂断关闭当前活动的连接。这样操作的目的是确保只有一个活动的连接。

  3、 最后再调用函数RasDial(…)进行GPRS的拨号连接。拨号成功后,系统将保持一个活动的拨号连接。