一種實時檢測校車偏離行駛路線并自動報警的方法
【專利摘要】本發(fā)明公開了一種實時檢測校車偏離行駛路線并自動報警的方法,將車載終端分別裝在多輛校車上,通過3G通訊模塊連接到公網(wǎng),自動從服務(wù)器中獲取行駛路線,通過GPS定位模塊實時獲取校車當(dāng)前位置,實時檢測當(dāng)前校車是否在規(guī)定的行駛路線,如果發(fā)生偏離行駛路線的情況,則發(fā)出語音報警并上報服務(wù)器,服務(wù)器用來存儲校車的行駛路徑與校車基本信息以及駕駛員和隨車照管員的信息,并負責(zé)將車載終端上報的偏離路線事件與該校車信息一同分發(fā)到各監(jiān)控終端,監(jiān)控終端接收服務(wù)器發(fā)送的偏離路線事件與校車信息,并定位偏離路線的校車、發(fā)出語音警報、顯示校車信息,使用方便、操作簡單、智能化程度高,便于實現(xiàn)校車行駛路線的管理與控制。
【專利說明】一種實時檢測校車偏離行駛路線并自動報警的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種校車行駛路線的監(jiān)控,具體地說,涉及一種實時檢測校車偏離行駛路線并自動報警的方法,屬于電子【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]近幾年隨著校車的普及,校車的事故也是不斷的涌現(xiàn)了出來。國務(wù)院和各地政府先后都出臺了校車的管理新規(guī),對校車運營進行嚴格的規(guī)定和審查。越來越多校車都安裝上了全球定位系統(tǒng)(GPS)或北斗定位,監(jiān)管部門可對校車進行實時的位置跟蹤。但是校車的數(shù)量眾多,就如校車管理規(guī)定中校車必須按當(dāng)?shù)卣A(yù)先規(guī)定的路線行駛一項,如果政府要用人力對所有校車實時監(jiān)管,分辨是否有校車偏離行駛路線就有相當(dāng)大的難度,需要花費大量的人力、物力。如果將現(xiàn)代的檢測和通信技術(shù)與校車管理相結(jié)合,實現(xiàn)一種實時監(jiān)管校車是否偏離行駛路線并能自動報警的系統(tǒng),將會對減少校車事故的發(fā)生起到積極的作用。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題是針對以上不足,提供一種實時檢測校車偏離行駛路線并自動報警的方法,采用本發(fā)明的方法,可以實現(xiàn)對校車的實時監(jiān)控,使用方便、操作簡單、智能化程度高,便于實現(xiàn)校車行駛路線的管理與控制,將對減少校車事故的發(fā)生起到積極的作用,推廣應(yīng)用價值高。
[0004]為解決以上技術(shù)問題,本發(fā)明采用以下技術(shù)方案:一種實時檢測校車偏離行駛路線并自動報警的方法,所述方法通過車載終端、監(jiān)控終端和服務(wù)器來實現(xiàn),車載終端包括3G通訊模塊和GPS定位模塊,其特征在于:所述方法包括服務(wù)器控制步驟、車載終端控制步驟和監(jiān)控終端控制步驟。
[0005]所述服務(wù)器控制步驟包括:
開始于步驟S101,在步驟S102,服務(wù)器進入監(jiān)聽請求狀態(tài),等待來自車載終端、監(jiān)控終端或用戶發(fā)出的退出請求,接收到請求后進入步驟S103 ;
在步驟S103,判斷請求是否為監(jiān)控終端的收聽注冊請求,如果是則進入步驟S105,否則進入S104 ;
在步驟S105,將請求監(jiān)控偏離事件的監(jiān)控終端網(wǎng)絡(luò)連接添加到終端列表MonitorList中,返回至步驟S102 ;
在步驟S104,判斷請求是否為行駛路線偏離請求,如果是則進入步驟S106,否則進入步驟S107 ;
在步驟S106,將偏離請求中的數(shù)據(jù)記錄到數(shù)據(jù)庫中,然后進入步驟S108 ;
在步驟S108,發(fā)送偏離線路消息到監(jiān)控終端列表MonitorList中記錄的全部監(jiān)控終端,然后進入步驟S102;
在步驟S107,判斷請求是否為獲取路線請求,如果是則進入步驟S109,否則進入步驟S113 ;
在步驟S109,根據(jù)請求的終端編號從數(shù)據(jù)庫中獲取對應(yīng)的當(dāng)前路徑和當(dāng)前的路徑版本號,然后進入步驟SllO ;
在步驟S110,判斷當(dāng)前的路徑版本號是否大于校車車載終端上傳的版本號,如果是則進入步驟SI 12,否則進入步驟Slll ;
在步驟S111,向發(fā)出請求的車載終端返回當(dāng)前的路徑編號,然后進入步驟S102 ;在步驟S112中,向發(fā)出請求的車載終端返回當(dāng)前的路徑和當(dāng)前的路徑編號,然后進入步驟S102 ;
在步驟S113,判斷請求是否為監(jiān)控終端注銷的請求,如果是則進入步驟S114,否則進入步驟SI 15 ;
在步驟S114,將發(fā)出請求的監(jiān)控終端與服務(wù)器的網(wǎng)絡(luò)連接從監(jiān)控終端列表MonitorList中刪除,然后進入步驟S102 ;
在步驟S115,判斷請求是否為用戶發(fā)出的退出當(dāng)前監(jiān)聽請求,如果是則進入步驟S116,否則進入步驟S102 ;
流程結(jié)束于步驟S116。
[0006]一種優(yōu)化方案,所述車載終端控制步驟包括:
開始于S201,在步驟S202,從本地數(shù)據(jù)庫中獲取校車行駛路徑的版本號并賦值給LocalVersion,如果本地并未存儲過路徑的版本號,則使用默認值0,然后進入步驟S203 ;在步驟S203,向服務(wù)器發(fā)出獲取該校車行駛路徑的請求,并在請求中附帶該車載終端預(yù)設(shè)的編號、本地路徑的版本號,從服務(wù)器中獲取該校車最新的路徑NewPath、路徑的版本號NewVersion、最大有效距離ValidDistance,然后進入步驟S204 ;
在步驟S204,判斷新的路徑版本號NewVersion是否大于本地的路徑版本號1calVersion,如果服務(wù)器的路徑版本NewVersion大于車載終端本地的路徑版本LocalVersion,則進入步驟S206,否則進入步驟S205 ;
在步驟S205,從車載終端的本地數(shù)據(jù)庫中獲取行駛路徑并將其賦值于代表路徑的內(nèi)存變量Path,然后進入步驟S209 ;
在步驟S206,將新的路徑存儲到車載終端的數(shù)據(jù)庫中,然后進入步驟S207 ;
在步驟S207,把車載終端數(shù)據(jù)庫中的路徑版本號改為從服務(wù)器獲取到的路徑版本號NewVersion,然后進入步驟S208 ;
在步驟S208,將從服務(wù)器獲取的路徑NewPath賦值給代表路徑的內(nèi)存變量Path,然后進入步驟S209 ;
在步驟S209,判斷代表路徑內(nèi)存變量Path中節(jié)點的個數(shù)是否大于或等于2,如果節(jié)點的個數(shù)大于或等于2,則進入步驟S210,否則進入步驟S215 ;
在步驟S210,通過GPS模塊獲取校車當(dāng)前的經(jīng)緯度坐標并賦值給內(nèi)存變量CurrentGPS,然后進入步驟S211 ;
在步驟S211,計算代表校車當(dāng)前位置的內(nèi)存變量CurrentGPS是否在路徑Path上,并將計算結(jié)果賦值給標志位OnRoad中,然后進入步驟S212 ;
在步驟S212,判斷OnRoad是否為True,如果OnRoad為True則進入步驟S216,否則進入步驟S213 ; 在步驟S213,播放偏離線路語音警報,以提醒駕駛員偏離了行駛線路,然后進入步驟S214 ;
在步驟S214,向服務(wù)器發(fā)出路線偏離消息,并附帶校車的當(dāng)前經(jīng)緯坐標和車載終端編號,然后進入步驟S216 ;
在步驟S216,判斷是否接收到退出偏離檢測邏輯的事件,如果收到退出事件,則進入步驟S215,否則進入步驟S210 ;
流程結(jié)束于步驟S215。
[0007]進一步地,所述監(jiān)控終端控制步驟包括:
開始于步驟S401,然后進入步驟S402 ;
在步驟S402,監(jiān)控終端向服務(wù)器發(fā)送監(jiān)控注冊請求,與服務(wù)器建立網(wǎng)絡(luò)連接,告知服務(wù)器該監(jiān)控終端需要監(jiān)控偏離路線事件,然后進入步驟S403 ;
在步驟S403,判斷是否與服務(wù)器連接成功并注冊為監(jiān)控終端,如果注冊成功進入步驟S404,否則進入步驟S405 ;
在步驟S404,等待服務(wù)器或者來自用戶操作所發(fā)出的消息,接收到消息后進入步驟S406 ;
在步驟S406,判斷接收的消息是否為偏離路線信息,如果是則進入步驟S407,否則進入步驟S411 ;
在步驟S407,報放偏離路徑的報警聲,然后進步驟S408 ;
在步驟S408,解析接收到的偏離消息體中所包含的GPS經(jīng)緯坐標,并根據(jù)該經(jīng)緯坐標在地址中標記校車位置,并將地圖平移使校車位置顯示在監(jiān)控畫面的中心位置,然后進入步驟S409 ;
在步驟S409,解析接收到的偏離消息體中所包含的規(guī)定的行駛路線,并在地圖中畫出該校車規(guī)定的行駛路線,然后進入步驟S410;
在步驟S410,解析接收到的偏離消息中包含的校車信息,并在監(jiān)控畫面中顯示,然后返回步驟S404 ;
在步驟S411,判斷接收到的消息是否為來自用戶操作所發(fā)出的退出程序的消息,如果是進入步驟S412,否則進入步驟S404 ;
在步驟S412,向服務(wù)器發(fā)出注銷請求,告之服務(wù)器該監(jiān)控終端不想再接收偏離路徑事件,發(fā)送請求后關(guān)閉與服務(wù)器的網(wǎng)絡(luò)連接,然后進入步驟S413;
在步驟S405,在監(jiān)控畫面中顯示對話框提示注冊不成功的消息及原因,然后進入步驟S413,流程結(jié)束于步驟S413。
[0008]進一步地,步驟S211包括:
開始于步驟S301,然后進入步驟S302 ;
在步驟S302中,聲明一個節(jié)點索引變量Index并賦初值為0,然后進入步驟S303 ;在步驟S303,判斷節(jié)點索引變量Index+Ι是否大于Path中節(jié)點的個數(shù),如果是則進入步驟S317,否則進入步驟S304 ;
在步驟S304,根據(jù)索引值Index獲取當(dāng)前節(jié)點用a來表示,然后進入步驟S305 ; 在步驟S305,根據(jù)索引值Index獲取下一個節(jié)點用b來表示,然后進入步驟S306 ; 在步驟S306,計算當(dāng)前節(jié)點到校車當(dāng)前位置的線段以as表示,然后進入步驟S307 ; 在步驟S307,計算當(dāng)前節(jié)點到下一節(jié)點的線段以ab表示,然后進入步驟S308 ;
在步驟S308,計算下一節(jié)點到當(dāng)前節(jié)點的線段用ba表示,然后進入步驟S309 ;
在步驟S309,計算下一節(jié)點到校車當(dāng)前位置的線段以bs表示,然后進入步驟S310 ;在步驟S310,判斷當(dāng)前節(jié)點到下一節(jié)點形成的線段ab與當(dāng)前節(jié)點到校車當(dāng)前位置形成的線段as的內(nèi)積是否小于或等于O,如果是則進入步驟S312,否則進入步驟S311 ;
在步驟S312,判斷校車當(dāng)前位置到當(dāng)前節(jié)點的距離是否小于等于最大有效距離ValidDistance,如果是則進入步驟S316,否則進入步驟S318 ;
在步驟S316,將標志位OnRoad置True,然后進入步驟S319 ;
在步驟S311,判斷下一節(jié)點到當(dāng)前節(jié)點所形成的線段ba與bs的內(nèi)積是否小于等于0,如果是則進入步驟S313,否則進入S314 ;
在步驟S313,判斷校車當(dāng)前位置與下一節(jié)點的距離是否小于等于最大有效距離,如果是則進入S316,否則進入步驟S318 ;
在步驟S314,判斷校車當(dāng)前位置點在當(dāng)前節(jié)點與下一節(jié)點所形成線段的垂點,垂點用nearestPoint表示,然后進入步驟S315 ;
在步驟S315,判斷垂點到校車當(dāng)前位置的距離是否小于等于最大有效距離ValidDistance,如果是則進入步驟S316,否則進入步驟S318 ;
在步驟S317,將表示是否在路徑上的標志位OnRoad設(shè)置為False,然后進入步驟S319 ;
在步驟S318,將節(jié)點索引變量Index加1,然后進入步驟S303 ;
流程結(jié)束于步驟S319。
[0009]本發(fā)明采用以上技術(shù)方案后,與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:將車載終端分別裝在多輛校車上,當(dāng)開機時,通過3G通訊模塊連接到公網(wǎng),自動從服務(wù)器中獲取行駛路線,通過GPS定位模塊實時獲取校車當(dāng)前位置,實時檢測當(dāng)前校車是否在規(guī)定的行駛路線,如果發(fā)生偏離行駛路線的情況,則發(fā)出語音報警并上報服務(wù)器。服務(wù)器可以是運行在公網(wǎng)上的單臺服務(wù)器或是服務(wù)器群組,主要用來存儲校車的行駛路徑與校車基本信息以及駕駛員和隨車照管員的信息,并負責(zé)將車載終端上報的偏離路線事件與該校車信息一同分發(fā)到各監(jiān)控終端。監(jiān)控終端是具有大監(jiān)控屏幕的普通電腦,用來接收服務(wù)器發(fā)送的偏離路線事件與校車信息,并定位偏離路線的校車、發(fā)出語音警報、顯示校車信息,使用方便、操作簡單、智能化程度高,便于實現(xiàn)校車行駛路線的管理與控制。
[0010]下面結(jié)合附圖和實施例對本發(fā)明進行詳細說明。
【專利附圖】
【附圖說明】
[0011]附圖1是本發(fā)明實施例中校車到路段最小距離的計算方法示意圖;
附圖2是本發(fā)明實施例中車載終端、監(jiān)控終端和服務(wù)器的序列圖;
附圖3是本發(fā)明實施例中服務(wù)器控制步驟的流程圖;
附圖4是本發(fā)明實施例中車載終端控制步驟的流程圖;
附圖5是本發(fā)明實施例中代表校車當(dāng)前位置的內(nèi)存變量CurrentGPS是否在路徑Path上計算步驟的流程圖;
附圖6是本發(fā)明實施例中監(jiān)控終端控制步驟的流程圖?!揪唧w實施方式】
[0012]實施例,一種實時檢測校車偏離行駛路線并自動報警的方法,通過車載終端、監(jiān)控終端和服務(wù)器來實現(xiàn)。車載終端是使用ARMll微處理器的嵌入式系統(tǒng),包括3G通訊模塊和GPS定位模塊。
[0013]使用前首先進行數(shù)據(jù)初始化步驟:
1.通過網(wǎng)絡(luò)連接到服務(wù)器上的人機界面添加車載終端信息,包括校車車牌號、駕駛員姓名及電話、隨車管理員姓名及電話、所屬學(xué)校、運營單位,將數(shù)據(jù)存儲到服務(wù)器數(shù)據(jù)庫的車載終端記錄中,并自動產(chǎn)生唯一終端編號進行唯一標識;
2.通過網(wǎng)絡(luò)連接到服務(wù)器上的人機界面,為車載終端設(shè)置行駛路徑與路徑的寬度,保存到數(shù)據(jù)庫中。行駛路線用路線上的節(jié)點經(jīng)緯度坐標的有序集合來表示,在保存路徑時自動使路徑版本號加1,數(shù)字越大表示版本越新,新建的路徑初始值為I。
[0014]3.將校車車載終端編號預(yù)設(shè)為服務(wù)器中對應(yīng)的唯一終端編號。
[0015]校車是否在行駛路線上的計算原理:
預(yù)定義:
行駛路線用路線上的節(jié)點經(jīng)緯度坐標的有序集合來表示,命名為路徑。
[0016]行駛路線寬度的1/2命名為校車到路徑的最大有效距離。
[0017]計算方法:
計算校車到路徑上任意相鄰的兩個節(jié)點所形成的線段的最小距離,如果存在一個最小距離小于或等于最大有效距離則校車在行駛路線上,否則不在行駛路線上。
[0018]校車到路徑上任一條線段的最小距離計算方法:
如圖1所示,假設(shè)線段的兩個節(jié)點用a、b表示,校車位置用點s表示,點a到點b的線段稱為ab,點b到點a的線段稱為ba,點a到點s的線段稱為as,點b到點s的線段稱為bs。
[0019]計算點到ab最小距離有三種情況,第一種:如圖1 (a)所示,ab與as內(nèi)積小于或等于O即夾角大于等于90度且小于等于270度,則點s到點a的距離即為s到ab的距離。
[0020]第二種,如圖1 (b)所示,ba與bs的內(nèi)積小于等于O即夾角大于等于90度且小于等于270度,則s到點b的距離即為s到ab的距離。
[0021]第三種,如圖1 (C)所示,ab與as的內(nèi)積大于O即夾角小于90度且ba與bs的內(nèi)積大于O即夾角小于90度,則s到ab的最小距離為s到ab的垂線長度即長度等于b點坐標+ba的單位向量* (bs與ba的內(nèi)積)*bs的長度。
[0022]如圖2所示,車載終端、監(jiān)控終端和服務(wù)器的交互方式如下:
第I步,車載終端獲取本地路徑版本號;
第2步,車載終端向服務(wù)器通過提交本地版本號和車載終端預(yù)設(shè)的編號獲取服務(wù)器上存儲的路徑與路徑版本號;
第3步,服務(wù)器根據(jù)車載終端上傳的車載終端編號獲取數(shù)據(jù)庫中的路徑和路徑版本
號;
第4步,服務(wù)器給車載終端返回路徑和路徑版本號;
第5步,車載終端存儲或更新本地路徑和路徑版本號; 第6步,監(jiān)控終端向服務(wù)器提交注冊監(jiān)控終端請求,建立與服務(wù)器的網(wǎng)絡(luò)連接;第7步,服務(wù)器將與監(jiān)控終端的網(wǎng)絡(luò)連接添加到監(jiān)控終端列表,并回復(fù)監(jiān)控終端的請求是否注冊成功,注冊成功后監(jiān)控終端等待服務(wù)器或者來自用戶操作所發(fā)出的消息;
第8步,車載終端根據(jù)算法計算是否偏離路徑;
第9步,車載終端發(fā)生偏離時,報放偏離線路語音警報;
第10步,車載終端向服務(wù)器發(fā)送校車偏離路徑通知,偏離路徑通知包括車載終端編號、偏離的時間、經(jīng)緯度坐標;
第11步,服務(wù)器接收到車載終端發(fā)送的偏離路徑通知,將偏離事件記錄到數(shù)據(jù)庫中,并回復(fù)監(jiān)控終端是否接收成功;
第12步,服務(wù)器根據(jù)接收到的車載終端編號從數(shù)據(jù)庫中獲取校車信息;
第13步,服務(wù)器把偏離路徑通知和校車的信息一同分發(fā)到已經(jīng)在服務(wù)器上注冊過的各監(jiān)控終端,校車的信息包括校車的車牌號、駕駛員姓名和電話、隨車照管員姓名和電話;第14步,各監(jiān)控終端回復(fù)服務(wù)器是否成功接收;
第15步,監(jiān)控終端在監(jiān)控大屏幕上顯示并定位校車,顯示校車信息,并播放語音警報。
[0023]該方法包括服務(wù)器控制步驟、車載終端控制步驟和監(jiān)控終端控制步驟。
[0024]如圖3所示,服務(wù)器控制步驟包括:流程開始于S101,在步驟S102,服務(wù)器進入監(jiān)聽請求狀態(tài),等待來自車載終端、監(jiān)控終端或用戶發(fā)出的退出請求,接收到請求后進入步驟S103 ;
在步驟S103,判斷請求是否為監(jiān)控終端的收聽注冊請求,如果是則進入步驟S105,否則進入S104 ;
在步驟S105,將請求監(jiān)控偏離事件的監(jiān)控終端網(wǎng)絡(luò)連接添加到終端列表MonitorList中,以備服務(wù)器向監(jiān)控終端發(fā)送偏離消息使用,返回至步驟S102 ;
在步驟S104,判斷請求是否為行駛路線偏離請求,如果是則進入步驟S106,否則進入步驟S107 ;
在步驟S106,將偏離請求中的數(shù)據(jù)(車載終端編號、校車GPS坐標、請求時間)記錄到數(shù)據(jù)庫中,然后進入步驟S108;
在步驟S108,發(fā)送偏離線路消息到監(jiān)控終端列表MonitorList中記錄的全部監(jiān)控終端,發(fā)送時需要先檢測服務(wù)器與監(jiān)控終端的網(wǎng)絡(luò)連接是否仍然可用,不可用的從MonitorList中刪除,仍可用的發(fā)送偏離消息,消息數(shù)據(jù)包括校車的GPS坐標、根據(jù)車載終端編號從數(shù)據(jù)庫中獲取的該校車的車牌號、行駛路徑、駕駛員姓名和電話、所屬學(xué)校、運營單位,然后進入步驟S102;
在步驟S107,判斷請求是否為獲取路線請求,如果是則進入步驟S109,否則進入步驟S113 ;
在步驟S109,根據(jù)請求的終端編號從數(shù)據(jù)庫中獲取對應(yīng)的當(dāng)前路徑和當(dāng)前的路徑版本號,然后進入步驟SllO ;
在步驟S110,判斷當(dāng)前的路徑版本號是否大于校車車載終端上傳的版本號,如果是則進入步驟SI 12,否則進入步驟Slll ;
在步驟S111,向發(fā)出請求的車載終端返回當(dāng)前的路徑編號,然后進入步驟S102 ; 在步驟S112中,向發(fā)出請求的車載終端返回當(dāng)前的路徑和當(dāng)前的路徑編號,然后進入步驟S102 ;
在步驟S113,判斷請求是否為監(jiān)控終端注銷的請求,如果是則進入步驟S114,否則進入步驟SI 15 ;
在步驟S114,將發(fā)出請求的監(jiān)控終端與服務(wù)器的網(wǎng)絡(luò)連接從監(jiān)控終端列表MonitorList中刪除,然后進入步驟S102 ;
在步驟S115,判斷請求是否為用戶發(fā)出的退出當(dāng)前監(jiān)聽請求,如果是則進入步驟S116,否則進入步驟S102 ;
流程結(jié)束于步驟S116。
[0025]如圖4所示,車載終端控制步驟包括:
流程開始于S201,在步驟S202,從本地數(shù)據(jù)庫中獲取校車行駛路徑的版本號并賦值給LocalVersion,如果本地并未存儲過路徑的版本號,即首次運行程序則使用默認值0,然后進入步驟S203 ;
在步驟S203,向服務(wù)器發(fā)出獲取該校車行駛路徑的請求,并在請求中附帶該車載終端預(yù)設(shè)的編號、本地路徑的版本號,從服務(wù)器中獲取該校車最新的路徑NewPath、路徑的版本號NewVersion、最大有效距離ValidDistance即行駛路線寬度的一半,然后進入步驟S204 ;
在步驟S204,判斷新的路徑版本號NewVersion是否大于本地的路徑版本號1calVersion,即服務(wù)器中存儲的路徑是否被修改過,如果服務(wù)器的路徑版本NewVersion大于車載終端本地的路徑版本LocalVersion,則進入步驟S206,否則進入步驟S205 ;
在步驟S205,從車載終端的本地數(shù)據(jù)庫中獲取行駛路徑并將其賦值于代表路徑的內(nèi)存變量Path,然后進入步驟S209 ;
在步驟S206,將新的路徑存儲到車載終端的數(shù)據(jù)庫中,然后進入步驟S207 ;
在步驟S207,把車載終端數(shù)據(jù)庫中的路徑版本號改為從服務(wù)器獲取到的路徑版本號NewVersion,然后進入步驟S208 ;
在步驟S208,將從服務(wù)器獲取的路徑NewPath賦值給代表路徑的內(nèi)存變量Path,然后進入步驟S209 ;
在步驟S209,判斷代表路徑內(nèi)存變量Path中節(jié)點的個數(shù)是否大于或等于2,即行駛路徑至少要有開始點和結(jié)束點,如果節(jié)點的個數(shù)大于或等于2,則進入步驟S210,否則進入步驟 S215 ;
在步驟S210,通過GPS模塊獲取校車當(dāng)前的經(jīng)緯度坐標并賦值給內(nèi)存變量CurrentGPS,然后進入步驟S211 ;
在步驟S211,計算代表校車當(dāng)前位置的內(nèi)存變量CurrentGPS是否在路徑Path上,并將計算結(jié)果賦值給標志位OnRoad中,然后進入步驟S212 ;
在步驟S212,判斷OnRoad是否為True,即校車是否在行駛路線上,如果OnRoad為True即在行駛路線上則進入步驟S216,否則進入步驟S213 ;
在步驟S213,播放偏離線路語音警報,以提醒駕駛員偏離了行駛線路,然后進入步驟S214 ;
在步驟S214,向服務(wù)器發(fā)出路線偏離消息,并附帶校車的當(dāng)前經(jīng)緯坐標和車載終端編號,然后進入步驟S216 ; 在步驟S216,判斷是否接收到退出偏離檢測邏輯的事件,如果收到退出事件,則進入步驟S215,否則進入步驟S210 ;
流程結(jié)束于步驟S215。
[0026]如圖5所示,代表校車當(dāng)前位置的內(nèi)存變量CurrentGPS是否在路徑Path上的計算步驟,即步驟S211包括:
流程開始于步驟S301,然后進入步驟S302 ;
在步驟S302中,聲明一個節(jié)點索引變量Index并賦初值為0,然后進入步驟S303 ;在步驟S303,判斷節(jié)點索引變量Index+Ι是否大于Path中節(jié)點的個數(shù),由于要計算校車這一點到路徑上任一相鄰兩點所形成的線段最小距離,一次判斷要取兩個節(jié)點即當(dāng)前索引節(jié)點和下一個節(jié)點,如果Index+l>Path中節(jié)點的個數(shù),即下一個節(jié)點不存在則進入步驟S317,否則進入步驟S304 ;
在步驟S304,根據(jù)索引值Index獲取當(dāng)前節(jié)點用a來表示,然后進入步驟S305 ;在步驟S305,根據(jù)索引值Index獲取下一個節(jié)點用b來表示,然后進入步驟S306 ;在步驟S306,計算當(dāng)前節(jié)點到校車當(dāng)前位置的線段以as表示,然后進入步驟S307 ;在步驟S307,計算當(dāng)前節(jié)點到下一節(jié)點的線段以ab表示,然后進入步驟S308 ;
在步驟S308,計算下一節(jié)點到當(dāng)前節(jié)點的線段用ba表示,然后進入步驟S309 ;
在步驟S309,計算下一節(jié)點到校車當(dāng)前位置的線段以bs表示,然后進入步驟S310 ;在步驟S310,判斷當(dāng)前節(jié)點到下一節(jié)點形成的線段ab與當(dāng)前節(jié)點到校車當(dāng)前位置形成的線段as的內(nèi)積是否小于或等于0,即判斷ab與as的夾角是否大于等于90且小于等于270度,因為兩個向量的內(nèi)積等于ab的單位向量*as的單位向量*cos夾角,而cos90度到cos270度是小于等于O的,如果ab與as的內(nèi)積小于等于O,則進入步驟S312,否則進入步驟 S311 ;
在步驟S312,判斷校車當(dāng)前位置到當(dāng)前節(jié)點的距離是否小于等于最大有效距離ValidDistance,即判斷是否在以當(dāng)前節(jié)點到下一節(jié)點形成的線段上,如果校車當(dāng)前位置到當(dāng)前節(jié)點的距離小于等于最大的有效距離,則進入步驟S316,否則進入步驟S318 ;
在步驟S316,將標志位OnRoad置True,即表達校車當(dāng)前是在行駛路線上,然后進入步驟 S319 ;
在步驟S311,判斷下一節(jié)點到當(dāng)前節(jié)點所形成的線段ba與bs的內(nèi)積是否小于等于0,如果是則進入步驟S313,否則進入S314 ;
在步驟S313,判斷校車當(dāng)前位置與下一節(jié)點的距離是否小于等于最大有效距離,如果是則進入S316,否則進入步驟S318 ;
在步驟S314,判斷校車當(dāng)前位置點在當(dāng)前節(jié)點與下一節(jié)點所形成線段的垂點,垂點用nearestPoint表示,然后進入步驟S315 ;
在步驟S315,判斷垂點到校車當(dāng)前位置的距離是否小于等于最大有效距離ValidDistance,如果是則進入步驟S316,否則進入步驟S318 ;
在步驟S317,將表示是否在路徑上的標志位OnRoad設(shè)置為False,即表示不在路徑上,然后進入步驟S319 ;
在步驟S318,將節(jié)點索引變量Index加1,即在本次循環(huán)中的下一個節(jié)點在進入下一次循環(huán)時就變成了當(dāng)前節(jié)點,然后進入步驟S303 ; 流程結(jié)束于步驟S319。
[0027]如圖6所示,監(jiān)控終端控制步驟包括:
流程開始于步驟S401,然后進入步驟S402 ;
在步驟S402,監(jiān)控終端向服務(wù)器發(fā)送監(jiān)控注冊請求,與服務(wù)器建立網(wǎng)絡(luò)連接,告知服務(wù)器該監(jiān)控終端需要監(jiān)控偏離路線事件,然后進入步驟S403 ;
在步驟S403,判斷是否與服務(wù)器連接成功并注冊為監(jiān)控終端,如果注冊成功進入步驟S404,否則進入步驟S405 ;
在步驟S404,等待服務(wù)器或者來自用戶操作所發(fā)出的消息,消息格式采用JSON的形式,包含的消息的類型與相關(guān)的參數(shù)信息,接收到消息后進入步驟S406 ;
在步驟S406,判斷接收的消息是否為偏離路線信息,如果是則進入步驟S407,否則進入步驟S411 ;
在步驟S407,報放偏離路徑的報警聲,然后進步驟S408 ;
在步驟S408,解析接收到的偏離消息體中所包含的GPS經(jīng)緯坐標,并根據(jù)該經(jīng)緯坐標在地址中標記校車位置,并將地圖平移使校車位置顯示在監(jiān)控畫面的中心位置,然后進入步驟S409 ;
在步驟S409,解析接收到的偏離消息體中所包含的規(guī)定的行駛路線,并在地圖中畫出該校車規(guī)定的行駛路線,然后進入步驟S410;
在步驟S410,解析接收到的偏離消息中包含的校車信息(校車車牌號、運營單位、駕駛員姓名和電話、隨車照管員姓名和電話、所屬學(xué)校),并在監(jiān)控畫面中顯示,然后返回步驟S404 ;
在步驟S411,判斷接收到的消息是否為來自用戶操作所發(fā)出的退出程序的消息,如果是進入步驟S412,否則進入步驟S404 ;
在步驟S412,向服務(wù)器發(fā)出注銷請求,告之服務(wù)器該監(jiān)控終端不想再接收偏離路徑事件,發(fā)送請求后關(guān)閉與服務(wù)器的網(wǎng)絡(luò)連接,然后進入步驟S413 ;
在步驟S405,在監(jiān)控畫面中顯示對話框提示注冊不成功的消息及原因,然后進入步驟S413,流程結(jié)束于步驟S413。
[0028]以上所述為本發(fā)明最佳實施方式的舉例,其中未詳細述及的部分均為本領(lǐng)域普通技術(shù)人員的公知常識。本發(fā)明的保護范圍以權(quán)利要求的內(nèi)容為準,任何基于本發(fā)明的技術(shù)啟示而進行的等效變換,也在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種實時檢測校車偏離行駛路線并自動報警的方法,所述方法通過車載終端、監(jiān)控終端和服務(wù)器來實現(xiàn),車載終端包括3G通訊模塊和GPS定位模塊,其特征在于:所述方法包括服務(wù)器控制步驟、車載終端控制步驟和監(jiān)控終端控制步驟; 所述服務(wù)器控制步驟包括: 開始于步驟S101,在步驟S102,服務(wù)器進入監(jiān)聽請求狀態(tài),等待來自車載終端、監(jiān)控終端或用戶發(fā)出的退出請求,接收到請求后進入步驟S103 ; 在步驟S103,判斷請求是否為監(jiān)控終端的收聽注冊請求,如果是則進入步驟S105,否則進入S104 ; 在步驟S105,將請求監(jiān)控偏離事件的監(jiān)控終端網(wǎng)絡(luò)連接添加到終端列表MonitorList中,返回至步驟S102 ; 在步驟S104,判斷請求是否為行駛路線偏離請求,如果是則進入步驟S106,否則進入步驟S107 ; 在步驟S106,將偏離請求中的數(shù)據(jù)記錄到數(shù)據(jù)庫中,然后進入步驟S108 ; 在步驟S108,發(fā)送偏離線路消息到監(jiān)控終端列表MonitorList中記錄的全部監(jiān)控終端,然后進入步驟S102; 在步驟S107,判斷請求 是否為獲取路線請求,如果是則進入步驟S109,否則進入步驟S113 ; 在步驟S109,根據(jù)請求的終端編號從數(shù)據(jù)庫中獲取對應(yīng)的當(dāng)前路徑和當(dāng)前的路徑版本號,然后進入步驟SllO ; 在步驟S110,判斷當(dāng)前的路徑版本號是否大于校車車載終端上傳的版本號,如果是則進入步驟SI 12,否則進入步驟Slll ; 在步驟S111,向發(fā)出請求的車載終端返回當(dāng)前的路徑編號,然后進入步驟S102 ;在步驟S112中,向發(fā)出請求的車載終端返回當(dāng)前的路徑和當(dāng)前的路徑編號,然后進入步驟S102 ; 在步驟S113,判斷請求是否為監(jiān)控終端注銷的請求,如果是則進入步驟S114,否則進入步驟SI 15 ; 在步驟S114,將發(fā)出請求的監(jiān)控終端與服務(wù)器的網(wǎng)絡(luò)連接從監(jiān)控終端列表MonitorList中刪除,然后進入步驟S102 ; 在步驟S115,判斷請求是否為用戶發(fā)出的退出當(dāng)前監(jiān)聽請求,如果是則進入步驟S116,否則進入步驟S102 ; 流程結(jié)束于步驟S116。
2.如權(quán)利要求1所述的方法,其特征在于:所述車載終端控制步驟包括:開始于S201,在步驟S202,從本地數(shù)據(jù)庫中獲取校車行駛路徑的版本號并賦值給LocalVersion,如果本地并未存儲過路徑的版本號,則使用默認值0,然后進入步驟S203 ;在步驟S203,向服務(wù)器發(fā)出獲取該校車行駛路徑的請求,并在請求中附帶該車載終端預(yù)設(shè)的編號、本地路徑的版本號,從服務(wù)器中獲取該校車最新的路徑NewPath、路徑的版本號NewVersion、最大有效距離ValidDistance,然后進入步驟S204 ; 在步驟S204,判斷新的路徑版本號NewVersion是否大于本地的路徑版本號1calVersion,如果服務(wù)器的路徑版本NewVersion大于車載終端本地的路徑版本LocalVersion,則進入步驟S206,否則進入步驟S205 ; 在步驟S205,從車載終端的本地數(shù)據(jù)庫中獲取行駛路徑并將其賦值于代表路徑的內(nèi)存變量Path,然后進入步驟S209 ; 在步驟S206,將新的路徑存儲到車載終端的數(shù)據(jù)庫中,然后進入步驟S207 ; 在步驟S207,把車載終端數(shù)據(jù)庫中的路徑版本號改為從服務(wù)器獲取到的路徑版本號NewVersion,然后進入步驟S208 ; 在步驟S208,將從服務(wù)器獲取的路徑NewPath賦值給代表路徑的內(nèi)存變量Path,然后進入步驟S209 ; 在步驟S209,判斷代表路徑內(nèi)存變量Path中節(jié)點的個數(shù)是否大于或等于2,如果節(jié)點的個數(shù)大于或等于2,則進入步驟S210,否則進入步驟S215 ; 在步驟S210,通過GPS模塊獲取校車當(dāng)前的經(jīng)緯度坐標并賦值給內(nèi)存變量CurrentGPS,然后進入步驟S211 ; 在步驟S211,計算代表校車當(dāng)前位置的內(nèi)存變量CurrentGPS是否在路徑Path上,并將計算結(jié)果賦值給標志位OnRoad中,然后進入步驟S212 ; 在步驟S212,判斷OnRoad是否為True,如果OnRoad為True則進入步驟S216,否則進入步驟S213 ; 在步驟S213,播放偏離線路語音警報,以提醒駕駛員偏離了行駛線路,然后進入步驟S214 ; 在步驟S214,向服務(wù)器發(fā)出路線偏離消息,并附帶校車的當(dāng)前經(jīng)緯坐標和車載終端編號,然后進入步驟S216 ; 在步驟S216,判斷是否接收到退出偏離檢測邏輯的事件,如果收到退出事件,則進入步驟S215,否則進入步驟S210 ; 流程結(jié)束于步驟S215。
3.如權(quán)利要求1所述的方法,其特征在于:所述監(jiān)控終端控制步驟包括: 開始于步驟S401,然后進入步驟S402 ; 在步驟S402,監(jiān)控終端向服務(wù)器發(fā)送監(jiān)控注冊請求,與服務(wù)器建立網(wǎng)絡(luò)連接,告知服務(wù)器該監(jiān)控終端需要監(jiān)控偏離路線事件,然后進入步驟S403 ; 在步驟S403,判斷是否與服務(wù)器連接成功并注冊為監(jiān)控終端,如果注冊成功進入步驟S404,否則進入步驟S405 ; 在步驟S404,等待服務(wù)器或者來自用戶操作所發(fā)出的消息,接收到消息后進入步驟S406 ; 在步驟S406,判斷接收的消息是否為偏離路線信息,如果是則進入步驟S407,否則進入步驟S411 ; 在步驟S407,報放偏離路徑的報警聲,然后進步驟S408 ; 在步驟S408,解析接收到的偏離消息體中所包含的GPS經(jīng)緯坐標,并根據(jù)該經(jīng)緯坐標在地址中標記校車位置,并將地圖平移使校車位置顯示在監(jiān)控畫面的中心位置,然后進入步驟S409 ; 在步驟S409,解析接收到的偏離消息體中所包含的規(guī)定的行駛路線,并在地圖中畫出該校車規(guī)定的行駛路線,然后進入步驟S410;在步驟S410,解析接收到的偏離消息中包含的校車信息,并在監(jiān)控畫面中顯示,然后返回步驟S404 ; 在步驟S411,判斷接收到的消息是否為來自用戶操作所發(fā)出的退出程序的消息,如果是進入步驟S412,否則進入步驟S404 ; 在步驟S412,向服務(wù)器發(fā)出注銷請求,告之服務(wù)器該監(jiān)控終端不想再接收偏離路徑事件,發(fā)送請求后關(guān)閉與服務(wù)器的網(wǎng)絡(luò)連接,然后進入步驟S413 ; 在步驟S405,在監(jiān)控畫面中顯示對話框提示注冊不成功的消息及原因,然后進入步驟S413,流程結(jié)束于步驟S413。
4.如權(quán)利要求2所述的方法,其特征在于:步驟S211包括: 開始于步驟S301,然后進入步驟S302 ; 在步驟S302中,聲明一個節(jié)點索引變量Index并賦初值為O,然后進入步驟S303 ;在步驟S303,判斷節(jié)點索引變量Index+Ι是否大于Path中節(jié)點的個數(shù),如果是則進入步驟S317,否則進入步驟S304 ; 在步驟S304,根據(jù)索引值Index獲取當(dāng)前節(jié)點用a來表示,然后進入步驟S305 ; 在步驟S305,根據(jù)索引值Index獲取下一個節(jié)點用b來表示,然后進入步驟S306 ; 在步驟S306,計算當(dāng)前節(jié)點到校車當(dāng)前位置的線段以as表示,然后進入步驟S307 ; 在步驟S307,計算當(dāng)前 節(jié)點到下一節(jié)點的線段以ab表示,然后進入步驟S308 ; 在步驟S308,計算下一節(jié)點到當(dāng)前節(jié)點的線段用ba表示,然后進入步驟S309 ; 在步驟S309,計算下一節(jié)點到校車當(dāng)前位置的線段以bs表示,然后進入步驟S310 ;在步驟S310,判斷當(dāng)前節(jié)點到下一節(jié)點形成的線段ab與當(dāng)前節(jié)點到校車當(dāng)前位置形成的線段as的內(nèi)積是否小于或等于O,如果是則進入步驟S312,否則進入步驟S311 ; 在步驟S312,判斷校車當(dāng)前位置到當(dāng)前節(jié)點的距離是否小于等于最大有效距離ValidDistance,如果是則進入步驟S316,否則進入步驟S318 ; 在步驟S316,將標志位OnRoad置True,然后進入步驟S319 ; 在步驟S311,判斷下一節(jié)點到當(dāng)前節(jié)點所形成的線段ba與bs的內(nèi)積是否小于等于0,如果是則進入步驟S313,否則進入S314 ; 在步驟S313,判斷校車當(dāng)前位置與下一節(jié)點的距離是否小于等于最大有效距離,如果是則進入S316,否則進入步驟S318 ; 在步驟S314,判斷校車當(dāng)前位置點在當(dāng)前節(jié)點與下一節(jié)點所形成線段的垂點,垂點用nearestPoint表示,然后進入步驟S315 ; 在步驟S315,判斷垂點到校車當(dāng)前位置的距離是否小于等于最大有效距離ValidDistance,如果是則進入步驟S316,否則進入步驟S318 ; 在步驟S317,將表示是否在路徑上的標志位OnRoad設(shè)置為False,然后進入步驟S319 ; 在步驟S318,將節(jié)點索引變量Index加1,然后進入步驟S303 ; 流程結(jié)束于步驟S319。
【文檔編號】G08G1/127GK103942972SQ201410148807
【公開日】2014年7月23日 申請日期:2014年4月15日 優(yōu)先權(quán)日:2014年4月15日
【發(fā)明者】崔同良 申請人:崔同良