張旭,楊斌
(西南交通大學 信息科學與技術學院,成都610031)
近些年來,嵌入式實時系統被廣泛地使用,同時微處理器和圖形顯示技術也快速發展,車載嵌入式應用在滿足實時性要求的同時,還必須具有良好的人機交互界面。QNX作為一款嵌入式實時操作系統,具有獨特的微內核架構及基于消息進程間通信的方式,使其在實時性和可靠性上得到保證[1]。同時,QNX又支持 HTML5框架的應用開發,HTML5作為HTML最新的標準,目前已經在各種移動智能終端設備上得到廣泛的應用,被多種瀏覽器的新版本所支持。其離線緩存特性為HTML5嵌入式應用提供了基礎,同時實現了音視頻自由嵌入,使多媒體形式變得更加靈活。通過地理定位,用戶能夠隨時隨地地分享位置信息,Canvas繪圖功能有效提高了嵌入式平臺的繪圖能力,豐富的交互方式使用戶體驗度得到極大地提升[2]。本文采用OMAP4430作為硬件平臺,以QNX實時系統為軟件平臺,使用最新的QNX SDP 6.6、QNX SDK for Apps and Media 1.0及HTML5 SDK開發環境進行車載應用的開發。
QNX是一種采用微內核結構的嵌入式實時操作系統,具有較高的實時性、可靠性及穩定性,并且具有安全與穩定雙重認證。QNX的微內核結構有效地提高了系統的可靠性,系統只在內核中實現定時器、調度、信號等基礎服務,而文件系統、設備驅動、應用程序、網絡協議棧等組件則在內核外部的獨立空間運行,成為一個內存受到保護的用戶空間進程[3]。當其中一項服務發生錯誤時,操作系統的運行及其他服務都不會中斷,而系統則會通過“軟件監視器”對故障進行監測查找,并動態重啟故障服務,無需重啟整個系統或干擾其他用戶。QNX還是一個符合POSIX標準、多用戶、多任務、分布式嵌入的操作系統,提供了基于優先級搶占、用戶可控制的調度方式,在實時性上具有上下文切換、中斷延時短、自身開銷小的特點,具有較高的實時性。QNX微內核架構如圖1所示。

圖1 QNX微內核構架
永 久 性 發 布/訂 閱 (Persistent Publish/Subscribe,PPS)消息傳遞模型是在松耦合消息架構中,一種針對發布者和訂閱者提供的基于對象的服務,根據不同的服務要求,任何的PPS服務端可以是獨立的訂閱者或者發布者,也可以既是訂閱者、又是發布者。發布通過異步的方式進行,PPS對象集中在PPS文件系統路徑各空間中,發布者可以修改對象及其屬性。當發布者修改對象時,PPS服務器會向訂閱此對象的所有客戶端發出通知。每個PPS客戶端可以同時訂閱多個對象,而每個對象也可以同時具有多個發布者和訂閱者。因此,發布者可以通過相同的對象與此對象所有的訂閱者進行信息交流,從而實現對不同對象屬性的應用數據訪問。
PPS的POSIX文件訪問API主要有open()、read()、write()、select()等。PPS服務在默認情況下是作為推送式發布系統運行的,即發布者推送數據到對象中,而訂閱者則根據通知讀取數據,但此種方式無法完成一些變化較快的數據發布,為此QNX PPS提供了另外一種選項,訂閱者可以將PPS變成請求式的發布系統[4]。通過這種機制,訂閱者可以根據所需速度向發布者檢索數據,實現按需發布。PPS消息傳遞模型如圖2所示。

圖2 PPS消息傳遞模型
HTML5從廣義的角度上來看,實際上指的就是用于網絡應用開發的一系列最新技術的集合,包括了HTML、CSS3、JaveSeript等一系列的技術組合。HTML5希望能夠盡量減少瀏覽器對Microsoft Silverlight、Oracle JavaFX與Adobe Flash等插件的需求,同時提供了更多標準集來有效增強網絡應用[5]。
目前,在嵌入式設備上的應用主要分為3種:原生應用、Web應用和移動Web應用。本文將對這3種方式進行對比分析。
原生應用指的是使用特定的移動平臺開發語言進行應用開發,如iPhone平臺使用Object-C,Android平臺使用Java,這樣做能夠充分利用平臺特性并直接調用系統的API,使性能和效率得到最優化,但其缺點是針對不同操作系統的設備,要分別進行開發、測試與優化。
Web應用通過標準的HTML5、JaveScript和CSS進行應用開發。不同的系統可以通過瀏覽器實現跨平臺訪問。目前,大部分的瀏覽器都能夠很好地支持HTML5。其缺點就是此類基于瀏覽器的應用無法通過調用系統API來完成一些高級功能,不適合在高性能、高效率的場合使用。
移動Web應用是使用原生方式和HTML5相結合的方式來達到最優的效果[6]。此種方式先使用HTML5技術在開發框架上進行代碼編寫,然后通過開發框架的封裝器將代碼打包成適合所有平臺的原生應用。這種方式具有開發成本低、跨平臺的特點,更接近用戶的使用習慣,更容易被用戶所接受。
3種解決方案的執行方式如圖3所示。

