引言
隨著汽車在日常生產(chǎn)和生活中起的作用越來越突出,如何實(shí)現(xiàn)各類車輛的有效指揮、協(xié)調(diào)控制和管理已經(jīng)成為交通運(yùn)輸和安全管理部門面臨的一個(gè)重要問題。為了滿足提高運(yùn)輸效率和安全保障的需要,對(duì)車輛定位監(jiān)控系統(tǒng)的研究也日趨迫切。
車載GPS定位監(jiān)控系統(tǒng)是GSM全球數(shù)字蜂窩移動(dòng)通信技術(shù)和GIS地理信息技術(shù)、GPS全球衛(wèi)星定位技術(shù)以及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)相融合研制開發(fā)出來的軟件技術(shù)。它是通過安裝在車輛上的GPS接收機(jī)(即車載機(jī))接收衛(wèi)星信號(hào),監(jiān)控中心的通信控制器從GPS接收機(jī)輸出的信號(hào)中提取所需要的位置、速度和時(shí)間信息,結(jié)合車輛身份等信息形成數(shù)據(jù)報(bào),然后通過無線信道發(fā)往控制中心;控制中心的主站接收子站發(fā)送的數(shù)據(jù),處理接收信息通過短消息的方式逐次直接發(fā)送給每一臺(tái)車載機(jī)。最后,將車輛的具體數(shù)據(jù)和狀態(tài)在監(jiān)控中心的電子地圖上顯示出來。
本文討論的就是從接收機(jī)輸出的信號(hào)中提取所需要的位置、速度和時(shí)間信息的方法,以及中心處理信息后發(fā)送命令集的實(shí)現(xiàn)過程。
GPS車載機(jī)的通信協(xié)議
車載機(jī)與監(jiān)控中心之間的通信方式均以中心發(fā)送命令,車載機(jī)應(yīng)答的方式進(jìn)行,所以我們對(duì)車載機(jī)GPS信號(hào)的分析與處理必須完全依據(jù)車載GPS接收機(jī)與監(jiān)控中心的通信協(xié)議來進(jìn)行,下面是GPS車載機(jī)通信協(xié)議的部分內(nèi)容。
車載機(jī)返回信息
一般信息:
*XX,YYYYYYYYYY,V1,HHMMSS,S,latitude,D,longitu de,G,speed,direction,DDMMYY,vehicle_status#
確認(rèn)信息:
*XX,YYYYYYYYYY,V4,CMD,hhmmss,HHMMSS,S,latitu de,D,longitude,G,speed,direction,DDM MYY,vehicle_status#
區(qū)分一般信息和確認(rèn)信息的方法是看車載機(jī)傳回來的信息中是否包含“V4”,判斷返回信息是否有效的方法是看回傳信息中是否包含“HQ(制造商名稱)”。
其中:‘*’表示命令頭;‘XX’表示制造商名稱;‘,’表示分隔符;‘YYYYYYYYYY’表示車載機(jī)序列號(hào);‘CMD’表示被確認(rèn)的中心命令;‘hhmmss’表示被確認(rèn)命令中的時(shí)間值;‘HHMMSS’表示車載機(jī)時(shí)間;‘S’表示數(shù)據(jù)有效位;‘latitude’表示緯度;‘D’表示緯度標(biāo)志;‘longitude’表示經(jīng)度;‘G’表示經(jīng)度標(biāo)志;‘speed ’表示速度;‘direction’表示方位角;‘DDMMYY’表示日/月/年;‘vehicle_status ’表示車輛狀態(tài)。
車載機(jī)返回GPS信息模式有兩種,一是返回最近的有效的GPS信息;二是返回最新的GPS信息。
中心發(fā)送命令結(jié)構(gòu)和命令集
中心發(fā)送命令結(jié)構(gòu)是:*XX,YYYYYYYYYY,CMD,HHMMSS,PARA1,PARA2,...#
在編寫中心發(fā)送指令時(shí)必需按照這個(gè)格式來寫,下面列出其中的七個(gè)中心發(fā)送命令。
定位監(jiān)控命令D1:該指令要求車載機(jī)以interval為時(shí)間間隔,回傳count次定位信息。
自動(dòng)監(jiān)控設(shè)置命令S17:該指令完成對(duì)自動(dòng)監(jiān)控參數(shù)的設(shè)置。
參數(shù)設(shè)置指令S12:該指令僅用于對(duì)S17命令的開關(guān)控制。
設(shè)置監(jiān)控中心短信號(hào)碼S2:車載機(jī)收到指令后將立即向新的監(jiān)控中心發(fā)送確認(rèn)信息。
通話設(shè)置指令S13:phone_flag的bit0=0時(shí)允許打出,bit1=0時(shí)允許接聽。
清楚報(bào)警指令R7:車載機(jī)收到命令后將清除掉所有報(bào)警信息。
冷啟動(dòng)指令R1:車載機(jī)收到命令后將執(zhí)行冷啟動(dòng)復(fù)位,所有狀態(tài)參數(shù)全部清零。
通信軟件的設(shè)計(jì)與實(shí)現(xiàn)
GPS信號(hào)與監(jiān)控中心之間的通信大致分成兩個(gè)步驟:一是GPS接收機(jī)(即車載機(jī))接收衛(wèi)星信號(hào),監(jiān)控中心的通信控制器從GPS接收機(jī)輸出的信號(hào)中提取所需要的位置、速度和時(shí)間等數(shù)據(jù)信息;二是監(jiān)控中心將分析出的數(shù)據(jù)信息通過短消息的方式發(fā)送命令給每一臺(tái)車載機(jī)。具體步驟如下:
function IsValidMsg(Str: String): Boolean;{判斷消息是否有效}
function IsConfgMsg(Str: String): Boolean; {區(qū)分一般信息和確認(rèn)信息}
procedure ResoleGprsV(RecvGprs: String);{處理接受信息}
procedure ResoleGprsV1(RecvGprs: String);{處理一般信息 (V1)}
procedure ResoleGprsV4(RecvGprs: String);{處理確認(rèn)信息(V4)}
function Direc(sr: String): String;{車輛行駛方向}
function HexCng(Rhex: String): String;{十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)}
function HandleCarStatus(ArrBin: array of String): String;{處理車輛狀態(tài)}
function ChangeTel(sTel: String): String;{}
function StrToHex(sStr: String): String;
procedure SendSms(Tel, Other: String; iCmdID, iSendType: Integer;
CarID: String = ''){中心發(fā)送命令集}