張小梅 江曉谷
摘要:該文介紹了采用面向對象方法描述信息家電設備的信息家電接口定義語言IAIDL,然后采用XML描述信息家電IAIDL文檔并制定了IAIDL語言規(guī)范,并在android系統上實現了IAIDL解析器。
關鍵詞:信息家電;信息家電接口定義語言IAIDL;IAIDL解析器
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)04-0864-03
現今社會各種小型移動智能設備越來越普及,例如智能手機,平板電腦,個人數字助理(PDAs)等??梢娪靡苿釉O備遠程控制信息家電將是未來智能家居系統的發(fā)展方向。之前很多研究工作都是將重點放在信息家電的萬能遙控器界面的研究上:斯坦福的ICrafter就是一個分布式信息家電接口的萬能遙控器的框架;UIA則使用基于XML語言的MoDAL,該MoDAL可利用XML描述來動態(tài)創(chuàng)建用戶接口界面;卡耐基梅隆大學近年來的研究也是集中在萬能遙控器的動態(tài)生成方面[1]。而本文將從現在發(fā)展趨勢良好的android手機系統出發(fā),提出了信息家電接口定義語言IAIDL,對該語言設計了統一的格式規(guī)范,同時對基于安卓的XML解析技術進行了研究。
1 IAIDL語言與其功能
信息家電接口定義語言(IAIDL, Information Appliance Interface Definition Language)是一種用來定義家庭網絡中信息家電屬性與功能的描述語言[2]。
通過IAIDL語言的運用,當一種按照信息家電描述語言格式定義的新信息家電設備接入系統時,該設備能夠自動地向家庭網關進行注冊,所有在線的遠程信息家電遙控器能自動發(fā)現新信息家電設備的功能接口,從而實現新信息家電設備的動態(tài)接入。為了實現家電之間的相互協作,各個信息家電(IA)向其他家電和用戶通過IAIDL 文檔宣告自己所具有的功能和屬性, 該IAIDL文檔通過IAIDL 編譯器之后將中間文檔存儲到網關上,以提供給萬能遙控器進行訪問從而實現對各個家電的控制。
2 IAIDL格式規(guī)范
可擴展標記語言 (Extensible Markup Language, XML) 的設計目標[3],強調在互聯網上的簡單性,普遍性和實用性。用XML 文檔來表示IAIDL 是合適的。我們定義出DTD標準文件作為XML語言的約束, 從而統一XML語言的描述方式。不同的公司只需要根據DTD文件,都能建立XML文件且可以進行驗證,這樣就可以實現網絡共享和數據交互。DTD(Document Type Definition) 是一套關于標記符的語法規(guī)則,可通過比較XML文檔和DTD文件來看文檔是否符合規(guī)范,這樣就為我們進一步研究XML解析技術打下了基礎。
以信息空調為例,XML文檔的一般性規(guī)范格式為:
對以上標準的具體分析如下:
每個家電都有如下屬性:
name: 家電類型的唯一標識,例如是空調還是電視機;
manufacturer:家電的廠商,例如是海爾或者TCL.
對于顯示狀態(tài)列表,以空調的溫度狀態(tài)為例,以XML描述如下:
其中,
length/height:規(guī)定動態(tài)生成狀態(tài)面板的長度與高度;
X/Y:動態(tài)生成的狀態(tài)面板的左上角X,Y坐標
State:信息家電的某個狀態(tài)信息,以空調為例,state有溫度,開關狀態(tài),風強等等。
在XML文件中每增加一個
對于控制狀態(tài)列表,以空調的溫度狀態(tài)為例,以XML描述如下:
在XML文件中每增加一個
3 PULL解析技術
在Android中, 我們最常用的解析器就是DOM解析器、SAX解析器和PULL解析器。其中PULL解析器很小巧,解析速度快,非常適合在Android移動設備中使用,Android系統內部也是采用PULL解析器對XML文件進行解析的[4],因此我們考慮使用PULL解析技術。
我們首先設置一個JAVA類來存放數據,通過這個類我們存儲讀取的IAIDL文件所有的節(jié)點和數據。PULL在解析IAIDL文件時,IAIDL文件是以文件流的形式輸入的。解析器先將全部文件數據讀到一個字符數組中,然后再開始一個一個字符往后讀取。PULL解析器每讀完一段字符后不會自動往后解析了,所以我們要使用API pullParser.next()進入下一事件。由一個switch結構來判斷這個事件的類型,并對不同類型執(zhí)行不同的操作。
JAVA PULL API主要提供了五類事件:
START_DOCUMENT
文件開始,解析器還沒有讀取任何輸入。
START_TAG
解析器讀到了一個開始節(jié)點。
TEXT
解析器取得了一個節(jié)點后文本。
END_TAG
解析器讀到了一個結束節(jié)點。
END_DOCUMENT
文件結束,解析過程結束。
我們以空調的IAIDL文件為例,解析過程如下:
IAIDL解析器PULLParser的運行情況良好,可成功將IAIDL文檔進行解析和存儲,并可將文檔中數據顯示在android應用程序中。該文提出的IAIDL語言與其規(guī)范和IAIDL解析技術的實現為后續(xù)信息家電萬能遙控見面的動態(tài)生成,遠程遙控信息家電等打下了基礎。
參考文獻:
[1] Shieh Wen-Gong, Wang Jian-Min, Horng Wen-Bing.Secure remote control model for information appliances[C] .Intelligence and Security Informatics,2008. IEEE International Conference , 2008: 222 – 224.
[2] 陽俐君,劉宏.信息家電接口定義語言(IAIDL)的研究[J].計算機與現代化,2007(4):13-16.
[3] Android實現XML解析技術[EB/OL].http://www.2cto.com/kf/201202/121173.html.
[4] XML PULL[EB/OL].http://www.xmlpull.org/.