汽車平臺中的HTML5硬件通信
摘要: QNX CAR 2應(yīng)用平臺的總體架構(gòu)簡單且靈活。由于PPS消息傳遞模式采用松耦合架構(gòu),因此非常靈活。如果新增組件或設(shè)備,也只需要極少的工作,因?yàn)樾碌慕M件只需要發(fā)布數(shù)據(jù),并訂閱相關(guān)的PPS對象。即使修改HMI技術(shù),也不會(huì)給底層組件帶來較大的影響。所有這些需求都可為相關(guān)的API帶來改變。
本文引用地址:http://m.butianyuan.cn/article/135859.htm挑戰(zhàn)
利用HTML5開發(fā)的人機(jī)界面(HMI)位于軟件開發(fā)的上層環(huán)境中,但它們通常需要接入硬件。在汽車系統(tǒng)中,他們必須從CAN總線、GPIO引腳以及I2C和SPI器件等底層組件中取回信息。
試圖編寫讓HMI與底層服務(wù)通信的界面是比較昂貴的辦法。更好的方法是使用無關(guān)HMI的異步通信模式,比如永久性發(fā)布/訂閱(PPS)。
永久性發(fā)布/訂閱
QNX的PPS部署是在松耦合消息架構(gòu)中針對發(fā)布者和訂閱者提供的一種基于對象的服務(wù)。由于PPS利用標(biāo)準(zhǔn)的POSIX文件系統(tǒng)服務(wù),它可以使用任何編程語言或者應(yīng)用環(huán)境。
任何 PPS 服務(wù)客戶端都可以是一個(gè)獨(dú)立的發(fā)布者、訂閱者,也可以既是發(fā)布者又是訂閱者。發(fā)布以異步方式進(jìn)行。發(fā)布者可修改對象及其屬性并寫入文件系統(tǒng)中。當(dāng)任何發(fā)布者更改對象時(shí),PPS 服務(wù)都會(huì)通知訂閱該對象的所有客戶端。PPS 客戶端能訂閱多個(gè)對象,PPS對象能有多個(gè)發(fā)布者和多個(gè)訂閱者。因此,能訪問不同對象屬性應(yīng)用數(shù)據(jù)的發(fā)布者可使用相同對象與該對象的所有訂閱者交流信息。
永久性是由系統(tǒng)設(shè)計(jì)人員定義的特性,并為個(gè)體目標(biāo)屬性所設(shè)。當(dāng)PPS運(yùn)行時(shí),不但可以維護(hù)內(nèi)存中的對象,而且可以按需要或在關(guān)機(jī)時(shí)將對象保存到永久性存儲體中。
PPS還能簡化新組件的集成。由于發(fā)布者和訂閱者不必認(rèn)識對方,因此開發(fā)人員只需確定這些新組件的發(fā)布內(nèi)容,以及他們需要其他 PPS客戶端得到的數(shù)據(jù)內(nèi)容?! ?/p>
QNX CAR 2應(yīng)用平臺
QNX CAR 2應(yīng)用平臺為PPS提供了理想的實(shí)施環(huán)境。從用戶角度說,該平臺的關(guān)鍵功能包括如下。
● HMI:基于HTML5的HMI,支持簡易標(biāo)識、換膚和個(gè)性化。
● 信息和娛樂:多媒體(音頻和視頻);調(diào)幅、調(diào)頻和高清電臺;流網(wǎng)絡(luò)電臺;整合天氣預(yù)報(bào);基于電話或家庭的媒體支持蘋果和DLNA。
● 汽車界面:氣候控制和診斷程序可在低油位、剎車問題及其他情況下通知司機(jī)。
● 導(dǎo)航、免提電話、語音辨識和社交網(wǎng)絡(luò)。
QNX CAR 2平臺還支持將眾多應(yīng)用和廣泛的底層軟件組件直接連接至硬件。
QNX CAR 2平臺的HMI使用HTML5,并采用包括Sencha和jQuery JavaScript 庫的JavaScript架構(gòu)。該架構(gòu)也支持如Adobe AIR和Elektrobit GUIDE HMI等其它易于集成HMI的技術(shù)。HTML5和Cascading Style Sheets(CSS3)的使用可以實(shí)現(xiàn)應(yīng)用程序在車內(nèi)系統(tǒng)以及移動(dòng)智能手機(jī)以及平板電腦之間來回切換。
PPS處理眾多系統(tǒng)組件和HMI之間的通信。由于PPS無關(guān)技術(shù)和語言,因此僅需要極少數(shù)的API來為HMI和組件提供界面:
● 一個(gè)PPS API處理HMI和PPS服務(wù)客戶端之間的通信;
● 一個(gè)SQL API與本地媒體庫接口。
另一套被稱為UI內(nèi)核的API,處理HTML5層和用戶界面核心組件之間的通信,以及介于這個(gè)核心組件和其它HMI技術(shù)之間的通信。
HMI和硬件之間的通信由JavaScriptwrapper類和JNEXT處理。C/C++程序直接與車輛硬件接口,并對PPS對象進(jìn)行讀寫。要訪問為這些對象寫入的信息,HMI中的JavaScript會(huì)呼叫一個(gè)wrapper類來與JavaScript PPS類通信。對于其它呼叫者來說,wrapper類展現(xiàn)了自然的、基于類別的JavaScript API。
c++相關(guān)文章:c++教程
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評論