圖3 3種方案執行方式
通過對以上3種方法的對比分析,結合實際的開發需要,本文將使用Apache Cordova框架及PPS消息模型實現QNX下車載移動Web應用的開發。系統總體框架如圖4所示。

圖4 系統總體架構
QNX HTML5 SDK提供了Apacheco Cordova應用程序框架來進行移動Web應用的開發與執行,使用HT-ML5、JaveScript和CSS在PC機上進行HTML5應用程序的開發,以及創建用來訪問目標硬件API的JaveScript Plugins,此Plugins將通過QNX下PPS消息傳遞模型實現應用目標平臺的互動。最后,通過Apacheco Cordova打包成QNX下的原生應用。本文將通過一個簡單車載儀表盤的實現,來說明使用HTML5進行車載應用開發的過程。
在HTML5標準中,新增加了Canvas元素,使用此元素能夠在頁面中對各種復雜圖形直接進行制作。同時,圖形的繪制可以直接在客戶端進行,不需要再占用服務器的資源,便能完成離線應用的開發。通過Canvas元素繪制一個儀表盤,實現對儀表盤各種屬性的設置:

同時,車輛在行駛過程中,轉速和車速是實時變化的,如果儀表指針跟隨數據頻繁跳變,很容易引起駕駛員視覺疲勞,因此,在傳統的機械儀表中,指針轉動的角度是逐漸改變的,這樣更加符合駕駛員的習慣。數字虛擬指針也應該遵循這一運動規律,當得到轉速和車速的數據后,指針要逐漸轉動到期望位置,實現緩動。緩動通過一個冪函數實現:

盡管HTML5提供了豐富的功能,但是其應用無法直接訪問本地硬件設備。要在移動Web應用框架下實現Web應用與各種本地設備之間的交互,必須引用一個cordova.js文件,此文件提供API綁定。因此,必須創建一個用來訪問本地設備的插件,它是Web應用與平臺原生層之間的橋梁,提供對本地API的調度機制。在QNX Neutrino系統下,所有服務都可以通過PPS消息模型對接口進行訪問。下面將創建一個插件來實現PPS對象的創建、更新和讀取等功能。此插件必須包括如下幾個重要文件 :plugin.xml、plugin_name.js、index.js、client.js。
plugin.xml文件用來聲明插件的命名空間及定義插件的文件結構。
plugin_name.js文件提供插件的核心功能,初始化定義函數,創建PPS對象,事件處理函數和PPS返回數據。通過用于閱讀的(_readerPPS)句柄和用于寫入的(_writerPPS)句柄對PPS對象的數據進行操作。_trigger Update用來處理事件,當我們定義了新的數據時,對PPS對象進行更新。

index.js文件用來定義觸發事件,并通過client.js文件傳遞給客戶端。client.js對外開放,通過cordova.exec()函數與index.js文件橋接,客戶端調用client.js的API,通過回調函數連接到觸發事件。下面為定義公共接口函數的部分代碼:

通過Apacheco Cordova開發框架將應用打包成qnxcar.bar文件,在目標平臺上安裝并啟動應用。通過對目標系統下PPS文件的數據進行修改,可以順利實現應用中汽車車速、轉速及油量儀表指針的動態變化。實現效果如圖5所示。

圖5 汽車儀表盤界面
對于車載應用來說,需要具備較高實時性和可靠性,本文采用QNX操作系統完全符合這一要求;同時使用HTML5進行嵌入式圖形界面的開發,很好地解決了傳統嵌入式圖形界面開發中存在的問題,在正常完成車載應用所需顯示任務的同時,還具備更佳的界面顯示效果;并且能夠有效地縮短開發周期,具有較強的可移植性。
[1]李英.基于QNX硬加速的軟控車載全虛擬儀表平臺[J].計算機技術與應用,2012,38(10):129-132.
[2]黃永慧,陳程凱.HTML5在移動應用開發上的應用前景[J].計算機技術與發展,2013,7(23):207-210.
[3]石峰,胡大斌,胡錦輝.基于QNX實時操作系統的圖形控制界面設計[J].軟件天地,2009(18):8-10.
[4]QNX Persistent Publish/Subscribe Developer’s Guide[EB/OL].[2014-03].http://www.qnx.com.
[5]吳磊,張福慶.基于HTML canvas的WebGIS客戶端技術研究[J].地理信息世界,2009(3):78-82.
[6]Zibula Alexander,Majehrzak Tirn A.Cross-platforrn development using HTML5,jQury rnobile,And PhoneGap:Realizing a srnart rne-ter applieation[C]//8th Intemational Confereneeon Web Inforrnation Systerns and Teehnologies.Porto.Portugal:Springer Verlag,2013:16-33.