引言 隨著汽車在日常生產(chǎn)和生活中起的作用越來越突出,如何實現(xiàn)各類車輛的有效指揮、協(xié)調(diào)控制和管理已經(jīng)成為交通運(yùn)輸和安全管理部門面臨的一個重要問題。為了滿足提高運(yùn)輸效率和安全保障的需要,對車輛定位監(jiān)控系統(tǒng)的研究也日趨迫切。 車載GPS定位監(jiān)控系統(tǒng)是GSM全球數(shù)字蜂窩移動通信技術(shù)和GIS地理信息技術(shù)、GPS全球衛(wèi)星定位技術(shù)以及計算機(jī)網(wǎng)絡(luò)技術(shù)相融合研制開發(fā)出來的軟件技術(shù)。它是通過安裝在車輛上的GPS接收機(jī)(即車載機(jī))接收衛(wèi)星信號,監(jiān)控中心的通信控制器從GPS接收機(jī)輸出的信號中提取所需要的位置、速度和時間信息,結(jié)合車輛身份等信息形成數(shù)據(jù)報,然后通過無線信道發(fā)往控制中心;控制中心的主站接收子站發(fā)送的數(shù)據(jù),處理接收信息通過短消息的方式逐次直接發(fā)送給每一臺車載機(jī)。最后,將車輛的具體數(shù)據(jù)和狀態(tài)在監(jiān)控中心的電子地圖上顯示出來。 本文討論的就是從接收機(jī)輸出的信號中提取所需要的位置、速度和時間信息的方法,以及中心處理信息后發(fā)送命令集的實現(xiàn)過程。 GPS車載機(jī)的通信協(xié)議 車載機(jī)與監(jiān)控中心之間的通信方式均以中心發(fā)送命令,車載機(jī)應(yīng)答的方式進(jìn)行,所以我們對車載機(jī)GPS信號的分析與處理必須完全依據(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ī)序列號;‘CMD’表示被確認(rèn)的中心命令;‘hhmmss’表示被確認(rèn)命令中的時間值;‘HHMMSS’表示車載機(jī)時間;‘s’表示數(shù)據(jù)有效位;‘latitude’表示緯度;‘D’表示緯度標(biāo)志;‘longitude’表示經(jīng)度;‘G’表示經(jīng)度標(biāo)志;‘speed’表示速度;‘direction’表示方位角;‘D D M M Y Y’表示日/月/年;‘vehicle_status’表示車輛狀態(tài)。 車載機(jī)返回GPS信息模式有兩種,一是返回最近的有效的GPS信息;二是返回最新的GPS信息。 中心發(fā)送命令結(jié)構(gòu)和命令集 中心發(fā)送命令結(jié)構(gòu)是:*XX,YYYYYYYYYY,CMD,HHMMSS,PARA1,PARA2,…# 在編寫中心發(fā)送指令時必需按照這個格式來寫,下面列出其中的七個中心發(fā)送命令。 定位監(jiān)控命令D1:該指令要求車載機(jī)以interval為時間間隔,回傳count次定位信息。 自動監(jiān)控設(shè)置命令S17:該指令完成對自動監(jiān)控參數(shù)的設(shè)置。 參數(shù)設(shè)置指令S12:該指令僅用于對S17命令的開關(guān)控制。 設(shè)置監(jiān)控中心短信號碼S2:車載機(jī)收到指令后將立即向新的監(jiān)控中心發(fā)送確認(rèn)信息。 通話設(shè)置指令S13:phone_flag的bit0=0時允許打出,bit1=0時允許接聽。 清楚報警指令R7:車載機(jī)收到命令后將清除掉所有報警信息。 冷啟動指令R1:車載機(jī)收到命令后將執(zhí)行冷啟動復(fù)位,所有狀態(tài)參數(shù)全部清零。 通信軟件的設(shè)計與實現(xiàn) GPS信號與監(jiān)控中心之間的通信大致分成兩個步驟:一是GPS接收機(jī)(即車載機(jī))接收衛(wèi)星信號,監(jiān)控中心的通信控制器從GPS接收機(jī)輸出的信號中提取所需要的位置、速度和時間等數(shù)據(jù)信息;二是監(jiān)控中心將分析出的數(shù)據(jù)信息通過短消息的方式發(fā)送命令給每一臺車載機(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ā)送命令集} 從車載機(jī)接收的GPS信號中判斷返回的信息是否有效,如果無效則直接丟棄,如果有效,則確認(rèn)是一般信息還是確定信息,再接收處理一般信息或確定信息。 區(qū)分一般信息和確認(rèn)信息的依據(jù)是參數(shù)字符串是否包含“V4”。 Result:=False;{初始返回結(jié)果} Result:=pos(‘V4’,Str)>0;{如果str包含“V4”,就返回true,否則false} 判斷是否返回有效的信息的依據(jù)是參數(shù)字符串足否包含”*HQ”。 Result:=False;{初始返回結(jié)果} Result:=pos(‘*HQ’,Str)>0;{如果str包含“*HQ”,就返回true,否則false} 一般信息的標(biāo)志是V1。車載回傳的一般信息中包含的參數(shù)有車載序列號、移動電話號碼、車牌號、時間、絳緯度、速度、方位、日期。 ∥獲取車載序列號(同樣的方法可以獲取移動電話號碼、車牌號、時間) sCarNo:=copy(RecvGprs,iPos+4,10); ∥獲取緯度(同樣的方法可以獲得經(jīng)度) sLatitude:=copy(RecvGprs,iPos+3,9); sLatitude:=FloatToStr(StrToFloat(copy(sLatitude,1,2))+StrToFloat(copy(sLatitude,3,7))/60); ∥獲取南緯和北緯(同樣的方法可以獲得東西經(jīng)) iPos:=pos(‘,S,’,RecvGprs);{查找“,S,”在RecvGprs的位置} if iPos>0 then;(如果RecvGprs包含‘,S,’就執(zhí)行下面語句} sNS:=‘南緯’ else begin iPos:=pos(‘,N,’,RecvGprs);{查找“,N,” 在RecvGprs的位置} sNS:=‘北緯’; end; ∥獲取速度、方位、日期 sSpeed:=copy(RecvGprs,iPos+3,6);{獲取速度} sDirection:=copy(RecvGprs,iPos+10,3);(獲取方位} sDate:=copy(RecvGprs,iPos+14,6);{獲取日期} if Pos(‘.’,sSpeed)<=0 then{判斷sSpeed是否包含‘.’,如果包含就執(zhí)行下面語句} begin sSpeed:=copy(RecvGprs,iPos+3,3);{獲取速度} sDirection:=copy(RecvGprs,iPos+7,3);{獲 取方位} sDate:=copy(RecvGprs,iPos+11,6);{獲取日期} end; ∥數(shù)據(jù)轉(zhuǎn)換 sSpeed:=FormatFloat(‘0.00',StrToFloat(sSpeed)*1.852);{行駛速度轉(zhuǎn)換} sSceond:=copy(sTime,5,2);{時間轉(zhuǎn)換} if StrToInt(sSceond)<60 then{時間轉(zhuǎn)換(‘YYYY-MM-DD HH:MM:SS’表示為:年月日時分秒) sDate:=FormatDateTime(‘YYYY-MM-DDHH:MM:SS’,IncHour(StrToDateTime(‘20’+copy(sDate,5,2)+‘-’+copy(sDate,3,2)+‘-’+copy(sDate,1,2)+‘ ’+copy(sTime,1,2)+‘:’+copy(sTime,3,2)+‘:’+copy(sTime,5,2)),8)) else begin sDate:=FormatDateTime(‘YYYY-MM-DDHH:MM:SS’,IncHour(StrToDateTime(‘20’+ copy(sDate,5,2)+‘-’+copy(sDate,3,2)+‘-’+copy(sDate,1,2)+‘ ’+copy(sTime,1,2)+‘:’+copy(sTime,3,2)+‘:’+‘00’),8)); sDate:=FormatDateTime(‘YYYY-MM-DD HH:MM:SS’, IncMinute(StrToDateTime(sDate),+1)); end; 確認(rèn)信息的標(biāo)志是V4。車載回傳的確認(rèn)信息中包含車輛行駛方位和車輛狀態(tài)。 處理一般信息中獲取的方位信息,由字符類型轉(zhuǎn)換為整型數(shù)據(jù),根據(jù)數(shù)據(jù)所在范圍確定車輛的行駛方位,小于22.5或大于337.5為正北方向,大于22.5小于67.5為東北方向,大于67.5小于112.5為正東方向,依此類推確認(rèn)車輛的行駛方向。 處理一般信息中獲取的車輛狀態(tài),由字符類型轉(zhuǎn)換為二進(jìn)制數(shù)字符串,把二進(jìn)制數(shù)據(jù)的每一位存進(jìn)數(shù)組,每一位對應(yīng)表一中的一個車輛狀態(tài)。 ∥獲取車輛狀態(tài) iPos:=Pos(‘#’,RecvGprs); sCarStatus:=copy(RecvGprs,iPos-8,8) ∥轉(zhuǎn)換為二進(jìn)制數(shù)字符串 sBin:=″; forI:=1 to 8 do sBin:=sBin+HexCng(copy(sCarStatus,I,1)); ∥把二進(jìn)制數(shù)據(jù)的每一位存進(jìn)數(shù)組 forI:=0to 3l do ArrBin[I]:=copy(sBin,I+1,1); sCarStatuText:=HandleCarStatus(ArrBin);{車輛狀態(tài)} 監(jiān)控中心根據(jù)每一臺車載機(jī)傳回的信息內(nèi)容發(fā)送不同的命令。發(fā)送命令程序需嚴(yán)格按照中心發(fā)送命令集規(guī)定的的格式來寫,下面列舉其中的幾條命令: ∥該指令要求車載機(jī)以sInterval為時間間隔,回傳sCount次定位信息。 sRightStr:=‘*HQ,0000000000,D1,’+sTime+‘,’+sInterval+‘,’+sCount+‘#’ ∥車載機(jī)接到這條指令后將清除掉 所有報警信息。 sRightStr:=‘*HQ,0000000000,R7,’+sTime+‘#’; if Application.MessageBox(PChar(‘真的要解除對車輛【‘十CarID+’】報警嗎?’),‘提示’,MB_YESNO+MB_DEFBUTTON2)=IDNO then Exit; 這里的CarID指車載機(jī)序列號。 ∥車載機(jī)收到這條命令將會啟動斷油斷電。 sRightStr:=‘*HQ,0000000000,S20,’+sTime+‘,1,3,10,3,5,5#’; if Application.MessageBox(PChar(‘真的要對車輛【‘+CarID+’】斷油斷電嗎?’),‘提示’,MB_YESNO+MB_DEFBUTTON2)=IDNO then Exit; 結(jié)語 目前,車載GPS定位監(jiān)控系統(tǒng)已經(jīng)被各運(yùn)輸公司使用在出租車、客車以及大型車隊上,該軟件技術(shù)很好的實現(xiàn)了對車輛位置、狀態(tài)的監(jiān)控和調(diào)度管理。 隨著GPS應(yīng)用領(lǐng)域的擴(kuò)大,車載GPS導(dǎo)航定位監(jiān)控軟什的系統(tǒng)的功能也將隨著導(dǎo)航、通信等需求而不斷的增多和完善。GPS車載機(jī)通信協(xié)議會根據(jù)GPS車載機(jī)產(chǎn)品的功能升級而不斷升級,增加新的命令,相應(yīng)的軟件系統(tǒng)也要增加新的指令,本系統(tǒng)的設(shè)計將易于這些升級維護(hù)工作的進(jìn)行。 |