新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于GPRS的出租车监控调度系统方案

基于GPRS的出租车监控调度系统方案

作者:时间:2011-10-10来源:网络收藏
3.1.2 终端的软件设计

本文引用地址:http://www.eepw.com.cn/article/150124.htm

  该终端的软件设计主要包含两个部分:GPS 定位信息的接收和 拨号上网的实现。

  由于终端移植了嵌入式Linux(内核版本为2.6.16),它提供丰富的设备支持和成熟的管理能力,因而大大地简化了软件的开发过程。

  (1)GPS 定位信息接收的实现

  该过程主要通过 Linux 串口通信编程来实现,在实现过程中的关键处理部分是:串口属性设置以及对接收到的GPS 信息的解析。

  由于 GPS 模块输出的每帧数据都是以换行符结束,所以在设置串口属性的时候可将其模式设为规范(Canonical)模式,即每次读取串口时先将数据保存到缓存,直到读到换行符时所有数据才会被传输,这样就能保证每次读取的是整帧数据,方便之后的帧头判断和信息解析。接下来还要根据GPS 模块的默认参数配置串口传输速率为4800bps,8 位数据位,1 位停止位,无校验位,串口属性就设置完毕了。

  GPS 模块的输出帧遵循NMEA0183 标准,具有多种格式,主要由帧头进行标志,包括$GPGGA、$GPGLL、$GPGSA、 $GPGSV、$GPGMC、$GPVTG 六种帧,分别描述不同信息,一般来说$GPRMC 帧就可以提供我们所关心的数据,如经纬度、速度、时间等,所以只需对该帧信息进行提取。$GPRMC 帧的格式如图2:

  

  图2 GPRMC 帧的格式

  在每次读取的时候首先需要对帧头进行判断是否是$GPRMC 帧,然后再根据帧中的逗号位置,对该帧数据进行解析,提取所需的定位、速度和时间信息。

  (2) 拨号上网的实现

  该部分是整个的关键,是实现终端和中心进行无线通信的基础,该过程主要依靠PPP(点到点协议)来实现,它可以实现在串行链路上创建和运行IP 协议。

  为了能够实现PPP 连接,首先需要配置内核使其支持PPP,然后通过交叉编译生成ARM平台下的pppd 和chat 应用程序。PPP 连接的建立和维持需要由pppd 和内核中的PPP 驱动程序配合完成。chat 程序主要用于和 模块进行交互,完成拨号和各项配置。执行pppd的时候将首先调用chat 程序进行拨号连接,PPP 链路的建立流程如图3:

  

  图3 PPP 链路建立流程

  首先执行 chat 程序对中国移动的接入号码进行拨号,建立与PPP 服务器端的物理连接,然后进行LCP 链路的协商,主要协商一些链路参数(数据帧格式、最大传输单元等),协商成功后将建立与PPP 服务器端的数据链路,接着向PPP 服务器端提供用户和口令进行PAP验证,在未通过验证之前是不能进行任何数据传输的,最后,进行IPCP 协商,主要进行IP地址的协商,协商成功后,终端将获得GGSN(GPRS 网关)为其动态分配的IP 地址。PPP 链路就建立完成了,之后出租车终端就相当于公网上的一台主机,可以自由地与Internet 的其他主机进行数据交互了。

  3.2 中心的软件设计

  中心是位于出租车公司的控制中心,它与公司服务器进行局域网连接如图1,服务器具有固定公网(Internet)IP 地址,而监控中心的IP 地址为局域网IP,公网上的主机(出租车终端)是不能通过该IP 来访问监控中心的,要想实现这个过程,必须在公司服务器设置端口映射,端口映射的原理是将拥有固定IP 地址的服务器端口映射到处于局域网的某台主机端口上,如图4:

  

  图4 端口映射示意

  上图中,将服务器的1111 端口映射到局域网内监控中心的2222 端口,这样外网主机发往服务器1111 端口的数据都将被重定向到监控中心的2222 端口,监控中心只要开放并监听该端口,即可获得相关数据。

  监控中心主机采用 Debian Linux 操作,Debian 是一套为计算机设计的自由操作系统,它包含一万五千多个软件包,都是自由开源的,并被包装成容易安装的deb 格式,Debian是一款功能强大的Linux 操作系统。

  监控中心的软件设计主要完成以下两个任务:接收出租车终端发送过来的信息并写入数据库;设计图形管理软件,方便各项功能的实现。

  (1)接收出租车终端发送过来的定位信息并写入数据库

  设计一个守护(Daemon)进程,它可以实现在操作系统启动后一直在后台运行,不受控制终端的控制,该进程主要用于监听本监控中心的指定端口,接收由出租车终端发送过来的定位、速度和时间信息,然后将所有信息写入POSTGRESQL8.0 数据库[4]。POSTGRESQL数据库是世界上可以获得开放源码的最先进的数据库系统,支持几乎所有 SQL 构件(包括子查询,事务和用户定义类型和函数),并且为多种开发语言提供接口(包括 C,C++,Java 等)。

  Linux 系统下采用C 语言对该数据库进行操作,主要用到以下三个函数:

  PQconnectdb(“dbname=psql_data”)用于打开名为psql_data 的POSTGRESQL 数据库;PQexec(PQconnectdb(),sql_query)用于对打开的数据库执行各种SQL 语句;PQfinish()用于关闭打开的数据库。



评论


相关推荐

技术专区

关闭