• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于HTML5+QNX的車載嵌入式應(yīng)用解決方案

      2014-07-03 03:33:14張旭楊斌
      關(guān)鍵詞:發(fā)布者實時性插件

      張旭,楊斌

      (西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都610031)

      引 言

      近些年來,嵌入式實時系統(tǒng)被廣泛地使用,同時微處理器和圖形顯示技術(shù)也快速發(fā)展,車載嵌入式應(yīng)用在滿足實時性要求的同時,還必須具有良好的人機(jī)交互界面。QNX作為一款嵌入式實時操作系統(tǒng),具有獨特的微內(nèi)核架構(gòu)及基于消息進(jìn)程間通信的方式,使其在實時性和可靠性上得到保證[1]。同時,QNX又支持 HTML5框架的應(yīng)用開發(fā),HTML5作為HTML最新的標(biāo)準(zhǔn),目前已經(jīng)在各種移動智能終端設(shè)備上得到廣泛的應(yīng)用,被多種瀏覽器的新版本所支持。其離線緩存特性為HTML5嵌入式應(yīng)用提供了基礎(chǔ),同時實現(xiàn)了音視頻自由嵌入,使多媒體形式變得更加靈活。通過地理定位,用戶能夠隨時隨地地分享位置信息,Canvas繪圖功能有效提高了嵌入式平臺的繪圖能力,豐富的交互方式使用戶體驗度得到極大地提升[2]。本文采用OMAP4430作為硬件平臺,以QNX實時系統(tǒng)為軟件平臺,使用最新的QNX SDP 6.6、QNX SDK for Apps and Media 1.0及HTML5 SDK開發(fā)環(huán)境進(jìn)行車載應(yīng)用的開發(fā)。

      1 相關(guān)技術(shù)簡介

      1.1 QNX操作系統(tǒng)

      QNX是一種采用微內(nèi)核結(jié)構(gòu)的嵌入式實時操作系統(tǒng),具有較高的實時性、可靠性及穩(wěn)定性,并且具有安全與穩(wěn)定雙重認(rèn)證。QNX的微內(nèi)核結(jié)構(gòu)有效地提高了系統(tǒng)的可靠性,系統(tǒng)只在內(nèi)核中實現(xiàn)定時器、調(diào)度、信號等基礎(chǔ)服務(wù),而文件系統(tǒng)、設(shè)備驅(qū)動、應(yīng)用程序、網(wǎng)絡(luò)協(xié)議棧等組件則在內(nèi)核外部的獨立空間運行,成為一個內(nèi)存受到保護(hù)的用戶空間進(jìn)程[3]。當(dāng)其中一項服務(wù)發(fā)生錯誤時,操作系統(tǒng)的運行及其他服務(wù)都不會中斷,而系統(tǒng)則會通過“軟件監(jiān)視器”對故障進(jìn)行監(jiān)測查找,并動態(tài)重啟故障服務(wù),無需重啟整個系統(tǒng)或干擾其他用戶。QNX還是一個符合POSIX標(biāo)準(zhǔn)、多用戶、多任務(wù)、分布式嵌入的操作系統(tǒng),提供了基于優(yōu)先級搶占、用戶可控制的調(diào)度方式,在實時性上具有上下文切換、中斷延時短、自身開銷小的特點,具有較高的實時性。QNX微內(nèi)核架構(gòu)如圖1所示。

      1.2 永久性發(fā)布/訂閱

      圖1 QNX微內(nèi)核構(gòu)架

      永 久 性 發(fā) 布/訂 閱 (Persistent Publish/Subscribe,PPS)消息傳遞模型是在松耦合消息架構(gòu)中,一種針對發(fā)布者和訂閱者提供的基于對象的服務(wù),根據(jù)不同的服務(wù)要求,任何的PPS服務(wù)端可以是獨立的訂閱者或者發(fā)布者,也可以既是訂閱者、又是發(fā)布者。發(fā)布通過異步的方式進(jìn)行,PPS對象集中在PPS文件系統(tǒng)路徑各空間中,發(fā)布者可以修改對象及其屬性。當(dāng)發(fā)布者修改對象時,PPS服務(wù)器會向訂閱此對象的所有客戶端發(fā)出通知。每個PPS客戶端可以同時訂閱多個對象,而每個對象也可以同時具有多個發(fā)布者和訂閱者。因此,發(fā)布者可以通過相同的對象與此對象所有的訂閱者進(jìn)行信息交流,從而實現(xiàn)對不同對象屬性的應(yīng)用數(shù)據(jù)訪問。

      PPS的POSIX文件訪問API主要有open()、read()、write()、select()等。PPS服務(wù)在默認(rèn)情況下是作為推送式發(fā)布系統(tǒng)運行的,即發(fā)布者推送數(shù)據(jù)到對象中,而訂閱者則根據(jù)通知讀取數(shù)據(jù),但此種方式無法完成一些變化較快的數(shù)據(jù)發(fā)布,為此QNX PPS提供了另外一種選項,訂閱者可以將PPS變成請求式的發(fā)布系統(tǒng)[4]。通過這種機(jī)制,訂閱者可以根據(jù)所需速度向發(fā)布者檢索數(shù)據(jù),實現(xiàn)按需發(fā)布。PPS消息傳遞模型如圖2所示。

      圖2 PPS消息傳遞模型

      1.3 HTML5

      HTML5從廣義的角度上來看,實際上指的就是用于網(wǎng)絡(luò)應(yīng)用開發(fā)的一系列最新技術(shù)的集合,包括了HTML、CSS3、JaveSeript等一系列的技術(shù)組合。HTML5希望能夠盡量減少瀏覽器對Microsoft Silverlight、Oracle JavaFX與Adobe Flash等插件的需求,同時提供了更多標(biāo)準(zhǔn)集來有效增強(qiáng)網(wǎng)絡(luò)應(yīng)用[5]。

      2 HTML5車載應(yīng)用解決方案

      目前,在嵌入式設(shè)備上的應(yīng)用主要分為3種:原生應(yīng)用、Web應(yīng)用和移動Web應(yīng)用。本文將對這3種方式進(jìn)行對比分析。

      原生應(yīng)用指的是使用特定的移動平臺開發(fā)語言進(jìn)行應(yīng)用開發(fā),如iPhone平臺使用Object-C,Android平臺使用Java,這樣做能夠充分利用平臺特性并直接調(diào)用系統(tǒng)的API,使性能和效率得到最優(yōu)化,但其缺點是針對不同操作系統(tǒng)的設(shè)備,要分別進(jìn)行開發(fā)、測試與優(yōu)化。

      Web應(yīng)用通過標(biāo)準(zhǔn)的HTML5、JaveScript和CSS進(jìn)行應(yīng)用開發(fā)。不同的系統(tǒng)可以通過瀏覽器實現(xiàn)跨平臺訪問。目前,大部分的瀏覽器都能夠很好地支持HTML5。其缺點就是此類基于瀏覽器的應(yīng)用無法通過調(diào)用系統(tǒng)API來完成一些高級功能,不適合在高性能、高效率的場合使用。

      移動Web應(yīng)用是使用原生方式和HTML5相結(jié)合的方式來達(dá)到最優(yōu)的效果[6]。此種方式先使用HTML5技術(shù)在開發(fā)框架上進(jìn)行代碼編寫,然后通過開發(fā)框架的封裝器將代碼打包成適合所有平臺的原生應(yīng)用。這種方式具有開發(fā)成本低、跨平臺的特點,更接近用戶的使用習(xí)慣,更容易被用戶所接受。

      3種解決方案的執(zhí)行方式如圖3所示。

      圖3 3種方案執(zhí)行方式

      通過對以上3種方法的對比分析,結(jié)合實際的開發(fā)需要,本文將使用Apache Cordova框架及PPS消息模型實現(xiàn)QNX下車載移動Web應(yīng)用的開發(fā)。系統(tǒng)總體框架如圖4所示。

      圖4 系統(tǒng)總體架構(gòu)

      3 方案實現(xiàn)

      QNX HTML5 SDK提供了Apacheco Cordova應(yīng)用程序框架來進(jìn)行移動Web應(yīng)用的開發(fā)與執(zhí)行,使用HT-ML5、JaveScript和CSS在PC機(jī)上進(jìn)行HTML5應(yīng)用程序的開發(fā),以及創(chuàng)建用來訪問目標(biāo)硬件API的JaveScript Plugins,此Plugins將通過QNX下PPS消息傳遞模型實現(xiàn)應(yīng)用目標(biāo)平臺的互動。最后,通過Apacheco Cordova打包成QNX下的原生應(yīng)用。本文將通過一個簡單車載儀表盤的實現(xiàn),來說明使用HTML5進(jìn)行車載應(yīng)用開發(fā)的過程。

      3.1 創(chuàng)建汽車儀表盤的HMI

      在HTML5標(biāo)準(zhǔn)中,新增加了Canvas元素,使用此元素能夠在頁面中對各種復(fù)雜圖形直接進(jìn)行制作。同時,圖形的繪制可以直接在客戶端進(jìn)行,不需要再占用服務(wù)器的資源,便能完成離線應(yīng)用的開發(fā)。通過Canvas元素繪制一個儀表盤,實現(xiàn)對儀表盤各種屬性的設(shè)置:

      同時,車輛在行駛過程中,轉(zhuǎn)速和車速是實時變化的,如果儀表指針跟隨數(shù)據(jù)頻繁跳變,很容易引起駕駛員視覺疲勞,因此,在傳統(tǒng)的機(jī)械儀表中,指針轉(zhuǎn)動的角度是逐漸改變的,這樣更加符合駕駛員的習(xí)慣。數(shù)字虛擬指針也應(yīng)該遵循這一運動規(guī)律,當(dāng)?shù)玫睫D(zhuǎn)速和車速的數(shù)據(jù)后,指針要逐漸轉(zhuǎn)動到期望位置,實現(xiàn)緩動。緩動通過一個冪函數(shù)實現(xiàn):

      3.2 創(chuàng)建訪問PPS API的Plugins

      盡管HTML5提供了豐富的功能,但是其應(yīng)用無法直接訪問本地硬件設(shè)備。要在移動Web應(yīng)用框架下實現(xiàn)Web應(yīng)用與各種本地設(shè)備之間的交互,必須引用一個cordova.js文件,此文件提供API綁定。因此,必須創(chuàng)建一個用來訪問本地設(shè)備的插件,它是Web應(yīng)用與平臺原生層之間的橋梁,提供對本地API的調(diào)度機(jī)制。在QNX Neutrino系統(tǒng)下,所有服務(wù)都可以通過PPS消息模型對接口進(jìn)行訪問。下面將創(chuàng)建一個插件來實現(xiàn)PPS對象的創(chuàng)建、更新和讀取等功能。此插件必須包括如下幾個重要文件 :plugin.xml、plugin_name.js、index.js、client.js。

      plugin.xml文件用來聲明插件的命名空間及定義插件的文件結(jié)構(gòu)。

      plugin_name.js文件提供插件的核心功能,初始化定義函數(shù),創(chuàng)建PPS對象,事件處理函數(shù)和PPS返回數(shù)據(jù)。通過用于閱讀的(_readerPPS)句柄和用于寫入的(_writerPPS)句柄對PPS對象的數(shù)據(jù)進(jìn)行操作。_trigger Update用來處理事件,當(dāng)我們定義了新的數(shù)據(jù)時,對PPS對象進(jìn)行更新。

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

      3.3 打包并運行測試

      通過Apacheco Cordova開發(fā)框架將應(yīng)用打包成qnxcar.bar文件,在目標(biāo)平臺上安裝并啟動應(yīng)用。通過對目標(biāo)系統(tǒng)下PPS文件的數(shù)據(jù)進(jìn)行修改,可以順利實現(xiàn)應(yīng)用中汽車車速、轉(zhuǎn)速及油量儀表指針的動態(tài)變化。實現(xiàn)效果如圖5所示。

      圖5 汽車儀表盤界面

      結(jié) 語

      對于車載應(yīng)用來說,需要具備較高實時性和可靠性,本文采用QNX操作系統(tǒng)完全符合這一要求;同時使用HTML5進(jìn)行嵌入式圖形界面的開發(fā),很好地解決了傳統(tǒng)嵌入式圖形界面開發(fā)中存在的問題,在正常完成車載應(yīng)用所需顯示任務(wù)的同時,還具備更佳的界面顯示效果;并且能夠有效地縮短開發(fā)周期,具有較強(qiáng)的可移植性。

      [1]李英.基于QNX硬加速的軟控車載全虛擬儀表平臺[J].計算機(jī)技術(shù)與應(yīng)用,2012,38(10):129-132.

      [2]黃永慧,陳程凱.HTML5在移動應(yīng)用開發(fā)上的應(yīng)用前景[J].計算機(jī)技術(shù)與發(fā)展,2013,7(23):207-210.

      [3]石峰,胡大斌,胡錦輝.基于QNX實時操作系統(tǒng)的圖形控制界面設(shè)計[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客戶端技術(shù)研究[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.

      猜你喜歡
      發(fā)布者實時性插件
      基于規(guī)則實時性的端云動態(tài)分配方法研究
      自編插件完善App Inventor與樂高機(jī)器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      基于NDN的高效發(fā)布/訂閱系統(tǒng)設(shè)計與實現(xiàn)
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
      航空電子AFDX與AVB傳輸實時性抗干擾對比
      廣告發(fā)布者的著作權(quán)審查義務(wù)問題研究
      加權(quán)映射匹配方法的站內(nèi)搜索引擎設(shè)計
      MapWindowGIS插件機(jī)制及應(yīng)用
      基于Revit MEP的插件制作探討
      一種車載Profibus總線系統(tǒng)的實時性分析
      孟州市| 彝良县| 永清县| 东丰县| 新巴尔虎右旗| 韶关市| 晋江市| 石柱| 甘谷县| 肇源县| 太谷县| 德清县| 灵石县| 彭山县| 龙游县| 清涧县| 中方县| 湖北省| 宜良县| 靖边县| 德兴市| 上高县| 汶上县| 麻城市| 视频| 平山县| 称多县| 全椒县| 历史| 庆城县| 淮阳县| 高邮市| 田东县| 安泽县| 濮阳县| 平度市| 陕西省| 永顺县| 宝清县| 广州市| 菏泽市|