摘 要: 由于大多數(shù)網(wǎng)絡(luò)通信都需要借助Internet上的服務器,為了方便內(nèi)部網(wǎng)絡(luò),比如高速公路網(wǎng)監(jiān)控系統(tǒng)的總中心和分中心之間的溝通,需要開發(fā)一個基于局域網(wǎng)的即時通信工具,實現(xiàn)在內(nèi)部網(wǎng)絡(luò)中進行信息的交流。詳細論述了在Delphi環(huán)境下利用UDP協(xié)議建立C/S結(jié)構(gòu)的信息報送系統(tǒng)模型,從而實現(xiàn)信息的收發(fā)。
關(guān)鍵詞: 局域網(wǎng); 分布式信息報送系統(tǒng); C/S; 廣播
中圖分類號: TN711?34 文獻標識碼: A 文章編號: 1004?373X(2013)07?0157?03
0 引 言
發(fā)展高速公路是現(xiàn)代經(jīng)濟發(fā)展的必然趨勢,也是衡量一個國家現(xiàn)代化水平的重要標志。自1988年我國開始建設(shè)高速公路以來,我國高速公路建設(shè)事業(yè)向世界前列高速發(fā)展。目前,我國絕大部分省份高速公路已形成路網(wǎng),單獨路段的異常事件影響的范圍越來越廣,全國約13個省基本實現(xiàn)了監(jiān)控系統(tǒng)聯(lián)網(wǎng)。交通信息化建設(shè)是整個交通行業(yè)的工作重點,此外,在各種高速公路突發(fā)事件的應急處置過程中,離不開信息的報送工作。應用于局域網(wǎng)內(nèi)企業(yè)(組織)內(nèi)部成員之間的交流領(lǐng)域,在沒有因特網(wǎng)的支持下也可以進行即時通信,因此更安全、更高效;同時因為它界面簡潔實用,沒有娛樂功能,所以簡單易用,使企業(yè)(組織)成員更加專注于工作,減少不必要的財力和人力資源浪費。
1 高速公路網(wǎng)分布式信息報送系統(tǒng)需求分析
傳統(tǒng)信息報送系統(tǒng)多使用語音信息實現(xiàn)省中心與各分路段的交流。語音信息采用單工通信方式(例如廣播),用分組交換技術(shù)提高線路利用率,通過將聲音信號轉(zhuǎn)換為數(shù)字編碼信號,然后經(jīng)過分組、打包、解碼、合成、復原等過程將信息發(fā)送至接收端,具有接收面廣、信息發(fā)布及時、形式活潑、聽眾易于接受、有效時間長、對駕駛員注意力影響小等特點。但若出現(xiàn)電路擁擠,在等待轉(zhuǎn)發(fā)過程中易發(fā)生分組數(shù)據(jù)丟失,從而造成信息傳遞失敗。新一代的信息報送系統(tǒng)以電子、通信、計算機、網(wǎng)絡(luò)等現(xiàn)代技術(shù)為基礎(chǔ),克服了語音信息的抗干擾性差,不易查詢等缺點,具有抗干擾能力強,差錯可控,易于與各種數(shù)字終端接口,易于集成,易于加密等優(yōu)點,以提高高速公路的運輸效益、降低高速公路事故為目的,更好地實現(xiàn)了高速公路網(wǎng)的智能監(jiān)控,為高速公路安全、高速、暢通、經(jīng)濟、環(huán)保的運行保駕護航。
1.1 業(yè)務用例
各路段有事件發(fā)生時,若A路段遇道路關(guān)閉,B路段發(fā)生交通事故,A,B路段所屬的路段中心將信息上報給省中心,省中心按照信息優(yōu)先級進行處理,然后向有關(guān)路段下達指示,示意圖如圖1所示。
1.2 總體需求分析
省域高速公路網(wǎng)管理機制為:省中心—各分中心,故系統(tǒng)需要實現(xiàn)局域網(wǎng)內(nèi)省中心—分中心以及分中心—分中心的會信息收發(fā)功能,要有美觀、易操作的界面,聊天記錄可以保存。考慮到省域高速公路網(wǎng)的分布式結(jié)構(gòu),信息報送系統(tǒng)也采用分布式的數(shù)據(jù)庫來存儲信息記錄。總體需求如下:
(1)只限于局域網(wǎng)內(nèi)聊天。
(2)美觀的操作界面。
(3)主界面可以最大化、最小化和關(guān)閉。
(4)可以添加好友、網(wǎng)名。
(5)可以同時與多個人聊天。
(6)消息到達時可以有聲音提示。
(7)可以保存和清存聊天記錄。
(8)可以發(fā)送文件和圖片。
(9)對于總中心而言,需要同時向多個分中心發(fā)布信息,故系統(tǒng)可以實現(xiàn)群發(fā)消息功能。
(10)對于分中心而言,需向省中心申請注冊,經(jīng)省中心審批成為省域路網(wǎng)成員后,才能與省域內(nèi)成員進行信息報送。
業(yè)務用例示意圖
1.3 性能需求分析
(1)可靠性高,能在由于系統(tǒng)問題或其他原因產(chǎn)生錯誤后,做出相對應處理,在出現(xiàn)不可知的錯誤以后,可以盡量安全的退出程序。
(2)易操作性,程序簡單易懂,容易上手使用。設(shè)計界面時,簡化界面的復雜性,模擬QQ等現(xiàn)有即時通信工具的界面,使用戶能很容易看懂并使用。
(3)開發(fā)文檔易理解[1],保證以后自己二次開發(fā)或他人接手開發(fā)時,能夠清晰地理解整個系統(tǒng)的設(shè)計思路和實現(xiàn)細節(jié)。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)開發(fā)平臺介紹
Delphi 是Borland 公司開發(fā)的可視化軟件開發(fā)系統(tǒng),它基于Windows 系統(tǒng),采用高度結(jié)構(gòu)化的Object Pascal 語言,具有結(jié)構(gòu)清晰、高效優(yōu)化等特點[2?3]。它使用了Microsoft Windows 圖形用戶界面的許多先進特性和設(shè)計思想,采用了彈性可重復利用且完整的面向?qū)ο蟪绦蛟O(shè)計語言、當今最快的編輯器和最為領(lǐng)先的數(shù)據(jù)庫技術(shù)。
2.2 信息報送流程
(1)系統(tǒng)登錄
在用戶登錄區(qū)中輸入用戶名、密碼以及確認密碼(另附)后登錄,進入系統(tǒng)主界面。
(2)系統(tǒng)使用
①密碼更改。點擊用戶登錄區(qū)下面的密碼修改即可進入密碼修改。根據(jù)要求填寫對應的內(nèi)容,分別輸入舊密碼、新密碼和確認密碼(即新密碼)后,點擊提交按鈕,密碼修改完畢,新密碼生效,退出系統(tǒng)后即可用新密碼登錄。
②信息發(fā)送。用戶在會話界面的消息輸入框內(nèi)輸入將要發(fā)送的消息,點擊發(fā)送按鈕,會話的消息顯示界面會顯示出發(fā)送消息的時間以及消息的內(nèi)容。
(3)退出系統(tǒng)
點擊會話主界面的關(guān)閉按鈕,出現(xiàn)消息對話框,確認關(guān)閉后即可退出系統(tǒng)。
2.3 系統(tǒng)總體架構(gòu)
系統(tǒng)總體架構(gòu)如圖2所示。
系統(tǒng)總體架構(gòu)圖
2.4 系統(tǒng)功能模塊設(shè)計及代碼實現(xiàn)
2.4.1 局域網(wǎng)內(nèi)實現(xiàn)廣播功能
在Delphi的開發(fā)環(huán)境下,系統(tǒng)用Indy組件的此項屬性來實現(xiàn)廣播功能。具體操作如下:
首先,將選用的Indy的相關(guān)組件的Active屬性的值設(shè)為True;
然后,將選用的Indy的相關(guān)組件的BroadcastEnabled屬性的值設(shè)為True;
最后,給客戶端和服務端的Indy組件分別設(shè)置有效的端口地址。編址時要充分考慮地址的可用性,即盡量設(shè)置偏大的端口值,從而避免與一些內(nèi)部的端口地址發(fā)生沖突。
2.4.2 局域網(wǎng)內(nèi)實現(xiàn)消息收發(fā)
在Delphi的開發(fā)環(huán)境下,系統(tǒng)選用UDP協(xié)議下Indy組件實現(xiàn)消息的收發(fā)功能。結(jié)合所選擇的C/S模式和UDP協(xié)議,選用Indy組件的IdUDPServer和IdUDPClient實現(xiàn)客戶端和服務器端消息的收發(fā)。實現(xiàn)函數(shù)如下:
對于省中心(服務端)來說,直接用IdUDPServer的發(fā)送屬性實現(xiàn)消息的發(fā)送,用IdUDPServer的OnUDPRead事件實現(xiàn)消息的接收,函數(shù)格式如下:
省中心發(fā)送函數(shù):
IdUDPServer1.Send(host,port,edit3.Text+′:′+memo2.text);
省中心接收消息:
Procedure TForm1.IdUDPServer1UDPRead (Sender: TObject; AData: array of Byte; ABinding: TIdSocketHandle);
對于分中心(客戶端)來說,直接用 IdUDPCliet的發(fā)送函數(shù)實現(xiàn)消息的發(fā)送,因為IdUDPClient的接收函數(shù)運行出現(xiàn)錯誤,故給分中心也添加IdUDPServer組件,并用它的OnUDPRead事件接收省中心發(fā)送的消息,函數(shù)格式如下:
分中心發(fā)送函數(shù):
IdUDPClient1.Send(Edit3.Text+′:′+memo2.text);
分中心接收函數(shù):
ProcedureTForm1.IdUDPServer1UDPRead(Sender: TObject; AData: array of Byte; ABinding: TIdSocketHandle);
2.4.3 歷史信息記錄功能
作為用于高速公路網(wǎng)監(jiān)控系統(tǒng)的信息報送系統(tǒng),為了方便用戶查詢信息的歷史記錄,系統(tǒng)模型需要實現(xiàn)存儲信息的功能。Memo組件提供有LoadFromFile和SaveToFile方法,這兩個方法是用來加載文本文件到Memo組件和把Memo組件內(nèi)的文字數(shù)據(jù)寫入文件中,函數(shù)分別如下:
memo3.Lines.LoadFromFile(′消息記錄′);
Memo1.Lines.SaveToFile(′消息記錄′);
2.4.4 消息提示功能
為了使用戶及時看到信息,消息到達時,會有聲音提示用戶。Delphi中有專門用來播放聲音文件的函數(shù),最常用的函數(shù)有PlaySound和SndPlaySound。
本系統(tǒng)模型中采用了SndplaySound函數(shù)播放格式為WAV提示音。可按下面的方式調(diào)用:
sndplaysound(′E:\sound\music.wav′,snd_async); //music為程序中要播放的聲音資源;
2.5 界面設(shè)計
(1)登陸界面的設(shè)計:為了提高系統(tǒng)的安全性,因此給系統(tǒng)設(shè)置了登錄界面。在登錄界面上添加了用戶名和密碼以及確認密碼的輸入框。用戶需要在用戶名與密碼均正確的情況下才能進入系統(tǒng)的主界面。需要用到的組件有Image,Lable,Edit等。
(2)主界面的設(shè)計:主界面的設(shè)計要實現(xiàn)的功能主要是聯(lián)系人的分組顯示、添加、刪除、查找,以及即時時間的顯示,界面要簡潔明了,給用戶創(chuàng)造一個良好的系統(tǒng)環(huán)境。主要用到的組件有MainMenu,ToolBar,Combobox等。
(3)會話界面的設(shè)計:當高速公路監(jiān)控局域網(wǎng)內(nèi)的成員如總中心與分中心之間發(fā)起會話時,出現(xiàn)會話界面。會話界面的設(shè)計主要從實用性和美觀性著手,來實現(xiàn)消息的發(fā)送、顯示和查詢等主要功能。另外,添加了通過IP地址和端口來查找用戶的功能。主要控件有Memo,F(xiàn)ontDialog,OpenPictureDialog等。Memo用于消息的輸入、顯示、查詢的外觀顯示,Image用于嵌入圖片,美化界面,BitBtn用于消息的‘發(fā)送’、‘關(guān)閉’、‘清空’等按鈕的實現(xiàn)。會話界面
系統(tǒng)的會話界面
3 結(jié) 語
本文描述了高速公路網(wǎng)信息報送系統(tǒng)的設(shè)計需求,信息報送流程,在Delphi環(huán)境下系統(tǒng)的功能模塊設(shè)計以及代碼實現(xiàn)。實際測試結(jié)果表明,該設(shè)計根據(jù)需求使用有關(guān)組件完成了分布式的信息報送系統(tǒng)模型的建立,可以實現(xiàn)信息的收發(fā)、存儲。
參考文獻
[1] 李玉海,杜暉,黃京.基于Web的實時信息報送系統(tǒng)的設(shè)計與實現(xiàn)[J].網(wǎng)絡(luò)與信息化,2005(5):153?154.
[2] 陳燦煌.Delphi 6徹底研究[M].北京:中國鐵道部出版社,2002.
[3] 穆紅濤,黃曉敏.Delphi程序設(shè)計教程與實訓[M].北京:北京大學出版社,2006.
[4] 胡明偉,繆立新,王耘非.北京市交通流數(shù)據(jù)采集、處理/分析和信息發(fā)布系統(tǒng)設(shè)計[J].公路交通科技,2003,20(2):167?169.
[5] 許紅.分布式呼叫中心系統(tǒng)設(shè)計[J].甘肅科技,2006,22(4):36?38.
[6] 劉文智.高速公路監(jiān)控軟件設(shè)計[J].公路交通科技,2003,20(1):128?130.
[7] 焦良葆.高速公路聯(lián)網(wǎng)監(jiān)控關(guān)鍵技術(shù)的研究[J].公路交通科技,2004,21(11):83?85.
[8] 靳引利,范湘湘,高昊.高速公路網(wǎng)的交通信息分類及發(fā)布技術(shù)[J].長安大學學報:自然科學版,2010,30(3):76?79.
[9] 郭剛.高速公路智能化信息發(fā)布系統(tǒng)[J].東北公路,2003,26(2):15?18.
[10] 宋佳興,周悅芝,劉衛(wèi)東.基于Web的分布式信息系統(tǒng)體系結(jié)構(gòu)模型[J].計算機工程與應用,2001(3):71?73.