微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于GPS+CDMA的物流车辆监控终端的设计

基于GPS+CDMA的物流车辆监控终端的设计

时间:03-18 来源:互联网 点击:

S3C2440A与GS-15B的接口连接图如图3所示。终端使用S3C2440A的串口2连接GPS模块,为了增强驱动能力,在S3C2440A的TXD1和PXD1管脚上加了2个100 kΩ的上拉电阻。终端一般只接收GPS信息,不对GPS做写操作,所以为了保护芯片,在S3C2440A的RXD1与GS-15B之间加了1个100 Ω的电阻和1个型号为MCIA148的反向二极管,从而保证了终端运行时的稳定。


图3 S3C2440A与GS-15B的接口连接图

  3 终端软件设计

  终端的软件部分是基于WinCE 5.0嵌入式操作系统设计的,WinCE是一个多任务、完全抢占式的32位嵌入式操作系统,支持WinCE MFC、ATL、WinCE API和一些附加的编程接口以及各种通信技术。WinCE嵌入式操作系统具有操作界面良好、实时性较高、占用资源少、开发工具丰富以及强大的技术支持等优势,充分满足本终端软件的设计需求。

  3.1 终端软件设计流程

  首先系统上电,启动bootloader,加载WinCE内核,启动WinCE嵌入式操作系统。然后初始化CPU、LCD、GPS,CDMA等外围模块,再加载串口驱动和网络协议,若加载成功则执行用户应用程序,若加载失败则返回,重新加载串口驱动和网络协议。其中终端的用户应用程序包括:CDMA无线网络接入程序、网络数据传输程序、GPS串口接收程序等。终端软件设计流程图如图4所示。


图4 终端软件设计流程图

  3.2 CDMA无线网络接入程序

  终端通过AT指令控制CDMA模块,实现无线网络接入和网络数据传输。

  系统运行后,首先初始化CDMA模块,设置波特率为115 200 b/s,然后进入拨号等待状态,终端经过PPP拨号连接登录网络,接入号为777,用户名和密码均为card。确认登陆网络成功后,则调用GPS串口接收程序和网络数据传输程序,采用定时方式向监控中心发送终端的GPS定位信息。

  建立PPP(point-to-point protocol)连接的AT指令及返回值如下:


  3.3 CDMA无线网络通信程序

  终端通过CDMA网络接入Internet后,无线网络通信程序将终端解析的GPS数据通过Intemet上传到监控中心。本终端软件设计采用流格式套接字进行网络通信,对应于TCP/IP协议中面向连接的TCP协议。网络数据传输程序采用客户机/服务器机制编程,终端(客户机)进程由用户操纵;而监控中心(服务器)进程则驻留在主机上连续运行,等待终端连接请求进入。

  监控中心的网络通信程序流程如下:1)用socket()函数创建套接口,并给套接口地址结构赋值;2)用bind()函数使套接口与本地IP地址、端*绑定,选用静态IP地址;3)用listen()函数在该套接口上*连接请求;4)用accept()函数接收终端连接请求,产生新的套接口及描述字并与终端连接,利用新的套接字发送和接收数据;5)用fork()函数派生新的子进程与终端通信,父进程继续*其他请求。这样就可避免一个终端与监控中心建立连接后,监控中心不能再与其他终端通信的问题。

  终端的TCP程序流程如下:1)用socket()创建本地套接口,给监控中心套接口地址结构赋值;2)用connect()函数使本地套接口向监控中心套接口主动发出建立连接请求,经三次握手建立TCP连接;3)若连接建立成功,则用send()和recv()函数与监控中心通信;4)通信结束,用close()关闭套接口。

  3.4 终端GPS串口程序

  软件开发工具采用EVC(embedded visual C++),EVC是Windows CE上的主流开发工具,封装了网络底层通讯、COM互操作、RAPI等。EVC支持MFC类库的子集,使Win32平台上的VC程序可以方便地移植到WinCE平台上。

  终端GPS串口程序主要完成两个功能:接收GPS数据和解析GPS数据。GPS模块输出遵循NMEA-0183标准。程序流程如下:

  1)使用OpenPort()函数打开串口,该函数使用创建文件函数CreatFile()打开串口2,以获取串口2的操作句柄m_hComm;

  2)如果串口2打开成功,则读取当前串口的设置,即通过GetCommState()读取串口参数结构体DCB变量;

  3)用SetCommState()对串口2进行相应的设置:如设置波特率为4 800 b/s,8位数据位,无奇偶校验,1位停止位,无数据流控制;

  4)按位读取数据,判断帧起始是否为$GPRMC,若为$GPRMC则从中提取时间、经度、纬度、速度等信息并存入相应结构体;判断帧起始是否为$GPGGA,若为$GPGGA则从第9字段提取海拔高度并存入相应结构体;判断帧起始是否为$GPGSV,若为$GPGSV则从中提取有效卫星数目、有效卫星编号等信息并存入相应结构体;

  5)用SetWindowText()在LCD上显示接收到的GPS数据和解析后的GPS信息;

  6)最后,在需要时用ClosePort()函数关闭串口2。该函数使用CloseHandh()关闭串口2的句柄m_hComm。

  4 运行结果

本文所设计的终端软件运行结果如图5所

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top