摘 要: 基于ICE中間件的衛(wèi)星地面測試系統(tǒng)充分利用ICE中間件分布式、跨平臺(tái)和跨語言的特點(diǎn),采用客戶端/服務(wù)器構(gòu)架,實(shí)現(xiàn)了衛(wèi)星測試業(yè)務(wù)軟件部分的各項(xiàng)功能,提供對(duì)系統(tǒng)運(yùn)行狀態(tài)的全面監(jiān)控。提出了一種Android平臺(tái)客戶端解決方案,運(yùn)行于測試設(shè)備中獨(dú)立的嵌入式監(jiān)控板卡之上,通過與設(shè)備ARM-Linux平臺(tái)服務(wù)器端業(yè)務(wù)板卡的通信,實(shí)現(xiàn)對(duì)測試設(shè)備業(yè)務(wù)運(yùn)行情況的監(jiān)視和控制。
關(guān)鍵詞: 衛(wèi)星地面測試; 嵌入式系統(tǒng); ICE中間件; Android 應(yīng)用程序
衛(wèi)星地面測試是衛(wèi)星研制過程中的重要環(huán)節(jié),對(duì)其系統(tǒng)功能驗(yàn)證及性能評(píng)估具有重要作用。傳統(tǒng)的衛(wèi)星地面測試設(shè)備大多采用工控機(jī)平臺(tái),其軟件部分運(yùn)行于Windows操作系統(tǒng),通過PCI總線與硬件板卡進(jìn)行通信,完成各種測試功能并對(duì)系統(tǒng)運(yùn)行狀況進(jìn)行監(jiān)控[1]。隨著嵌入式技術(shù)的不斷成熟與發(fā)展,采用ARM-Linux平臺(tái)的嵌入式系統(tǒng)取代原有工控機(jī)平臺(tái),可實(shí)現(xiàn)測試設(shè)備的小型化和低功耗[2]。借助于ICE中間件的跨平臺(tái)、跨語言、屏蔽底層通信等特性,開發(fā)出一套適用于衛(wèi)星測試業(yè)務(wù)的軟件框架,采用客戶端/服務(wù)器構(gòu)架,可組成一個(gè)分布式測試系統(tǒng)[3]。本文提出了一種Android平臺(tái)客戶端解決方案,運(yùn)行于設(shè)備內(nèi)部獨(dú)立的嵌入式監(jiān)控板卡之上,通過與設(shè)備ARM-Linux平臺(tái)服務(wù)器端業(yè)務(wù)板卡的通信,實(shí)現(xiàn)了對(duì)測試設(shè)備的監(jiān)控功能。
1 基于ICE中間件的衛(wèi)星地面測試系統(tǒng)
基于ICE中間件的衛(wèi)星地面測試系統(tǒng)典型結(jié)構(gòu)如圖1所示。服務(wù)器端按照面向服務(wù)(SOA)的思想設(shè)計(jì),每個(gè)服務(wù)內(nèi)部實(shí)現(xiàn)相對(duì)獨(dú)立的業(yè)務(wù)邏輯,并對(duì)外提供形式統(tǒng)一的功能調(diào)用接口,包括通信的機(jī)制和內(nèi)容。客戶端可通過定義的標(biāo)準(zhǔn)方法獲取某個(gè)功能服務(wù)器所能提供的所有服務(wù)的列表,以及特定服務(wù)的使用方法。
上述系統(tǒng)中,前端測試單元通過多樣的測試接口對(duì)衛(wèi)星遙測、遙控及姿勢等各種信號(hào)及數(shù)據(jù)進(jìn)行測試和采集,并對(duì)測試數(shù)據(jù)分析整理形成各種主題的數(shù)據(jù)報(bào)告,供客戶端監(jiān)視。客戶端可對(duì)系統(tǒng)各工作參數(shù)進(jìn)行設(shè)置,并發(fā)送遙控指令引導(dǎo)星上機(jī)構(gòu)執(zhí)行相應(yīng)動(dòng)作。該系統(tǒng)依托ICE中間件技術(shù),解耦合測試系統(tǒng)中各服務(wù)單元間的關(guān)聯(lián),從而實(shí)現(xiàn)數(shù)據(jù)的高效發(fā)布;同時(shí)利用ICEGrid實(shí)現(xiàn)目標(biāo)服務(wù)器的動(dòng)態(tài)定位、冗余及負(fù)載均衡。
系統(tǒng)服務(wù)器端采用標(biāo)準(zhǔn)C++語言開發(fā),利用語言本身及ICE中間件的跨平臺(tái)特性,可運(yùn)行于X86、ARM等不同平臺(tái),通過底層驅(qū)動(dòng)程序?qū)崿F(xiàn)與硬件模塊的通信,完成特定業(yè)務(wù)功能。客戶端部分通過對(duì)服務(wù)器端各服務(wù)對(duì)象的訪問,實(shí)現(xiàn)對(duì)服務(wù)器端的監(jiān)控功能。借助于ICE跨語言的特性,可采用不同編程語言開發(fā)客戶端接口,并進(jìn)一步封裝實(shí)現(xiàn)與服務(wù)器端通信,進(jìn)而采用不同的界面開發(fā)技術(shù)實(shí)現(xiàn)不同的用戶體驗(yàn)。例如,若采用PC機(jī)作為監(jiān)控終端,則可選擇C++、python等語言開發(fā)客戶端接口,采用VC++、wxpython等工具實(shí)現(xiàn)人機(jī)交互界面,組成分布式監(jiān)控終端。
對(duì)于嵌入式測試設(shè)備,也希望提供類似于工控機(jī)設(shè)備的液晶屏顯示面板,對(duì)系統(tǒng)的運(yùn)行狀況進(jìn)行實(shí)時(shí)監(jiān)控。液晶屏程序最直觀的實(shí)現(xiàn)方式仍然是作為系統(tǒng)的客戶端部分運(yùn)行,相對(duì)于上述的分布式監(jiān)控終端,液晶屏程序由于與服務(wù)器端運(yùn)行在同一臺(tái)測試設(shè)備,因此可看做本地客戶端。
具體實(shí)現(xiàn)過程中,采用Android應(yīng)用程序進(jìn)行客戶端界面開發(fā),調(diào)用Java版客戶端接口完成與服務(wù)器端的通信[4]。由于Android平臺(tái)對(duì)處理器要求較高,故采用獨(dú)立的嵌入式板作為客戶端運(yùn)行平臺(tái),選用三星S5PV210處理器,液晶屏采用7寸多點(diǎn)觸控電容屏。服務(wù)器端運(yùn)行于ARM-Linux平臺(tái),處理器為三星S3C6410,兩塊嵌入式板在機(jī)箱內(nèi)部用網(wǎng)線連接。相比于傳統(tǒng)的工控機(jī)平臺(tái),此設(shè)計(jì)不僅從邏輯上將監(jiān)控部分與業(yè)務(wù)處理邏輯分離,更從硬件角度將二者分開,進(jìn)一步降低了不同功能模塊間的耦合。設(shè)備對(duì)外提供標(biāo)準(zhǔn)測試接口、網(wǎng)口以及觸摸屏,實(shí)現(xiàn)了更加優(yōu)質(zhì)的人機(jī)交互和用戶體驗(yàn)。
2 關(guān)鍵技術(shù)應(yīng)用
2.1 Java語言客戶端接口
Slice(Specification Language for ICE) 是一種使對(duì)象接口與其實(shí)現(xiàn)相分離的基礎(chǔ)性抽象機(jī)制[5]。它定義了ICE對(duì)象接口、操作,以及客戶端與服務(wù)器間交換的數(shù)據(jù)類型。編譯生成的Java版客戶端接口還需要進(jìn)一步完成其功能的實(shí)現(xiàn),主要包括客戶端對(duì)服務(wù)器端對(duì)象代理的訪問、對(duì)服務(wù)功能的調(diào)用以及注冊(cè)到中心的數(shù)據(jù)報(bào)告等。對(duì)客戶端而言,代理即ICE對(duì)象的本地代表。代理所封裝的信息包括:(1)尋址信息:用于讓客戶端運(yùn)行時(shí)聯(lián)系正確的服務(wù)器。(2)對(duì)象標(biāo)識(shí):用于確定服務(wù)器中的哪一個(gè)對(duì)象是請(qǐng)求的目標(biāo)可選標(biāo)識(shí)符[6]。
服務(wù)器端與客戶端的連接關(guān)系如圖2所示,客戶端接口通過服務(wù)對(duì)象管理器實(shí)現(xiàn)對(duì)遠(yuǎn)程服務(wù)對(duì)象的訪問。經(jīng)過封裝的接口部分,對(duì)外提供客戶端連接管理、服務(wù)對(duì)象列表、各服務(wù)的功能調(diào)用以及各服務(wù)數(shù)據(jù)報(bào)告的處理函數(shù)等功能,供各種基于Java語言的界面開發(fā)技術(shù)(如Android、JSP+HTML+JavaScript)調(diào)用。
2.2 可定制Android界面
客戶端為界面開發(fā)人員提供各種類型的常用控件,開發(fā)人員可根據(jù)需要定制不同的監(jiān)控頁面。頁面信息采用XML格式存儲(chǔ),每一個(gè)標(biāo)簽頁節(jié)點(diǎn)內(nèi)可定義各種不同的控件,每個(gè)控件節(jié)點(diǎn)內(nèi)包含該控件的類型、位置、尺寸、顏色、數(shù)制等信息。每一個(gè)控件需要分配一個(gè)唯一的ID。客戶端框架在啟動(dòng)一個(gè)項(xiàng)目時(shí)將根據(jù)從上述配置文件中解析出的信息繪制界面內(nèi)容,并通過控件ID完成與邏輯部分所調(diào)用控件資源的映射。
2.3 客戶端框架設(shè)計(jì)
客戶端軟件作為一個(gè)相對(duì)獨(dú)立的框架,其本身并不提供某種特定的業(yè)務(wù)邏輯功能。開發(fā)人員可根據(jù)各自業(yè)務(wù)的不同需求,編寫相應(yīng)的邏輯功能代碼。代碼中需定義一套本地資源列表,以完成對(duì)遠(yuǎn)程服務(wù)的功能調(diào)用,并接收來自不同服務(wù)的各種數(shù)據(jù)報(bào)告;代碼中還應(yīng)定義一套顯示界面列表,用于指定與業(yè)務(wù)邏輯相關(guān)的界面控件資源。上述代碼以JAR包的形式生成,供客戶端框架調(diào)用。客戶端的功能為:(1)將上述本地資源列表與服務(wù)器端提供的資源列表進(jìn)行映射; (2)將上述界面資源列表與本地控件ID進(jìn)行映射; (3)通過項(xiàng)目名稱加載并運(yùn)行相應(yīng)的JAR包,實(shí)現(xiàn)特定的邏輯功能。
上述映射列表以及服務(wù)器端連接信息存儲(chǔ)于不同的項(xiàng)目文件當(dāng)中,用戶可根據(jù)需要,運(yùn)行不同的項(xiàng)目。這種方法將顯示界面與業(yè)務(wù)邏輯分離,通過項(xiàng)目配置將二者整合在一起,實(shí)現(xiàn)了客戶端的框架化設(shè)計(jì)。
本文介紹了一種基于ICE中間件的Android平臺(tái)客戶端解決方案。該方案通過與服務(wù)器端程序的通信,實(shí)現(xiàn)了對(duì)衛(wèi)星地面測試設(shè)備的監(jiān)視與控制。該客戶端采用框架化設(shè)計(jì),可定制顯示界面,適用于不同業(yè)務(wù)需求,為實(shí)現(xiàn)嵌入式測試設(shè)備的監(jiān)控功能提供了一種可選方案。
參考文獻(xiàn)
[1] 楊柳青.衛(wèi)星數(shù)管分系統(tǒng)地面設(shè)備總控軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京航空航天大學(xué),2010.
[2] 李善平,劉文峰,王煥龍,等. Linux與嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,2006.
[3] 蔡佳成.基于ICE中間件的分布式網(wǎng)絡(luò)安全系統(tǒng)的研究與設(shè)計(jì)[D]. 北京:北京郵電大學(xué),2009.
[4] 王向輝,張國印,沈潔.Android應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2010.
[5] MICHI H. A new approach to object-oriented middleware[J]. IEEE Computer Society, January~February 2004:66-75.
[6] ZeroC. Distributed programming with Ice 3.4.2[M/OL].http:
//zeroc.com/doc/index.html.