李培培;朱維傑 發表於 2020-04-06 18:18:00
提出了利用Google的Android作為車載虛擬儀表人機界面的軟體開發平臺。在Android系統框架上實現虛擬儀表的人機界面,闡述了如何對Android現有系統框架進行裁剪和調整,使系統更加符合車載虛擬儀表人機界面的要求,利用Android提供的組件設計虛擬儀表人機界面的各個功能邏輯模塊,使得模塊設計更加合理.模塊之間的耦合性更小。設計了基於REAL210車載儀表人機界面,結果表明,基於Android的虛擬儀表人機界面功能更加豐富、操作更加友好、易於升級和維護,能較好地滿足用戶的需求。
車載虛擬儀表人機界面,是駕駛員獲取汽車工況數據的主要界面,便於駕駛員實時全面地掌握汽車工作狀態,有效地與汽車進行人機互動,對保障汽車安全穩定的行駛有著重要意義,目前普遍使用的是Windows CE和Linux作業系統。Windows CE作業系統功能穩定,有完善的技術支持,但價格昂貴、原始碼封閉、網絡可利用資源較少;Linux作業系統的最大優勢在於免費和開源,是車載信息顯示系統的主流作業系統,但其並不是基於行動裝置開發的,不能完全滿足行動裝置的需求。
Android是Google開發的一款基於開源作業系統Linux的開放、開源移動平臺,對於目前主流的嵌入式平臺支持良好,Android系統的優越性能己在多款行動裝置上得到驗證。它包括作業系統用戶界面和應用程式而且不存在任何以往阻礙移動產業創新的專有權障礙。文中提出利用Android作為車載虛擬儀表軟體開發平臺,在Android提供的應用程式框架上來實現虛擬儀表的人機界面。
1 、系統硬體體系
雖然Android是作為一款手機軟體平臺進行開發的應用程式框架和應用程式但其本質是一個嵌入式軟體開發平臺。若將Android用於車載虛擬儀表系統的開發,需要對儀表系統應用的特點進行調整,系統採用的硬體平臺是REAL210,CPU處理速度600 MHz~1 GHz,基於Cortex—A8架構。系統中主要的硬體模塊有音頻模塊、CAN模塊、液晶顯示模塊、串口和乙太網通信模塊,如圖1所示。
2、 Android軟體系統的定製
由於Android最初是基於手機軟體開發平臺進行設計的,而且其中大部分模塊都是為手機通信所設計,為節約開發板資源,需要將Android系統中不必要的組件剪裁掉,保留必要的最小系統。因此必須對框架進行修改,將與電話、簡訊等相關的模塊移除。僅留下必需的Android的核心模塊,包括Package Manager、System Service、Input Service、Hardware SerVice和System Server等。通過修改System Server的加載過程可以去掉不需要的服務和模塊,另外還要實現底層硬體的驅動程序,重新交叉編譯Linux 2.6內核,並在驅動程序實現的基礎上封裝函數庫,以便Android的應用程式通過JNI的方式訪問底層驅動。經過定製和修改過的Android系統架構如圖2所示。
車載虛擬儀表人機界面的應用程式需要進行重新開發,主要是界面模塊、CAN模塊、數據訪問模塊和告警模塊。其中CAN模塊設計成Service的方式。數據訪問模塊設計為Content Provider。告警模塊採用的通知方式為Broadcast Receiver和Notifica。系統通電後,在Android的System Server中首先啟動CAN模塊,然後啟動主界面的程序。
3、 應用程式的設計與實現
應用程式的系統架構。通過PackageManager提供的各個APK的信息以菜單方式對各個功能模塊進行調用。
3.1 CAN模塊
CAN模塊用於數據的採集和處理,CAN模塊接到數據後,要對數據進行解析,判斷出接收到的數據類型。最終得到所需要的值。計算方法為根據參數所在數據域的字節位置提取其對應的原始數,再根據該參數對應的解析度和偏移量得到參數值,其參數值的計算方法為:參數值=參數原始數×解析度+偏移量。通過編程計算出數據代表的實際發動機狀態值,即可準確地在車輛實時功能模塊中顯示當前的車輛狀態。
3.2 數據訪問模塊
程序的數據訪問模塊,採用Android系統內置的SQLite資料庫,對一些重要車況信息自動記憶存儲,便於分析和維修,起到汽車「黑匣子」的作用。存儲的車況信息可以通過點擊回放按鈕直接在儀表界面上回放,真實再現汽車行進過程中的狀況。
首先調用.openOrCreateDatabase()創建vehicle_database.db資料庫,然後配置SQLite資料庫屬性通過。創建一個數據表分別定義:行駛日期、出廠信息、車速、轉速信號、啟動、停止時刻、行使裡程、報警信息等。將黑匣子接收到的數據對應數據表定義的格式通過.insert()向數據表中插入數據,通過.delete()指定日期來刪除過期的數據。顯示歷史數據需要先通過DatePicker獲取用戶輸入的年、月、日,並將具體日期數值提取出來,將條件放入SQL查詢語句.query()中來查詢,定義一個Cursor返回結果,然後創建一個數據適配器將Cursor的結果直接映射到ListView中的對應的TextView上。
3.3 功能模塊
功能模塊用於測控車輛的速度、發動機轉速、水溫和燃油、告警事件的顯示。系統設計的功能模塊界面顯示如圖3所示。
3.4 告警模塊
告警模塊本身是一個Broadcast Receiver,它負責接收其他模塊的告警事件,超速、油量、水溫、油壓等,並將這些信息寫入資料庫,同時調用告警顯示界面顯示對應的信息或以Notification的方式在狀態欄進行提示。在Android系統中,所有的應用程式之間都通過Binder進行通信,這種IPC機制是基於Linux底層驅動實現的,與傳統的進程間通信機制相比,它的執行具有更高的效率和更好的擴展性。
4 、結束語
利用Android作為人機界面所開發的框架通過對各個功能模塊的細化,可以使系統設計更合理,模塊結構更獨立,容易進行軟體維護和代碼二次開發,基於Android應用程式框架設計的各個模塊,可以進行自由修改和替換,提高了系統的可定製性,雖然Android是手機軟體開發平臺,但憑藉其優秀的系統架構設計和理念,會有越來越多的車載虛擬儀表採用Android作為開發平臺。
責任編輯:gt
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