基于GPS和3G的智能公交終端設(shè)計(jì)
3.2 GPS解析程序
GPS接收機(jī)HOLUX的GR-87模塊輸出數(shù)據(jù)格式符合NMEA.183標(biāo)準(zhǔn)。NMEA.0183協(xié)議是由美國國家海洋電子協(xié)會制定的一種串行通信的數(shù)據(jù)協(xié)議,所有輸入輸出信息均為一行ASCII字符。它的一條消息稱為語句(Sentence),每條語句都以“$”開始,以回車換行符(CR>LF>)結(jié)束,中間是用逗號分隔的若干個(gè)域。
由于此GPS模塊設(shè)置信息掉電丟失,在每次系統(tǒng)啟動時(shí)均要對該GPS模塊進(jìn)行初始化。將模塊設(shè)置成每秒鐘輸出一次GPS信息。系統(tǒng)啟動后,模塊接收GPS信息,然后解析出GPS信息,根據(jù)解析出來的經(jīng)緯度信息與數(shù)據(jù)區(qū)中存儲的站點(diǎn)信息比較,計(jì)算出實(shí)際距離。如果距離到達(dá)閥值時(shí),啟動GPS報(bào)站中斷。該GPS模塊接收模塊遵循NMEA.0183協(xié)議,可以輸出多種格式的數(shù)據(jù)幀,均以“MYM”開頭。輸出數(shù)據(jù)采用的是ASCII碼字符,內(nèi)容包含了緯度、經(jīng)度、速度、日期、航向及衛(wèi)星狀況等信息。該系統(tǒng)所使用的僅限于$GPRMC定位數(shù)據(jù)幀格式。系統(tǒng)啟動后,通過串口對GPS模塊進(jìn)行設(shè)置,由于系統(tǒng)對實(shí)時(shí)性要求不高,將GPS設(shè)置為每秒鐘輸出一次RMC數(shù)據(jù)。提取GPRMC語句的思路是設(shè)置一個(gè)數(shù)據(jù)緩沖區(qū),把接收到的GPS數(shù)據(jù)都放入這個(gè)緩沖區(qū),當(dāng)緩沖區(qū)滿了的時(shí)侯就在緩沖區(qū)中查找是否接受到GPRMC定位語句,如果沒有接收到則重新接GPS數(shù)據(jù)。如果找到GPRMC定位語句則還要判斷該語句在緩沖區(qū)中的位置離緩沖區(qū)的最大字節(jié)數(shù)是否大于62個(gè)字節(jié)(因?yàn)楸境绦蛑行枰腉PRMC定位語句所包含的字節(jié)數(shù)為62),然后通過多程序提取相關(guān)經(jīng)緯度、時(shí)間和速度等信息并通過數(shù)據(jù)處理線程進(jìn)行相關(guān)處理。運(yùn)行過程如圖3所示。本文引用地址:http://www.ex-cimer.com/article/196792.htm
3.3 3G模塊解析程序
MC8630模塊驅(qū)動可以通過驅(qū)動源碼交叉編譯生成。MC8630模塊的加載和撥號連接的過MC8630模塊驅(qū)動可以通過驅(qū)動源碼交叉編譯生成。MC8630模塊的加載和撥號連接的過程如下:
1)在編譯前首先要確認(rèn)編譯驅(qū)動和編譯內(nèi)核的編譯環(huán)境相同,也就是需要相同版本號的交叉編譯工具(本系統(tǒng)Linux版本號為2.6);
2)修改驅(qū)動源碼Makefde文件,包括添加內(nèi)核源碼目錄和編譯工具;
3)Make編譯之后,生成ztemt.ko;
4)insmod ztemt.ko,生成4個(gè)設(shè)備節(jié)點(diǎn)/dev/ttyUSB0-ttyUSB3;
5)mknod/dev/ttyUSB0 c 188 0,創(chuàng)建設(shè)備節(jié)點(diǎn);
6)編寫Linux下?lián)芴柲_本、chat配置文件和賬號密碼配置文件;
7)添加內(nèi)核選項(xiàng),編譯支持PPP協(xié)議的內(nèi)核;
8)pppd call evdo撥號連接,ifconfig查詢網(wǎng)絡(luò)是否連接;
9)ppp-off中斷連接。
4 結(jié)束語
本系統(tǒng)設(shè)計(jì)的智能公交終端采用先進(jìn)的3G/GPS技術(shù),通過對公交車輛運(yùn)行時(shí)的信息的采集、傳輸和處理,實(shí)現(xiàn)了對公交運(yùn)營車輛的實(shí)時(shí)監(jiān)控和調(diào)度,迅速調(diào)整公交車輛的運(yùn)行狀況,提高車輛工作的效率,使公交資源實(shí)現(xiàn)最佳利用和分配,達(dá)到公交的智能化。
評論