李博寧,馮文全
(北京航空航天大學(xué) 電子信息工程學(xué)院,北京100191)
衛(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ǔ)言、屏蔽底層通信等特性,開(kāi)發(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)控功能。
基于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ǔ)言開(kāi)發(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ǔ)言開(kāi)發(fā)客戶端接口,并進(jìn)一步封裝實(shí)現(xiàn)與服務(wù)器端通信,進(jìn)而采用不同的界面開(kāi)發(fā)技術(shù)實(shí)現(xiàn)不同的用戶體驗(yàn)。例如,若采用PC機(jī)作為監(jiān)控終端,則可選擇C++、python等語(yǔ)言開(kāi)發(fā)客戶端接口,采用VC++、wxpython等工具實(shí)現(xiàn)人機(jī)交互界面,組成分布式監(jiān)控終端。
對(duì)于嵌入式測(cè)試設(shè)備,也希望提供類(lèi)似于工控機(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)行客戶端界面開(kāi)發(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ù)處理邏輯分離,更從硬件角度將二者分開(kāi),進(jìn)一步降低了不同功能模塊間的耦合。設(shè)備對(duì)外提供標(biāo)準(zhǔn)測(cè)試接口、網(wǎng)口以及觸摸屏,實(shí)現(xiàn)了更加優(yōu)質(zhì)的人機(jī)交互和用戶體驗(yàn)。
Slice(Specification Language for ICE)是一種使對(duì)象接口與其實(shí)現(xiàn)相分離的基礎(chǔ)性抽象機(jī)制[5]。它定義了ICE對(duì)象接口、操作,以及客戶端與服務(wù)器間交換的數(shù)據(jù)類(lèi)型。編譯生成的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ǔ)言的界面開(kāi)發(fā)技術(shù)(如 Android、JSP+HTML+JavaScript)調(diào)用。
客戶端為界面開(kāi)發(fā)人員提供各種類(lèi)型的常用控件,開(kāi)發(fā)人員可根據(jù)需要定制不同的監(jiān)控頁(yè)面。頁(yè)面信息采用XML格式存儲(chǔ),每一個(gè)標(biāo)簽頁(yè)節(jié)點(diǎn)內(nèi)可定義各種不同的控件,每個(gè)控件節(jié)點(diǎn)內(nèi)包含該控件的類(lèi)型、位置、尺寸、顏色、數(shù)制等信息。每一個(gè)控件需要分配一個(gè)唯一的ID??蛻舳丝蚣茉趩?dòng)一個(gè)項(xiàng)目時(shí)將根據(jù)從上述配置文件中解析出的信息繪制界面內(nèi)容,并通過(guò)控件ID完成與邏輯部分所調(diào)用控件資源的映射。
客戶端軟件作為一個(gè)相對(duì)獨(dú)立的框架,其本身并不提供某種特定的業(yè)務(wù)邏輯功能。開(kāi)發(fā)人員可根據(jù)各自業(yè)務(wù)的不同需求,編寫(xiě)相應(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)控功能提供了一種可選方案。
[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)用程序開(kāi)發(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.