戴村供 初仁义
基于C/S结构的城市公交监控系统设计
戴村供 初仁义
福建工程学院机电及自动化工程系
介绍了一种基于C/S结构的城市公交车监控系统,阐述了在Delphi编程环境下如何利用socket编程机制实现客户端与服务器的数据交换,实现了城市公交监控系统的设计。
城市公交;监控系统;全球定位系统;客户/服务器
先进的公共交通系统(Advanced Public Transportation System, APTS)是智能交通系统(ITS)的重要子系统之一,通过综合利用信息技术、计算机技术、控制技术、传感器技术,使先进的公交系统具有了高效的公交客运组织模式、快速灵活的应变能力及完善的乘客信息服务等特点,从而在信息、价格、速度、效率、舒适性等方面提高公众吸引力[1]。随着计算机技术和移动网络技术的快速发展,无线网络通讯技术在各个行业得到广泛应用,目前GPRS/CDMA作为移动通讯网络已经实现了全方位的覆盖,使无线监控系统的建设非常便利,无线监控系统特别适用于被监控对象在地域上分散分布或有移动监控需求的情况[2]。通过GPRS/CDMA接入设备实现TCP/IP协议,利用Socket技术可以灵活地实现数据交换。因此,文中设计了一种基于TCP/IP协议,实现嵌入式开发环境下Client/Server结构的监控系统。软件编程平台采用Delphi语言,通过TCP/IP网络协议进行数据传递, 采用先进的GPS定位、数据通信、电子地图和数据库管理等技术,对车辆进行实时跟踪与监测,从而实现车辆管理调度的现代化和科学化。
监控系统由车载单元、监控中心和Internet网络3个单元组成。
车载单元接收GPS卫星传来的星历信息,分离出当前车辆所处的地理位置坐标并计算出车辆的速度及加速度,辅以其他信息以一定数据格式通过Internet网络传送到监控中心,监控中心接收到数据后,立刻对数据加以分析处理,分离出目标坐标、速度、加速度、站点信息等,并把这些信息在监控中心大屏幕电子地图上定位显示,若目标车辆超速,则以红灯闪烁的形式显示并发送语音信号到车载单元以提示安全驾驶。监控中心具有站点查询及监视功能,可以帮助监控室工作人员快速查询各条线路上的各车辆运营信息,包括线路名称、班次、发车时间、车牌号码、司机姓名等,可以监视车内实时情况。若分离出来的信息中有车辆报警信号,则具有存储车内动态影像的功能并定时把车辆坐标以文件形式存储在本地硬盘上,为以后的法律问题提供依据。
为了能够方便地开发网络应用软件,由美国伯克利大学在Unix系统上推出了一种应用程序访问通信协议的操作系统调用socket(套接字)[3]。socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。Socket 通讯建立在TCP/IP 通讯协议之上,前提是通讯双方的网络均以TCP/IP 协议为基础,双方的通讯就得以实现,且不受网络类型、传输距离等因素的限制[4]。
系统运行时,服务器端初始化完成后,开启监听端口并建立新线程用以处理接收到的数据并刷新显示。客户端软件运行后,连接服务器得以实现,设置如下:
if threadsend=false
then begin //以下是连接过程
IdTCPClient1.Host:=EditIpAddress.Text; //取得IP地址
IdTCPClient1.Port:=strtoint(EditPort.Text); //取得端口
threadsend:=true; //允许发送线程开启
if IdTCPClient1.Connected=false
then IdTCPClient1.Connect(1000); //连接监控台
end
else begin//以下是断开的过程
threadsend:=false; //停止发送线程
if IdTCPClient1.Connected=true then
begin
IdTCPClient1.Disconnect;
IdTCPClient1.DisconnectSocket;
end;
end;
电子地图是由电子计算机控制所生成的地图,是基于数字制图技术的屏幕地图,是可视化的实地图,可以实现快速存取显示,可以对电子地图进行任意比例尺、任意范围的绘图输出,可以很方便地与卫星影像、航空照片等其他信息源结合,生成新的图种。Google继在收购Keyhole后,首次向广大用户推出一个免费的基于卫星图片的地图软件Google Map。本文正是利用在html中嵌入javascript,调用Google Map得以实现在监控中心屏幕上显示,并实时对车辆的GPS信息在屏幕上刷新显示,实时定位界面如图1所示。具体例程如下:
webbrowser1.Navigate(getcurrentdir()+' esgooglemap.dat'); //加载地图
CreateThread(nil,0,@NewThreadEntranceFun,nil,0,ThreadID); //创建新线程,用来刷新数据
CreateThread(nil,0,@NewThreadjiansi,nil,0,ThreadIDJiansi); //创建监视线程。
WebBrowser1.OleObject.Document.parentWindow.execScript('magnify()','javascript'); //放大地图
WebBrowser1.OleObject.Document.parentWindow.execScript('reduce()','javascript'); //缩小地图
Athread.Connection.ReadBuffer(msg,sizeof(msg));//读数据,放在msg这个结构体中。
WebBrowser1.OleObject.document.parentWindow.movetopos(msg.weidu,msg.jingdu); //刷新地图中的车辆位置。
图1 实时定位界面
站点查询功能主要是通过建立并操作数据库,包括:线路名称、站点等线路信息,车牌号码、班次、发车时间等车辆信息及司机姓名、性别、年龄、家庭住址等司机信息,需要时从数据库中提取显示,图2是站点查询界面。
图2 站点查询界面
文中试验依托福建工程学院车辆工程试验室,在大学城郊区及市区道路上进行,系统服务器及客户机通讯均能正常,能很好的调用google map,并能实时显示;系统运行时定时记录保存车辆所处的经纬度坐标,在轨迹回放的过程中能正常回放;在对车内情况进行视频记录过程中,能正常的记录图像,并保存为JPG或BMP格式,但在记录一整段的视频时,效果不太理想,算法或是记录方式还有待提高。
基于C/S结构的城市公交监控系统以GPRS/CDMA网络为数据传输手段建立远程监控系统,具有极大的组网灵活性,利用GPS定位系统、TCP/IP传输协议以及计算机处理技术,初步展示了一个全天候卫星定位、车辆实时跟踪、电子地图显示的公交监控系统的框架。能使公交系统借助高科技的手段大大提高服务质量, 让人们更喜欢乘坐公交服务, 有利于缓解城市交通拥挤的状况, 有利于环保, 有很高的推广价值。实践表明,Socket 编程方便快捷,可以实现可靠的数据传输。
[1] 周大森,刘小明. 汽车智能运输[M].北京:国防工业出版社,2004.
[2] 李洪彪,等.基于Socket 的远程无线监控系统设计及应用[J].自动化与仪器仪表, 2009(3).
[3] 张传生.数字通信原理[M].西安:西安交通大学出版社,1990.
[4] 邓多洪.基于Socket 通讯方式接口数据处理的应用[J].安徽冶金, 2009(2).
[5] 张向果.GIS、GPS在车辆监控系统中的应用和研究[D].吉林,2004.
[6] 刘基余,等.全球定位系统原理及应用[M] . 北京:测绘出版社,1993.
[7] 房俊龙,董守田,于寿磐.车载GPS定位系统中移动站的硬件和软件设计[J].农机化研究,2002(1).
[8] 赵文浩,刘建业,何秀风.GPS车辆监控系统中短消息通信技术研究[J].工业控制计算机,2002, 15(2).
Design of Urban Public Transportation Monitoring System Based on Client/server Architecture
Dai Cungong, Chu Renyi
(Electromechanical and Automation Engineering Department, Fujian University of Technology, Fuzhou 350108, China)
An unban public transportation monitoring system based on client/server was described. Code samples were given to illustrate how to implement the functions of data communication between the client and server using socket in Delphi.
urban public transportation; monitoring system; global positioning system (GPS); client/server
福建省科技平台建设项目(2008J1002),福建省科技平台建设项目(2007H2009)