姚存治,李海勝
(鄭州鐵路職業(yè)技術(shù)學(xué)院,河南 鄭州 451460)
傳統(tǒng)車輛GPS定位需要在車輛上安裝GPS接收機,并需專業(yè)人員對GPS接收機進(jìn)行設(shè)置,車輛提供GPS接收機電源才能對車輛進(jìn)行定位。此外,獲取的GPS數(shù)據(jù)只能保存在GPS接收機或與其連接的計算機上。如需對車輛進(jìn)行遠(yuǎn)程監(jiān)控,則還需安裝數(shù)據(jù)發(fā)送模塊,如“單片機+SIM+GPRS”通信模塊。整個系統(tǒng)結(jié)構(gòu)復(fù)雜,技術(shù)要求高,部署難度大且成本高??蛻舳诵鑼I(yè)設(shè)備、軟件才能完成車輛信息的查詢,專業(yè)設(shè)備與軟件開發(fā)成本昂貴,且多固定部署無法移動使用,難以大范圍推廣。
本系統(tǒng)使用手機GPS定位服務(wù)端,將GPS定位功能、GPRS通信功能統(tǒng)一由智能手機完成,只需開發(fā)相應(yīng)的Android應(yīng)用程序即可實現(xiàn)上述兩項功能。系統(tǒng)結(jié)構(gòu)簡單,技術(shù)要求低,部署簡單且成本低。用戶無須購買專業(yè)設(shè)備,只需下載手機查詢客戶端程序,將其安裝到自己的android手機上即可??蛻舳顺绦蜃詣舆B接服務(wù)器,完成班車查詢。查詢功能會產(chǎn)生微量的GPRS流量,對用戶而言使用成本幾乎為零。
班車GPS定位與查詢系統(tǒng)采用C/S(Client/Server)結(jié)構(gòu),即客戶機和服務(wù)器結(jié)構(gòu)設(shè)計,包括手機GPS定位服務(wù)端、服務(wù)器端、手機查詢客戶端等三大模塊。系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)有手機GPS定位、百度手機地圖服務(wù)、Android應(yīng)用開發(fā)、互聯(lián)網(wǎng)Socket通信等。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
手機GPS定位服務(wù)端采用具有GPS、GPRS模塊的智能手機,安放在班車上,班車運行過程中通過Socket通信鏈接發(fā)送運行方向、車牌號、GPS坐標(biāo)(百度經(jīng)緯度坐標(biāo))、車速、定位精度等數(shù)據(jù)到服務(wù)器端。
服務(wù)器端是一臺連接互聯(lián)網(wǎng)的主機,負(fù)責(zé)接收、處理手機GPS定位服務(wù)端發(fā)送的信息,并將班車位置顯示在服務(wù)器端百度地圖之上,接受手機查詢客戶端的Socket連接請求,將當(dāng)前班車運行信息轉(zhuǎn)發(fā)至手機查詢客戶端。主要功能如下。
(1)服務(wù)管理:對手機GPS定位服務(wù)端與手機查詢客戶端的Socket連接進(jìn)行管理,開啟/關(guān)閉這兩項服務(wù)。
(2)班車查詢:地圖顯示班車當(dāng)前的運行情況。
(3)用戶管理:查看系統(tǒng)當(dāng)前用戶數(shù)量、用戶使用規(guī)律,考察系統(tǒng)的實用性與用戶對本系統(tǒng)的滿意程度。
手機查詢客戶端采用具有GPRS功能的android智能手機,通過手機數(shù)據(jù)服務(wù),Socket連接服務(wù)器端,接收服務(wù)器端發(fā)送的班車信息,將信息解碼,在客戶端百度地圖中顯示班車當(dāng)前位置、車牌號、車速等信息。主要功能如下。
(1)動態(tài)跟蹤:選擇班車運行方向,地圖自動對該運行方向車輛進(jìn)行動態(tài)跟蹤并顯示。
(2)臨近警告:設(shè)置自己的上車點,當(dāng)班車臨近上車點時(如班車距離上車地點小于100m),則對用戶發(fā)出臨近警告,提醒班車即將抵達(dá)上車點。
系統(tǒng)軟件設(shè)計包括手機GPS定位服務(wù)端軟件、服務(wù)器端軟件和手機查詢客戶端軟件等三個模塊。手機GPS定位服務(wù)端軟件和手機查詢客戶端軟件開發(fā)語言為Android,開發(fā)環(huán)境為eclipse3.7;服務(wù)器端軟件開發(fā)語言為Java,開發(fā)環(huán)境為eclipse3.7。下面是服務(wù)器端的程序片段:
importjava.io.IOException;
importjava.net.Socket;
importjava.util.ArrayList;
importjava.util.List;
//檢測GPS客戶端socket連接情況,刪除失聯(lián)//socket classclientSocketCheckHandleextendsThread
{
@Override
publicvoidrun()
{
while(!Thread.currentThread().isInterrupted())
{
System.out.println("GPS客戶端檢測服務(wù)已啟動......");List
for(Sockets:MultiThreadServer.mClientSocketQuene)
{
errorSockets.clear();
try{
s.sendUrgentData(0xff);
}catch(IOExceptione)
{
System.out.println("GPS客戶端離線:"+s.getInetAddress()+"port:"+s.getPort());
errorSockets.add(s);
try{s.close();}
catch(IOExceptione1)
{e1.printStackTrace();}
}
MultiThreadServer.mClientSocketQuene.removeAll(errorSockets);//從列表中去除無效的Socket
MultiThreadServer.updateLabUserNum(MultiThreadServer.mClientSocketQuene.size());//更新UI用戶連接數(shù)
}
try{
Thread.sleep(5000);
}catch(InterruptedExceptione){
Thread.currentThread().interrupt();
}
// while((System.currentTimeMillis()-begin<5000))
// 每隔5s檢測一次GPS客戶端Socket連接
//
{}
}System.out.println("GPS客戶端檢測服務(wù)已停止......");
}
}
將GPS定位端或客戶端安裝文件GPSServerApp.apk或GPSUserApp.apk下載到手機上;點擊apk文件,系統(tǒng)安裝該app,安裝成功后,在手機桌面顯示app圖標(biāo)。用戶只需安裝客戶端app,如圖2和圖3所示。
圖2 GPS定位端1.65M
圖3 客戶端1.63M
本系統(tǒng)僅提供Android系統(tǒng)的GPS定位端、客戶端,支持2.3以上版本。GPS定位端單擊打開“GPSServerApp”應(yīng)用,按提示做一系列設(shè)置即可。
本應(yīng)用自動連接服務(wù)器,并根據(jù)用戶選擇顯示班車圖標(biāo),圖標(biāo)上文字顯示班車車號信息。用戶根據(jù)自身需要設(shè)置自己的上車點,當(dāng)班車臨近上車點時(50 m),app發(fā)出手機震動,提醒用戶。
服務(wù)器購買阿里云服務(wù)器ECS,位于青島。服務(wù)器端安裝“班車GPS定位監(jiān)控服務(wù)端”服務(wù)程序,該服務(wù)程序用于接收GPS定位端發(fā)送的GPS信息,并將其發(fā)送給客戶端。
經(jīng)過實際測試,在班車接近上車點50 m時,客戶端手機會有震動提示,實現(xiàn)了比較高的查詢精確度。
[1]李雪英.住宅小區(qū)監(jiān)控系統(tǒng)的發(fā)展[J].科技創(chuàng)業(yè)家,2014(8):167.
[2]張聰,王輝,孫博月.監(jiān)控系統(tǒng)的設(shè)計原則與方案[J].中小企業(yè)管理與科技(上旬刊),2013(4):299.
[3]李存建.一種晝夜監(jiān)控系統(tǒng)的設(shè)計[J].中小企業(yè)科技.2007(1):52.
[4]文俊杰.構(gòu)建GPS監(jiān)控系統(tǒng)的技術(shù)分析[J].科技信息(學(xué)術(shù)研究).2007(23):197.