現在,車輛的控製向高精度、高安全性發展,汽車行業正走向智能化、網絡化。在此過程中,汽車網絡起著重要的作用,CAN總線和LIN總線就是重要的汽車網絡總線。
但是,在汽車逐漸發展成為一個信息終端時,卻存在著網絡體係結構滯後的情況,在互聯網絡普遍采用B/S(瀏覽器/服務器模式)三層網絡結構的同時,車載網絡還處在簡單的C/S(客戶端/服務器模式)兩層網絡結構的階段,針對汽車網絡標準不統一、接口混亂、管理困難、網絡體係滯後的狀況,可以引入當前互聯網絡中廣泛使用的標記語言(ML Markup language)和B/S網絡結構,標記語言是一種跨平台的信息交換方式,在汽車網絡中采用標記語言,可以解決不同智能節點之間標準不統一,接口不同和跨層信息交換的問題,B/S網絡結構可以很好地解決網絡結點信息處理能力不足的狀況,把大部分的信息處理通過網絡提交到處理能力強大的主設備,甚至通過互聯網絡連接到大型主機,從而設備僅僅需要通過瀏覽器軟件解析主機處理的結果。
但是目前使用標記語言和B/S網絡結構最大的問題是缺乏針對車載網絡的嵌入式瀏覽器係統。通用的嵌入式瀏覽器使用HTML語言作為信息的載體,而HTML語言存在著內容和顯示信息不分、描述結構數據能力差等缺點。此外,通用的嵌入式瀏覽器對實時數據的處理和顯示的能力不足等,也是需要解決的問題。因此,設計一款麵向多層汽車局域網絡,針對車載網絡信息處理需要,使用可擴展標記語言(XML)為信息載體,可以同時顯示汽車內部實時信息和互聯網絡信息的專用嵌入式瀏覽器,具有非常重要的意義。
嵌入式瀏覽器總體設計
根據汽車網絡自身的特點、車載網絡瀏覽器的特殊要求,以及模塊內高內聚和模塊間低耦合的要求,將車載網絡瀏覽器的設計和實現劃分5個模塊,分別為擴展標記語言模塊、網絡接入和信息緩存模塊、標記語音解析模塊、布局模塊、用戶界麵模塊。
擴展標記語言模塊主要根據車載網絡的特點,在保持與HTML語言兼容性的同時,使用XML技術對HTML語言進行擴展,定義一種基於車載網絡的標記語言EXML,擴展標記語言模塊以模塊的方式定義,網絡接口與緩衝模塊主要用於同時連接汽車局域網絡和互聯網絡,以獲取汽車實時信息和廣泛的互聯網信息,文檔解析模塊是在基於車載網絡的嵌入式瀏覽器中使用的標記語言,有兩種,分別為HTML和EXML,其中包括HTML語言的基本標簽,因此,在語言解析模塊中使用同一個解析器,對兩種標記語言進行解析,並將解析的結果存在內存中,文檔布局模塊主要用於確定每個頁麵元素的大小,頁麵元素分為文本、圖像和圖形兩類,其中圖像和圖像的大小可以直接獲取,文本的大小則受標簽和屬性的影響,用戶界麵顯示模塊的作用是顯示用戶界麵,其中包括:工作區、標題欄、標簽欄、實時標簽顯示區等,他們之間的管理如圖1所示。
基於車載網絡的嵌入式瀏覽器的模塊設計
網絡接口設計
網絡結構模塊分為兩部分,即互聯網絡接口與實時網絡接口。
互聯網絡接口主要負責互聯網絡接入功能。首先是通過網絡協議建立到服務器的連接,然後向服務器發送請求,服務器確認請求,並負責把瀏覽器請求的文件通過網絡協議傳送給瀏覽器,具體的過程如圖2所示。
車載局域網絡接口主要實現瀏覽器對汽車實時信息的獲取,瀏覽器和汽車網絡節點通信的方式有兩種:應答式通信和被動式通信。
在應答式通信過程中,車載網絡嵌入式瀏覽器節點發送獲取某項參數的請求,網絡節點根據請求以EXML消息的形式發送實時信息,瀏覽器收到信息後通過解析模塊解析,更新數據並刷新顯示。
在被動方式下,網絡節點按一定的時間周期發送包含實時信息的EXML消息,瀏覽器偵聽網絡節點發送來得信息,一旦有新消息傳來,瀏覽器就通知解析模塊更新數據,並刷新顯示。EXML消息的格式如下:
<msg><信息類別>參數值</信息類別><msg>
解析模塊的設計
文檔解析模塊是整個係統的基礎模塊,在基於車載網絡的嵌入式瀏覽器中,我們根據車載網絡的應用實踐將HTML語言進行擴展,形成了EXML語言。EXML語言是XML語言在車載網絡係統中的一個應用,所以對EXML語言的解析可以使用標準的XML語言解析技術,XML的解析方式又有兩種:基於事件驅動的解析方式(SAX方式)和基於樹的解析方式(DOM方式)。SAX技術在響應事件的同時對標記文本進行處理,並不保存中間數據結構,DOM解析方式采用的是基於樹木的解析方式,並數使用XML Schema驗證,這種方式在解析完XML文檔後生成一個文檔樹,應用程序可以遍曆、搜索、編輯該文檔樹。
在實際的車載網絡中,嵌入式瀏覽器不僅僅需要對靜態的超文本信息進行瀏覽,還需要把下層節點發來的數據進行實時處理、顯示和保存。這就需要在內存中保存一個完整的解析數據結構,以方便數據的實時更新和顯示,因此使用DOM解析技術更加符號車載網絡的應用要求。
在文檔解析中,遵循先外後內、標簽後屬性、先到先解析的順序。首先處理處於嵌套外層的標簽,然後處理標簽的屬性;對於同一層次的標簽,先解析前麵的。通過一個標簽堆棧來獲得嵌套信息,對標簽的父標簽指針賦值,具體的解析算法如圖3所示。
布局模塊的設計
HTML語音在對標記的定義中包括兩類信息:數據信息和顯示信息,而在XML語音定義的標記語言文檔是對信息的結構化表示,並不包括顯示信息。在處理對XML語言的顯示中,可以使用CSS(cascading style sheets)樣式單添加額外的顯示信息,或者通過xCBL將XML文檔轉換成HTML格式的文件,然後再交付給瀏覽器,由瀏覽器顯示轉換的結果。
EXML語言也不包括顯示信息,不能決定頁麵元素的顯示位置,通過CSS和XML定義顯示的方式會造成瀏覽器的高資源占用。因此,在嵌入式瀏覽器中采用主題文件定義每個頁麵元素的顯示位置。
頁麵元素的布局分為動態布局和靜態布局兩種,因為HTML標記包含顯示數據,在解析HTML兼容標記時采用動態布局算法,通過標記的屬性和標記本身來決定布局,在對其他標簽布局時,根據顯示分辨率和使用習慣對元素的布局進行定義並存儲在主題文件中,瀏覽器在處理這些標簽的布局時,首先讀取主題文件獲得布局信息,然後根據標簽內容進行布局。
文檔布局模塊負責將經過解析器處理的標記語言文檔中元素在瀏覽器工作區中合適的位置顯示,頁麵的布局分為以下3個步驟:
1)獲取頁麵元素,頁麵元素以EXML文檔中標記的形式存儲,瀏覽器解析模塊通過對標記語言的解析,將標記中所包含的模塊化信息存儲在標簽數據結構中,布局模塊首先順次讀取標簽信息。
2)調用標簽的布局函數,布局模塊通過綁定布局函數實現對布局函數的調用,綁定元素的布局函數是通過查找布局函數列表來實現的,布局函數列表是一張存儲標簽名字和對應標簽布局函數地址的二維表,布局模塊調用布局函數,將元素根據布局算法布局到虛擬的顯示數據結構中。如果標簽的名字不在標簽布局函數列表中,說明標簽屬於擴展標記,將通過擴展標記函數顯示。
3)通過顯示窗口完成以布局標記的顯示,由於嵌入式應用中顯示屏的分辨率限製,有時候不能一次顯示所有的元素,布局模塊會根據顯示屏分辨率和頁麵的大小決定顯示元素的數量。
交互界麵的設計
交互界麵也即瀏覽器界麵模塊,主要負責瀏覽器的主框架顯示,提供標簽瀏覽、主題顯示,以及處理與用戶的交互。
針對不同的硬件平台甚至相同硬件平台不同尺寸的液晶屏,交互界麵也要發生改變。可移植性和可配置性也是嵌入式瀏覽器所必需的。
為了適應不同的硬件環境特別是不同分辨率的屏幕,基於車載網絡的嵌入式瀏覽器設計過程中使用多主題,以實現可移植和可配置。主題方法是指使用配置文件對可視化係統中實現用戶交互界麵進行圖形效果配置的一種方式,基於車載網絡的嵌入式瀏覽器的主題是對可配置主題方法的擴展,利用主題文件不僅僅可以配置界麵的顏色樣式、顯示模式,還可以根據不同屏幕的分辨率,方便地調整界麵元素的大小和布局。
考慮到係統的可移植性、可配置性和係統的時間空間性能,基於車載網絡的嵌入式瀏覽器的圖形係統采用microwindows嵌入式圖形係統,這是一個開放源碼嵌入式GUI軟件,目的是把現代圖形視窗環境引入到小型設備平台上。
雙層消息機製的設計
由於車載網絡的複雜性,瀏覽器所要處理得信息不僅僅來源於互聯網絡,還可以來自底層網絡通過網關傳來的實時信息,來自互聯網的信息往往是靜態的,根據用戶的要求進行更新,而來自底層網絡的實時消息是動態的,對實時性要求很高,使用單層的消息循環機製會造成實時消息不能及時顯示,或者交互消息占用大量的係統資源,因此,在瀏覽器中采用雙層消息機製。
在雙層消息機製是通過消息分組來實現的。首先把消息分為實時消息和交互消息兩組,實時消息表示消息需要實時處理,交互消息表示非實時的交互消息。其中,實時消息按照不同的優先級排列成為一組,係統自動處理優先級較高的消息,延遲優先級較低的消息,交互消息組的消息不分優先級,係統在某一時刻首先檢查實時優先級組消息結構數組是否有被占用的消息,如果有選擇最高優先級消息進行響應,響應完畢清除實時消息占用標誌。如果為空則轉入交互消息循環,具體消息循環算法示意性代碼如下所示: Msgloop()
{
While(1){
If(msg_select_hmsg()==-1)//沒有實時消息到來
{
GrselectNextMSG(); //獲取交互消息隊列中的下個消息
Switch() //根據交互消息類型訓練消息處理函數
……,}
Else
{
*(Rtmsg_msgarr[msg_select_hmsg()].func)();//現在最高優先級實時消息進行響應。
}
}
雙層消息循環結構的實質是將交互消息組作為優先級最低的消息來處理。邏輯結構和具體消息響應如圖4所示。
嵌入式瀏覽器在不同嵌入式硬件平台上的應用
象其他可移植軟件一樣,嵌入式瀏覽器的開發采用分層結構,根據不同的網絡環境預留了標準接口,並使用標準C語言編寫,因此,瀏覽器就可以很好地適應日益複雜的車載網絡環境。
隻要提供對應操作係統的硬件驅動,就可以在不同的硬件平台上使用。
表1是通過測試的嵌入式瀏覽器所支持的操作係統和編譯器列表。
結語
基於車載網絡的嵌入式瀏覽器研發主要成果是設計和實現了一款麵向多層汽車區域網絡,針對於車載網絡信息處理需要,使用XML為信息載體,可以同時顯示汽車內部實時信息和互聯網絡信息的專用嵌入式瀏覽器,該瀏覽器可以同時顯示汽車內部實時信息和互聯網絡信息,通用性好、能夠運行於不同的硬件平台。