<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 公交車載GPS智能報站系統(tǒng)設計

          公交車載GPS智能報站系統(tǒng)設計

          作者: 時間:2011-03-30 來源:網(wǎng)絡 收藏

            2. 2 模塊

            由于該 模塊設置信息掉電丟失, 在每次系統(tǒng)啟動時均要對該 模塊進行初始化。將模塊設置成每秒鐘輸出一次GPS 信息。

            系統(tǒng)啟動后, 模塊接收GPS 信息, 然后解析出GPS 信息, 根據(jù)解析出來的經(jīng)緯度信息與數(shù)據(jù)區(qū)中存儲的站點信息比較, 計算出實際距離。如果距離到達閥值時, 啟動GPS 報站中斷。

            該GPS 模塊接收模塊遵循NMEA. 0183 協(xié)議, 可以輸出多種格式的數(shù)據(jù)幀, 均以“MYM”開頭。輸出數(shù)據(jù)采用的是ASCII 碼字符, 內(nèi)容包含了緯度、經(jīng)度、速度、日期、航向及衛(wèi)星狀況等信息。幀格式達10 余種, 該系統(tǒng)所使用的僅限于$ GPRMC 定位數(shù)據(jù)幀格式。

            系統(tǒng)啟動后, 通過串口對GPS 模塊進行設置,由于系統(tǒng)對實時性要求不高, 將GPS 設置為每秒鐘輸出一次RMC 數(shù)據(jù)。提取GPRMC 語句的思路是設置一個數(shù)據(jù)緩沖區(qū), 把接收到的GPS 數(shù)據(jù)都放入這個緩沖區(qū), 當緩沖區(qū)滿了的時候就在緩沖區(qū)中查找是否接受到GPRMC 定位語句, 如果沒有接收到則重新接收GPS 數(shù)據(jù)。如果找到了GPRMC 定位語句則還要判斷該語句在緩沖區(qū)中的位置離緩沖區(qū)的最大字節(jié)數(shù)是否大于62個字節(jié)( 因為本程序中需要的GPRMC 定位語句所包含的字節(jié)數(shù)為62) , 然后通過多程序提取相關經(jīng)緯度、時間和速度等信息并通過數(shù)據(jù)處理線程進行相關處理。系統(tǒng)工作流程如圖3 所示。

          系統(tǒng)工作流程

          圖3 系統(tǒng)工作流程

            2. 3 GPRS 無線通訊模塊

            由于GSM 模塊內(nèi)嵌TCP/ IP 協(xié)議, 可以直接調(diào)用AT 命令與服務器通過TCP、UDP 通訊。無線通訊分為上行數(shù)據(jù)轉換模塊和通訊模塊2 個模塊。

            上行數(shù)據(jù)轉換模塊的主要功能是把接收到的GPS 數(shù)據(jù)或是相關的狀態(tài)信息轉換成約定好的數(shù)據(jù)格式以便同主信息中心的通訊。該模塊會判斷需要轉換的數(shù)據(jù)是GPS 數(shù)據(jù)信息還是相關狀態(tài)信息或是二者都有, 然后選擇相應的轉換程序。由上面的介紹可以知道接收到的GPS 數(shù)據(jù)都是順序存放在數(shù)據(jù)緩沖區(qū)當中的, 需要什么數(shù)據(jù)就到緩沖區(qū)中相應的位置提取就可以了。數(shù)據(jù)都是以字符形式存放的, 所以實際要用的時候必須先轉換成整形數(shù)據(jù)。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();