新聞中心

        EEPW首頁 > 汽車電子 > 市場分析 > 車聯網監控中心的研究與設計

        車聯網監控中心的研究與設計

        作者:吳斌 姜立標 姜思羽 時間:2014-04-24 來源:電子產品世界 收藏

                摘要:為了解決由汽車而引起的能源、環境和安全問題,進行了的PC機監控中心以及Android手機客戶端的研究與設計。完成了PC機的Socket通信、電子地圖的加載與糾偏、后臺數據庫的設計。同時也完成了在Android操作系統下Socket通信和地圖的加載與糾偏問題。與硬件平臺進行聯合測試,驗證了監控中心和手機客戶端設計的有效性,且具有良好的魯棒性。

          引言

        本文引用地址:http://www.104case.com/article/245925.htm

          隨著汽車行業的快速發展,全球能源問題、環境問題和安全問題日益嚴重,解決問題的方式之一是建立汽車移動物聯網通信平臺。汽車移動物聯網分為感知層、網絡層和應用層三層。由感知層獲取采集車輛內部和外部的各種信息。網絡層主要是GPRS/3G無線網絡,將感知層得到的信息通過GPRS/3G無線網絡發送到上位機,應用層主要是接收網絡層傳輸過來的數據并進行處理[1],圖1為三層架構圖。

          系統的應用層包括上位機監控中心和Android手機版本的客戶端,具備六大功能模塊:車輛基本信息、遠程監控、遠程控制、遠程故障診斷、尋車輔助、駕駛員疲勞狀態等。

          上位機監控中心作為Socket服務器,要求具備公網IP和端口,可以被外網訪問。車載終端模塊作為Socket客戶端,當Socket連接建立之后,由車載終端將車輛的信息通過GPRS無線網絡傳給PC機,同時上位機監控中心也可以主動下發一些指令,查詢車載終端的狀態,要求車載終端上傳相關信息。

          1 PC機監控中心設計

          1.1 Socket通信設計

          Socket分為服務器和客戶端兩部分,上位機作為服務器,使用VB中的Winsock控件,通過Socket實現與車載終端和手機客戶端的通信。

          服務器端Winsock在接收客戶端連接之后,會檢測Winsock1.State的值,如果Winsock1沒有關閉的話則會將Winsock1關閉。當服務器與客戶端連接成功之后,服務器便開始接收客戶端的數據并且進行處理,同時還可以向客戶端發送數據和命令。

          當打開了主窗體時,在Private Sub Form_Load()事件中自動加載Socket的監聽和連接,并且當點擊了各個功能模塊的按鈕時,上位機會通過Socket向車載終端下發查詢或者控制指令。

          在PC機上位機程序中,需要設計兩個Socket連接,一個是用來與車載終端建立連接,另外一個是用來與Android手機建立連接。上位機Winsock1收到車載終端發送的數據之后,會進行處理并且存入到后臺數據庫。Android手機通過Winsock2從上位機獲取數據。當多個車載終端同時連接監控中心時,可以采用動態加載和卸載Winsock的方式,同一個端口監聽不同的連接請求,根據客戶端的IP地址來區分車載終端,端口號相同但連接的Index不同。

          1.2 電子地圖的加載與糾偏

          為了能夠在電腦上直觀地看到車輛的位置,在上位機設計了一個地圖加載界面,通過GPRS傳送的經度和緯度信息,顯示出車輛的當前位置。由于傳統的地理信息系統(GIS)技術復雜,建設和維護的成本高,本次設計采用調用在線地圖API(應用程序接口)的方式來實現地圖的加載,這樣一方面省去了繁瑣的測繪和地圖編制工作,另一方面也保證了地圖更新的實時性,地圖提供商會定期更新地圖,提高定位的有效性和精度[2]。

          通過VB中的webbrowser控件,來加載一個后綴名為.htm的靜態網頁文件,可以實現電子地圖的加載。在靜態網頁中,編寫一個JavaScript函數,就可以在百度地圖上通過經度和緯度進行定位,并且可以實現電子地圖的放大、縮小和移動。

          由于GPS的坐標與百度地圖加載的坐標是不匹配的。國際上采用的是WGS-84標準的地心坐標,國內發行的地圖必須要使用國家測繪局規定的GCJ-02進行加密,而百度地圖在此基礎上還使用百度公司的BD-09進行二次加密,因此GPS采集的經緯度和百度地圖并不匹配,需要進行坐標接口轉換,百度地圖也提供了進行坐標轉換的API接口函數。

          在VB中利用webbrowser控件調用電子地圖并且實現坐標轉換的語句如下:

          WebBrowser1.Document.parentWindow.execScript "map.panTo(new BMap.Point( " & jingdu & "," & weidu & "))", "javascript"

          WebBrowser1.Document.parentWindow.execScript"map.addOverlay(new BMap.Marker(new BMap.Point( " & jingdu & "," & weidu & ")))", "javascript"

          WebBrowser1.Document.parentWindow.execScript "BMap.Convertor.translate(new BMap.Point( " & jingdu & "," & weidu & "),0,translateCallback)", "javascript"

          在上面的語句中,使用WebBrowser1.Navigate App.Path & "BaiduMap.htm"這個語句來加載已經編寫好的“BaiduMap.htm”地圖文件。調用坐標轉換函數時使用了new BMap.Point函數來新建坐標點,translateCallback為在靜態網頁文件中編寫的函數,該函數可以實現將指定點移到地圖中心、清除標注以及在指定坐標位置添加地標[3]。

          1.3 后臺數據庫的設計

          在VB中可以直接嵌入開發Access數據庫,通過“外接程序”中的“可視化數據管理器”可以直接創建Access數據庫,也可以加載或導入其他類型的數據庫。在VB中與數據庫的連接通常是使用ADO來實現的,在VB中操作后臺數據庫的步驟如下[4]:

          (1)創建或導入數據庫,與數據庫建立連接。

          (2)根據相應的命令讀取數據庫中的數據,并且在數據綁定控件中顯示。

          (3)對獲取的對象進行增刪改查操作,并且將更新后的數據重新存入數據庫。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 花莲县| 城口县| 华坪县| 武威市| 塘沽区| 淮阳县| 盘锦市| 武安市| 陈巴尔虎旗| 赤壁市| 亚东县| 靖边县| 栾城县| 磐石市| 湖州市| 吉林市| 杭锦后旗| 五河县| 个旧市| 深圳市| 竹溪县| 渑池县| 济南市| 页游| 玉树县| 勐海县| 朝阳市| 师宗县| 菏泽市| 富源县| 平泉县| 耒阳市| 灵川县| 碌曲县| 登封市| 潜江市| 新和县| 肃宁县| 米泉市| 米林县| 澄城县|