刘新霞 刘国锦
1南京财经大学 江苏 210046
2南京师范大学分析测试中心 江苏 210097
随着我国经济的不断发展,人们的生活水平逐渐提高,车辆日益增多,相对也带来了车辆堵塞、安全等问题。在现代信息技术的不断发展的同时,通信、导航、控制和计算机等相关技术越来越被应用到交通运输领域,从而逐步形成了一种实时、准确、高效的综合运输系统。通过车辆点名,直接对车辆进行实时监控是目前社会急需的一门技术。
监控管理中心主要是由数据库模块、通信模块、后台服务器、前端控制台组成。监控管理中心总体的软件框图,如图1所示。
后台服务器是整个监控中心的通信枢纽,主要负责前端控制台和车载终端数据交互的处理,负责将前端控制台的控制、询问等数据发送给对应的车载终端,然后将车载终端的回复数据汇报给发出控制的前端控制台,并且将所有的操作及通信数据都存入到中心数据库中。
图1 监控中心结构图
数据库模块是监控管理软件的重要部分,采用SQL Server数据库来实现数据的处理。它主要用于存放系统中各车辆的基本属性和行驶的历史数据。该数据库主要存放实时车辆信息数据、车辆历史信息数据、车辆信息管理数据等。
通信模块负责中心与终端的通信交互通道,可以通过4种方式与终端进行通信,包括SMS(MODEM方式或者SMG短信网关方式)和GPRS(TCP或者UDP)。终端可通过其中任意一种方式向中心发送数据,通信模块在收到终端数据后,将数据添加到一个链表中,后台服务器程序就从该链表中提取数据处理,后台发送的控制信息也将都通过通信模块发送出去。通信模块不与数据库打交道。
前端控制台从数据库服务器中读取相应的位置信息,然后在界面上显示出来;通过后台服务的控制通道,对终端进行控制。实现车辆点名、定时跟踪、超速报警等常规监控功能,以及实现电子地图的显示管理的相关功能。
后台服务器是管理和调度车辆的重心,需实现后台服务器分别与车载终端和前台控制台的双向通信。其总体结构图如图2所示。
图2 后台服务器结构框图
2.2.1 后台与车载终端的通信
后台与车载终端的数据通信由GpsData控件控制。GpsData控件负责接收车载终端发送的数据并向车载终端发送控制请求命令数据,中心上层只要调用GpsData控件的接口,即可实现与车载终端之间的通信。
2.2.2 后台与前端控制台进行通信
后台与前端控制台直接通过TCP/IP协议进行通信,用Winsock实现,后台保存着一个连接上的前端控制台的链表,每个连接上的前端控制台对应到后台服务器上的一个CClientSock类,其中保存了该前端控制台操作者在数据库中的操作ID,并统一管理连接上的前端控制台,进而实现了多用户的操作。
2.2.3 后台与数据库的通信
数据库采用MSSQLSever,后台服务与数据库的通信直接通过VC的ADO类来实现。后台收到前端控制台发送来的指令后,由后台处理成发送给车载终端GPRS的数据格式并发送,将收到的GPS数据保存至数据库,以便调用。
2.3.1 后台服务器的总体流程
后台服务器启动后等待数据,然后解析数据,并根据数据中命令字段做相应的操作处理,直到停止服务(图3)。
图3 后台服务器的总体流程
2.3.2 后台程序与前端控制台的交互
利用Winsock实现后台服务器与前端控制台基于TCP/IP的数据通信。首先在后台中心开启一个侦听Socket侦听前端控制台的连接,当有连接请求时就动态创建一个CClientSocket类并加入到后台的链表中并等待前台发送登录请求,如果在超时时间的时间内没有收到登录请求,后台就会将该客户连接从对应的链表中删除。如果收到登录请求,就根据数据库中存储的用户名密码来验证前台客户端是否为有效用户,如果不是,则给前台发送登录失败和失败原因的回复数据并将该客户连接从链表中删除。如果登录成功,就将该客户连接前台并显示到后台的显示界面上。然后等待前端控制台发送别的控制命令,并对控制命令作出相应的操作和回应。
2.3.3 后台程序与车载终端的交互
后台在收到GpsData发送的收到数据事件之后,就去读取数据,并验证数据的有效性,根据用户的手机号来验证是否为有效用户数据,如果不是有效用户,则丢弃该数据。否则解析数据的头部分,获取该数据对应的操作类型,在对应的操作类型中解析数据,更新数据库,并处理随数据一同发送上来的GPS数据,并通知给对应的操作台以更新信息。
前端控制台即前台客户端,主要提供清晰的人机界面,将用户的请求发送至后台服务器进行处理,并将后台服务器送回的数据解析后形象的展现给用户。
3.1.1 MapX模块
该模块使用封装好的MapX库,实现对地图进行创建、载入、描点、计算等一些基本的操作。
MapX是MapInfo公司开发的能向用户提供强大地图分析功能的ActiveX控件产品。MapX能支持绝大多数标准的可视化开发环境,如:Visual Basic、Visual C++、Delphi和PowerBuilder等。利用MapX,用户能够简单而快速地在自己的企业应用中嵌入地图化功能,增强企业应用的空间分析能力,实现企业应用的增值。由于采用的是控件技术,因此应用程序可以脱离MapInfo的软件平台运行。
用户可以连接大型数据库,通过Spatial等空间数据服务技术,MapX可以动态操作数据库中存储的地理空间数据,并在空间服务器的支持下,完成高级的地理信息查询和复杂的空间分析功能,从而大大拓宽了MapX本身的功能限制。此外,利用大型数据库进行空间数据的管理,使得海量数据的处理可行。
3.1.2 CClientSocket模块
该模块封装了与后台程序的通信功能函数,底层使用socket编程,实现点对点数据传输(图4)。
图4 CclientSocket模块
界面通过接口向后台服务程序发送请求,并得到回复。监控用户获得历史轨迹和点名命令的车载数据通过异步方式传递,当收到有GPRS的数据之后,后台程序将数据保存至数据库,再发送消息通知前台的CclientSocket,由CclientSocket发送刷新界面的请求。
当需要对某一车辆进行监控时,只需对该车辆点名一次,就可以对其开始监控。当对车辆进行点名时,前台程序调用ClientSocket中的SendDM方法,向后台程序发送命令。
整个发送过程图5所示。
图5 点名发送指令流程图
当车载终端收到GPS数据之后,首先会判断定位的次数和间隔是否满足发送条件,如果满足,则会将点名返回信息发送给后台,后台程序将记录存储至数据库,然后再发送消息通知前台程序返回数据已经收到。前台程序就会去数据库中将数据读出并显示。当每次接收数据后,用户可以在地图上清晰地看到车辆的位置动态刷新,以及具体的经纬度数据。
本文基于TCP/IP协议的socket编程和SQL Server数据库的原理,以及对MAPX控件的接口函数的应用,实现了在任何地点进行网上实时监控、调度车辆,给人们生活带来极大的方便。
[1] 刘国锦,刘新霞.基于S3C2410嵌入式车载定位系统设计[J].微计算机信息.2010.
[2] 刘新霞,刘国锦.GPS车辆监控管理系统的设计与实现[J].信息化研究.2009.
[3] 刘国锦,刘新霞.GPRS无线数据传输技术的应用[J].信息化研究.2010.
[4] 丁有和.Visual C++图形图像编程技巧[M].青岛:青岛出版社.2000.
[5] 王志伟,沈杰峰,郭启峰.基于Socket的GPRS远程数据采集方法[J].西华大学学报自然科学版.2006.
[6] 何玉洁.数据库管理与编程技术[M].北京:清华大学出版社.2007.
[7] 刘光.地理信息系统二次开发教程-语言篇[M].北京:清华大学出版社.2003.