基于gprs技术实现的远程交通信息通信
前言论文联盟http://
gprs(general packet radio service)是通用分组无线业务的简称[1],gprs技术可实现rs-232接口数据和远端数据服务中心进行数据的无线透明传输,本文利用gprs的特点及资料参考[2-5],将其应用到远程交通信息的通信中,见图1。
1 gprs通信硬件设计
gprs通信部分是选择嵌入式网络模块etr232i作为系统的核心硬件平台,无线通讯模块mc35i作为系统数据传输的物理通道,见图2。
1)嵌入式网络模块etr232i。etr232i外观见图3所示,etr232i的外接管脚是36芯双排插针cn1和cn2组成[6]。cn1信号电平为lvttl(3.3v)电平,cn2信号为标准ttl(5v)电平。
2)通信模块mc35i。gprs通信模块mc35i是进行无线数据传输的物理通道,通过异步串口与嵌入式网络模块etr232i相连,以zif40插座与评估底板相连接。通信模块mc35i在系统中充当调制解调器(modem)功能,保证gprs系统接入互联网实现串行通信。
2 gprs应用程序设计
gprs主要用于无线发送串口数据,因此gprs系统需要稳定的操作系统和完善的api接口函数,有效地实现ppp-tcp/ip协议,支持多个连接。它的应用程序可以直接操作各个api函数来实现基于ppp-tcp/ip的数据通讯,对gprs应用,在ppp层支持串口多路转换协议处理不同网络情况。WWW.133229.cOm系统选用dos作为基本操作系统,borland c/c++3.1作为软件开发工具[7]。
2.1 定义工程文件的主循环
开发应用主程序用于实现所要实现串口数据透明传输的功能,开发的应用主程序gprs232.cpp是定义工程文件的主循环,具有以下要求:1)第一步进行初始化操作(comidx、baudidx、timeout),从配置文件中读取配置参数(getinipara,服务器参数),以及对串口初始化操作(int portnum,char* pdat,int len,设置串口中断);2)进入程序主循环,首先调用ppp_running(),自动进行gprs拨号上网操作,直到该函数返回ppp的状态值为ppp link up,表明gprs拨号上网已经成功。循环再进入到下一步操作,要求和远端服务中心建立tcp连接。此时需要直接调用tcp manager->running(),直到该函数返回连接的状态为open,表示tcp连接已经建立[8]。程序的主循环不断地查询ppp的连接状态和tcp是否打开。在应用程序设计中,需要实现心跳包(响应等待的最长时间)的处理,如果在设置的心跳时间内一直没有数据的通讯传输,程序将主动发送一个心跳测试包到远端服务中心。在程序中心跳测试时间设置为400个tick值,约为20秒,也可以设置短一点。应用程序中需要有三个调用子程序:一是获取远端服务器参数(包括远端服务器基本参数设置:ipstr、id.port、comidx、baudidx,即远端ip址、端口号、串口号以及波特率);二是串口接收数据时参数设置(包括串口号、字符串长度、响应时间等);三是串口发送数据时参数设置(包括串口号、字符串长度、响应时间等)。
实现串口与远程中心数据无线传输的应用主程序流程图设计见图4。
2.2 建立工程文件gprs232.prj
进入bc环境,按alt+p打开project菜单,选择“open project”,在弹出对话框“open project file”栏输入新建工程文件名称“gprs232.prj”。键确认后,bc自动打开“project:gprs232”的project窗口,在此基础上添加所需的cpp文件:etr232i.cpp、readini.cpp、gprs.cpp、tcpclnt.cpp、rs232x3.cpp,修改name栏的文件扩展名成“*.lib”,确认后,向工程文件中添加lib文件:etr_ppp.lib。
prj文件中项目添加完毕,选择菜单compile下的“build all”l进行编译链接,编译链接成功将生成可运行gprs232.exe文件。按键关闭编译链接弹出窗口,project窗口将显示各个cpp模块的编译信息,即
每个模块中程序代码的行数“lines”,每个模块中程序代码的大小“code”,每个模块中定义的静态数据大小“data”。运用远程文件管论文联盟http://理tdrf指令,将编译生成可执行文件(exe文件)“拷贝”到gprs网络模块etr232i的flash中,嵌入式网络模块etr232i转化为运行模式,完成设计。