戴村供 初仁義
基于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)