摘 要: 基于ICE中間件的衛(wèi)星地面測(cè)試系統(tǒng)充分利用ICE中間件分布式、跨平臺(tái)和跨語(yǔ)言的特點(diǎn),,采用客戶端/服務(wù)器構(gòu)架,,實(shí)現(xiàn)了衛(wèi)星測(cè)試業(yè)務(wù)軟件部分的各項(xiàng)功能,提供對(duì)系統(tǒng)運(yùn)行狀態(tài)的全面監(jiān)控,。提出了一種Android平臺(tái)客戶端解決方案,,運(yùn)行于測(cè)試設(shè)備中獨(dú)立的嵌入式監(jiān)控板卡之上,通過(guò)與設(shè)備ARM-Linux平臺(tái)服務(wù)器端業(yè)務(wù)板卡的通信,,實(shí)現(xiàn)對(duì)測(cè)試設(shè)備業(yè)務(wù)運(yùn)行情況的監(jiān)視和控制,。
關(guān)鍵詞: 衛(wèi)星地面測(cè)試; 嵌入式系統(tǒng),; ICE中間件,; Android 應(yīng)用程序
衛(wèi)星地面測(cè)試是衛(wèi)星研制過(guò)程中的重要環(huán)節(jié),對(duì)其系統(tǒng)功能驗(yàn)證及性能評(píng)估具有重要作用,。傳統(tǒng)的衛(wèi)星地面測(cè)試設(shè)備大多采用工控機(jī)平臺(tái),,其軟件部分運(yùn)行于Windows操作系統(tǒng),通過(guò)PCI總線與硬件板卡進(jìn)行通信,,完成各種測(cè)試功能并對(duì)系統(tǒng)運(yùn)行狀況進(jìn)行監(jiān)控[1],。隨著嵌入式技術(shù)的不斷成熟與發(fā)展,采用ARM-Linux平臺(tái)的嵌入式系統(tǒng)取代原有工控機(jī)平臺(tái),,可實(shí)現(xiàn)測(cè)試設(shè)備的小型化和低功耗[2],。借助于ICE中間件的跨平臺(tái)、跨語(yǔ)言,、屏蔽底層通信等特性,,開發(fā)出一套適用于衛(wèi)星測(cè)試業(yè)務(wù)的軟件框架,采用客戶端/服務(wù)器構(gòu)架,,可組成一個(gè)分布式測(cè)試系統(tǒng)[3],。本文提出了一種Android平臺(tái)客戶端解決方案,運(yùn)行于設(shè)備內(nèi)部獨(dú)立的嵌入式監(jiān)控板卡之上,,通過(guò)與設(shè)備ARM-Linux平臺(tái)服務(wù)器端業(yè)務(wù)板卡的通信,,實(shí)現(xiàn)了對(duì)測(cè)試設(shè)備的監(jiān)控功能。
1 基于ICE中間件的衛(wèi)星地面測(cè)試系統(tǒng)
基于ICE中間件的衛(wèi)星地面測(cè)試系統(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)容,。客戶端可通過(guò)定義的標(biāo)準(zhǔn)方法獲取某個(gè)功能服務(wù)器所能提供的所有服務(wù)的列表,,以及特定服務(wù)的使用方法,。
上述系統(tǒng)中,前端測(cè)試單元通過(guò)多樣的測(cè)試接口對(duì)衛(wèi)星遙測(cè),、遙控及姿勢(shì)等各種信號(hào)及數(shù)據(jù)進(jìn)行測(cè)試和采集,,并對(duì)測(cè)試數(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ù),,解耦合測(cè)試系統(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++語(yǔ)言開發(fā),利用語(yǔ)言本身及ICE中間件的跨平臺(tái)特性,,可運(yùn)行于X86,、ARM等不同平臺(tái),通過(guò)底層驅(qū)動(dòng)程序?qū)崿F(xiàn)與硬件模塊的通信,,完成特定業(yè)務(wù)功能,。客戶端部分通過(guò)對(duì)服務(wù)器端各服務(wù)對(duì)象的訪問(wèn),,實(shí)現(xiàn)對(duì)服務(wù)器端的監(jiān)控功能,。借助于ICE跨語(yǔ)言的特性,可采用不同編程語(yǔ)言開發(fā)客戶端接口,,并進(jìn)一步封裝實(shí)現(xiàn)與服務(wù)器端通信,,進(jìn)而采用不同的界面開發(fā)技術(shù)實(shí)現(xiàn)不同的用戶體驗(yàn)。例如,,若采用PC機(jī)作為監(jiān)控終端,,則可選擇C++、python等語(yǔ)言開發(fā)客戶端接口,,采用VC++,、wxpython等工具實(shí)現(xiàn)人機(jī)交互界面,組成分布式監(jiān)控終端,。
對(duì)于嵌入式測(cè)試設(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)測(cè)試設(shè)備,,因此可看做本地客戶端,。
具體實(shí)現(xiàn)過(guò)程中,采用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)測(cè)試接口,、網(wǎng)口以及觸摸屏,,實(shí)現(xiàn)了更加優(yōu)質(zhì)的人機(jī)交互和用戶體驗(yàn)。
2 關(guān)鍵技術(shù)應(yīng)用
2.1 Java語(yǔ)言客戶端接口
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ì)象代理的訪問(wèn),、對(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所示,,客戶端接口通過(guò)服務(wù)對(duì)象管理器實(shí)現(xiàn)對(duì)遠(yuǎn)程服務(wù)對(duì)象的訪問(wèn),。經(jīng)過(guò)封裝的接口部分,對(duì)外提供客戶端連接管理,、服務(wù)對(duì)象列表,、各服務(wù)的功能調(diào)用以及各服務(wù)數(shù)據(jù)報(bào)告的處理函數(shù)等功能,供各種基于Java語(yǔ)言的界面開發(fā)技術(shù)(如Android,、JSP+HTML+JavaScript)調(diào)用,。
2.2 可定制Android界面
客戶端為界面開發(fā)人員提供各種類型的常用控件,開發(fā)人員可根據(jù)需要定制不同的監(jiān)控頁(yè)面,。頁(yè)面信息采用XML格式存儲(chǔ),,每一個(gè)標(biāo)簽頁(yè)節(jié)點(diǎn)內(nèi)可定義各種不同的控件,每個(gè)控件節(jié)點(diǎn)內(nèi)包含該控件的類型,、位置,、尺寸、顏色,、數(shù)制等信息,。每一個(gè)控件需要分配一個(gè)唯一的ID??蛻舳丝蚣茉趩?dòng)一個(gè)項(xiàng)目時(shí)將根據(jù)從上述配置文件中解析出的信息繪制界面內(nèi)容,,并通過(guò)控件ID完成與邏輯部分所調(diào)用控件資源的映射。
2.3 客戶端框架設(shè)計(jì)
客戶端軟件作為一個(gè)相對(duì)獨(dú)立的框架,,其本身并不提供某種特定的業(yè)務(wù)邏輯功能,。開發(fā)人員可根據(jù)各自業(yè)務(wù)的不同需求,,編寫相應(yīng)的邏輯功能代碼。代碼中需定義一套本地資源列表,,以完成對(duì)遠(yuǎn)程服務(wù)的功能調(diào)用,,并接收來(lái)自不同服務(wù)的各種數(shù)據(jù)報(bào)告;代碼中還應(yīng)定義一套顯示界面列表,,用于指定與業(yè)務(wù)邏輯相關(guān)的界面控件資源,。上述代碼以JAR包的形式生成,供客戶端框架調(diào)用,??蛻舳说墓δ転椋?1)將上述本地資源列表與服務(wù)器端提供的資源列表進(jìn)行映射,; (2)將上述界面資源列表與本地控件ID進(jìn)行映射,; (3)通過(guò)項(xiàng)目名稱加載并運(yùn)行相應(yīng)的JAR包,,實(shí)現(xiàn)特定的邏輯功能。
上述映射列表以及服務(wù)器端連接信息存儲(chǔ)于不同的項(xiàng)目文件當(dāng)中,,用戶可根據(jù)需要,,運(yùn)行不同的項(xiàng)目。這種方法將顯示界面與業(yè)務(wù)邏輯分離,,通過(guò)項(xiàng)目配置將二者整合在一起,,實(shí)現(xiàn)了客戶端的框架化設(shè)計(jì)。
本文介紹了一種基于ICE中間件的Android平臺(tái)客戶端解決方案,。該方案通過(guò)與服務(wù)器端程序的通信,,實(shí)現(xiàn)了對(duì)衛(wèi)星地面測(cè)試設(shè)備的監(jiān)視與控制。該客戶端采用框架化設(shè)計(jì),,可定制顯示界面,,適用于不同業(yè)務(wù)需求,為實(shí)現(xiàn)嵌入式測(cè)試設(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] 王向輝,,張國(guó)印,,沈潔.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.