国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于XML-RPC的RTS2自主觀測(cè)系統(tǒng)遠(yuǎn)程訪問(wèn)技術(shù)*

2013-12-18 00:51冉凡輝衛(wèi)守林季凱帆
天文研究與技術(shù) 2013年4期
關(guān)鍵詞:服務(wù)端調(diào)用望遠(yuǎn)鏡

冉凡輝,鄧 輝,梁 波,王 鋒,衛(wèi)守林,季凱帆

(昆明理工大學(xué) 云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500)

基于XML-RPC的RTS2自主觀測(cè)系統(tǒng)遠(yuǎn)程訪問(wèn)技術(shù)*

冉凡輝,鄧 輝,梁 波,王 鋒,衛(wèi)守林,季凱帆

(昆明理工大學(xué) 云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500)

自主觀測(cè)軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)是天文望遠(yuǎn)鏡自主觀測(cè)的核心,近年來(lái)已經(jīng)成為天文技術(shù)研究中的一個(gè)重要方向。在當(dāng)前可用的自主觀測(cè)系統(tǒng)中,遠(yuǎn)程望遠(yuǎn)鏡系統(tǒng)第2版(Remote Telescope System 2nd version, RTS2)擁有較多優(yōu)勢(shì)從而成為國(guó)內(nèi)天文技術(shù)界較為關(guān)注的系統(tǒng)之一。針對(duì)RTS2不提供遠(yuǎn)程訪問(wèn)控制功能的問(wèn)題,深入分析RTS2中利用XML-RPC技術(shù)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)和功能調(diào)用的機(jī)制,實(shí)現(xiàn)了一個(gè)基于XML-RPC的望遠(yuǎn)鏡自動(dòng)控制終端系統(tǒng)原型,在不更改RTS2核心代碼的基礎(chǔ)上,通過(guò)其服務(wù)層提供的XML-RPC接口實(shí)現(xiàn)RTS2的應(yīng)用擴(kuò)展,并為后續(xù)工作中集成利用RTS2奠定了基礎(chǔ)。

XML-RPC;RTS2;自主觀測(cè)

遠(yuǎn)程望遠(yuǎn)鏡系統(tǒng)第2版[1]是一個(gè)天文望遠(yuǎn)鏡自主觀測(cè)軟件系統(tǒng),是遠(yuǎn)程望遠(yuǎn)鏡系統(tǒng)[2]的進(jìn)一步發(fā)展,目的是實(shí)現(xiàn)全自主的天文觀測(cè)。RTS2系統(tǒng)在Linux下開發(fā)并運(yùn)行,優(yōu)點(diǎn)較為明顯:(1)系統(tǒng)運(yùn)行穩(wěn)定;(2)系統(tǒng)響應(yīng)快;(3)有開放源碼利于實(shí)現(xiàn)系統(tǒng)擴(kuò)展和進(jìn)一步的開發(fā)。

國(guó)內(nèi)在遠(yuǎn)程控制方面已經(jīng)有一些研究工作,如在WEB界面中實(shí)現(xiàn)了對(duì)望遠(yuǎn)鏡的遠(yuǎn)程控制[3-4]。RTS2作為一個(gè)相對(duì)成熟的自主控制軟件系統(tǒng),支持大量的天文觀測(cè)設(shè)備,包括望遠(yuǎn)鏡系統(tǒng)、CCD系統(tǒng)、自動(dòng)對(duì)焦器等,直接利用RTS2可以簡(jiǎn)化系統(tǒng)開發(fā)工作量的同時(shí)保證系統(tǒng)的穩(wěn)定性。然而,盡管目前商用的RTS3中有遠(yuǎn)程系統(tǒng)控制功能,但是開源的RTS2系統(tǒng)只提供了一個(gè)基于文本終端的命令行方式的操作界面,不能滿足望遠(yuǎn)鏡遠(yuǎn)程控制的需求。

本文正是在這樣的背景下開展相應(yīng)的研究工作,通過(guò)分析RTS2的XML-RPC接口,掌握RTS2系統(tǒng)中XML-RPC接口的調(diào)用方法,通過(guò)改進(jìn)的XML-RPC接口,實(shí)現(xiàn)RTS2管理下的各類設(shè)備狀態(tài)參數(shù)獲取以及功能調(diào)用,使得通過(guò)WEB或移動(dòng)手機(jī)界面對(duì)RTS2系統(tǒng)進(jìn)行操作成為可能。

1 XML-RPC的工作原理

遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call, RPC)是一種在本地機(jī)器上調(diào)用遠(yuǎn)端機(jī)器上的一個(gè)過(guò)程(方法)的技術(shù)。遠(yuǎn)程過(guò)程調(diào)用系統(tǒng)包括2部分:一是遠(yuǎn)程過(guò)程調(diào)用客戶端,用來(lái)向遠(yuǎn)程過(guò)程調(diào)用服務(wù)器發(fā)出調(diào)用請(qǐng)求,并接收方法的返回?cái)?shù)據(jù);另一個(gè)是遠(yuǎn)程過(guò)程調(diào)用服務(wù)器,用于響應(yīng)遠(yuǎn)程過(guò)程調(diào)用客戶端的請(qǐng)求,執(zhí)行相應(yīng)的方法(Method),并回送執(zhí)行結(jié)果。

XML-RPC是一種網(wǎng)絡(luò)編程接口定義規(guī)范,以XML封裝并通過(guò)HTTP協(xié)議進(jìn)行傳輸, XML-RPC的實(shí)現(xiàn)是基于HTTP 的POST和GET 方法,傳輸數(shù)據(jù)流遵循HTTP格式??蛻舳丝梢灾付繕?biāo)服務(wù)器,將XML數(shù)據(jù),包括目標(biāo)方法和參數(shù),傳遞給服務(wù)器;目標(biāo)服務(wù)器通過(guò)XML-RPC接口得到XML 數(shù)據(jù),處理后將結(jié)果以同樣的方式生成XML格式的報(bào)文返回客戶端。XML-RPC不受限于計(jì)算機(jī)平臺(tái)和操作系統(tǒng),任何一種支持HTTP協(xié)議的編程語(yǔ)言都可以支持XML-RPC編程[3]。XML-RPC工作原理如圖1。

圖1 XML-RPC工作原理圖
Fig.1 Block diagram of the XML-RPC

客戶端發(fā)出連接申請(qǐng),服務(wù)端響應(yīng)客戶端的請(qǐng)求,建立連接??蛻舳税延脩粢缶幋a成XML格式傳輸服務(wù)端,服務(wù)端調(diào)用已注冊(cè)方法(Method)對(duì)所接收的命令進(jìn)行處理,并把處理結(jié)果以XML格式返回客戶端,客戶端解碼,并把結(jié)果送給用戶[4]。

數(shù)據(jù)的傳輸主要是方法名字和參數(shù)的輸入和結(jié)果輸出,格式為XML格式??蛻舳税l(fā)送請(qǐng)求時(shí)傳遞的XML格式報(bào)文包括請(qǐng)求報(bào)頭和請(qǐng)求報(bào)文,報(bào)頭中包括消息格式(text/xml)和消息長(zhǎng)度,有的也會(huì)有XML版本。

請(qǐng)求報(bào)文中必須包含有元素,一個(gè)子元素,格式為:

方法名

如果需要傳遞參數(shù),則在中加上子元素,可以通過(guò)多組傳遞多個(gè)參數(shù)。格式為:

<數(shù)據(jù)類型>

參數(shù)值

參數(shù)的數(shù)據(jù)類型包括整形(int)、字符串(string)、邏輯型(boolean)、數(shù)組(array)、結(jié)構(gòu)體(struct)等。

服務(wù)端響應(yīng)的消息包括響應(yīng)報(bào)頭和報(bào)文,響應(yīng)報(bào)頭和請(qǐng)求報(bào)頭一樣,響應(yīng)報(bào)文中一定要有以及子元素中可以包含多個(gè),的格式和請(qǐng)求報(bào)頭中的格式一樣。當(dāng)方法名或者參數(shù)出現(xiàn)錯(cuò)誤,或者服務(wù)端不能正確執(zhí)行客戶端請(qǐng)求,則返回以下錯(cuò)誤信息:

。

其中,faultCode的值是整型,代表錯(cuò)誤的代碼;faultString的值是字符串型,代表錯(cuò)誤的原因。

2 RTS2的分層結(jié)構(gòu)與XML-RPC接口

2.1 RTS2的分層結(jié)構(gòu)

RTS2采用層狀結(jié)構(gòu)[5],共4層。第1層是中控層,提供系統(tǒng)中所有可用的設(shè)備與服務(wù)列表、系統(tǒng)狀態(tài)改變和各設(shè)備的同步;第2層是設(shè)備層,實(shí)現(xiàn)與各個(gè)硬件的連接,針對(duì)不同的設(shè)備提供不同的類;第3層是服務(wù)層,包括系統(tǒng)的執(zhí)行邏輯,提供對(duì)最終用戶的各類功能,獲得其他預(yù)報(bào)源(如伽馬暴預(yù)報(bào))的數(shù)據(jù),實(shí)現(xiàn)XML-RPC的訪問(wèn);第4層是客戶層,一般工作在交互模式,通過(guò)交互終端或者簡(jiǎn)單工具實(shí)現(xiàn)觀測(cè)腳本。

在此基礎(chǔ)上,對(duì)RTS2系統(tǒng)的應(yīng)用擴(kuò)展無(wú)疑可以有多種方法,其中較為便捷的做法是在完全不改變RTS2結(jié)構(gòu)的前提下,通過(guò)服務(wù)層提供的XML-RPC,實(shí)現(xiàn)對(duì)RTS2各方法的調(diào)用,讀取相應(yīng)的設(shè)備參數(shù)與狀態(tài),并通過(guò)XML-RPC寫入需要控制的設(shè)備參數(shù)。這種方法是本文討論的重點(diǎn)。

2.2 RTS2中XML-RPCD的工作過(guò)程

在RTS2中XML-RPC的實(shí)現(xiàn)主要通過(guò)調(diào)用XML-RPCD進(jìn)程。構(gòu)造函數(shù)XML-RPCD繼承于Device 和XML-RPCServer,作為一個(gè)后臺(tái)程序(Daemon),與其它設(shè)備后臺(tái)守護(hù)進(jìn)程交互,獲得各設(shè)備的狀態(tài),實(shí)現(xiàn)對(duì)各設(shè)備的控制,如觀測(cè)腳本的啟動(dòng)和執(zhí)行情況等;同時(shí),XML-RPCD自身又是RTS2的一個(gè)可被調(diào)用的服務(wù),能被RTS2-MON這一類的RTS2用戶界面程序所調(diào)用。XML-RPCD采用8889端口,外部可以通過(guò)HTTP協(xié)議進(jìn)行訪問(wèn),也可以通過(guò)標(biāo)準(zhǔn)的XML-RPC的進(jìn)行訪問(wèn)。XML-RPCD的基本流程如圖2。

圖2 XML-RPCD流程圖
Fig.2 Flowchart of the XML-RPCD

(1) 流程中,XML-RPCD通過(guò)套接通信與HTTP協(xié)議讀取客戶端數(shù)據(jù),從客戶端傳遞的數(shù)據(jù)先封裝成XML的格式,如rts2.devices.list方法,封裝的格式是。服務(wù)端讀取數(shù)據(jù)后,解析XML內(nèi)容,獲得指定的請(qǐng)求內(nèi)容,即具體的方法名字和參數(shù)。

(2)RTS2中定義的方法需要在XMLRPCAPI中有具體的方法實(shí)現(xiàn)過(guò)程,同時(shí)這些方法已經(jīng)在XML-RPCD中注冊(cè)。

(3)服務(wù)端根據(jù)客戶端請(qǐng)求的方法和參數(shù),調(diào)用相應(yīng)的功能,執(zhí)行完后返回的數(shù)據(jù)是XML格式。如DeviceCount方法,返回的結(jié)果是設(shè)備個(gè)數(shù),封裝成的XML格式為。對(duì)于實(shí)現(xiàn)設(shè)備操作的DeviceCommand方法,執(zhí)行時(shí)只是把命令傳遞給設(shè)備,設(shè)備根據(jù)命令進(jìn)行相應(yīng)的操作,無(wú)信息返回服務(wù)端。

3 基于XML-RPC的 RTS2控制系統(tǒng)實(shí)現(xiàn)

3.1 RTS2提供的系統(tǒng)調(diào)用接口

要實(shí)現(xiàn)外部對(duì)RTS2的訪問(wèn),關(guān)鍵在于利用RTS2提供的XML-RPC訪問(wèn)接口,獲得RTS2的各種狀態(tài),并通過(guò)相應(yīng)命令,實(shí)現(xiàn)對(duì)各類設(shè)備的控制。表1列出了RTS2提供的用戶訪問(wèn)接口方法。

表1 RTS2提供的接口Table 1 The interfaces supported by the RTS2

3.2 客戶端調(diào)用流程

客戶端通過(guò)XML-RPC協(xié)議,實(shí)現(xiàn)對(duì)RTS2的訪問(wèn),具體的流程如圖3。

(1)客戶端與服務(wù)器建立連接后,遠(yuǎn)程調(diào)用rts2.user.login方法,bool verifyUser()函數(shù)進(jìn)行響應(yīng)處理,通過(guò)返回的結(jié)果判斷登錄是否成功(“0”失敗,“1”成功)。

(2)調(diào)用rts2.devices.list方法。由類XMLRPCD定義的對(duì)象getMasterApp(),并由其下面的構(gòu)造函數(shù)getConnections()獲取當(dāng)前正在工作的設(shè)備名,然后以設(shè)備名為參數(shù),調(diào)用rts2.devices.values.list方法,在服務(wù)端調(diào)用構(gòu)造函數(shù)connectionValuesToXmlRpc()獲得設(shè)備工作參數(shù),如望遠(yuǎn)鏡當(dāng)前轉(zhuǎn)動(dòng)阻塞狀態(tài),CCD腳本執(zhí)行狀態(tài)等等。

(3)調(diào)用rts2.device.command方法,由設(shè)備名字和命令作為參數(shù),在服務(wù)端由類Connect下的構(gòu)造函數(shù)getOpenConnection(),檢查設(shè)備是否處在連通狀態(tài),如果是,再調(diào)用構(gòu)造函數(shù)queCommand(),對(duì)參數(shù)中指定設(shè)備根據(jù)命令進(jìn)行相應(yīng)操作。

3.3 RTS2終端控制系統(tǒng)實(shí)現(xiàn)

基于上述討論,在Windows操作系統(tǒng)下,利用開源的xmlrpc++庫(kù)[6],以C++為開發(fā)語(yǔ)言,實(shí)現(xiàn)了一套基于RTS2的望遠(yuǎn)鏡系統(tǒng)狀態(tài)數(shù)據(jù)采集和控制終端系統(tǒng)原型,系統(tǒng)使用一臺(tái)Meade LX200GPS望遠(yuǎn)鏡[7]。客戶端界面如圖4。

圖3 客戶端訪問(wèn)流程Fig.3 Flowchart of the calling of the RST2 by a client

圖4 客戶端界面Fig.4 The client interface

通過(guò)客戶端界面輸入RTS2的IP地址和端口并執(zhí)行“連接”功能,獲得所有設(shè)備目錄(圖4中的設(shè)備列表)。選擇一個(gè)設(shè)備,比如“T0”,該設(shè)備的各種參數(shù)顯示在圖5設(shè)備狀態(tài)列表框中。輸入該設(shè)備所支持的一條命令,如圖4命令框中的“move 20∶00∶00.000 30∶00∶00.000”,點(diǎn)擊“發(fā)送”,實(shí)現(xiàn)望遠(yuǎn)鏡的轉(zhuǎn)動(dòng)控制。服務(wù)端響應(yīng)如圖5。

圖5 服務(wù)端響應(yīng)客戶端請(qǐng)求
Fig.5 A sample of response of the server to a connection requirement from a client

主要代碼如下:

port=GetDlgItemInt(IDC_EDIT1); //獲得端口號(hào)

GetDlgItem(IDC_EDIT2)->GetWindowText(ip,16); //獲得ip;

const char*uri=NULL;

XmlRpc∷XmlRpcClient c(server, port, uri); //定義客戶端

XmlRpc∷XmlRpcValue params, result; //定義數(shù)據(jù)類型

CString s;

GetDlgItem(IDC_EDIT10)->GetWindowText(s); //獲得設(shè)備命令

string s0(s.GetBuffer()); //數(shù)據(jù)類型轉(zhuǎn)換

CString s1;

((CComboBox*)GetDlgItem(IDC_COMBO))->GetWindowText(s1); //獲得設(shè)備名

string s2(s1.GetBuffer()); //數(shù)據(jù)類型轉(zhuǎn)換

params[0]=s2; //設(shè)備名

params[1]=s0; //命令

c1.execute("rts2.device.command", params, result); //客戶端發(fā)送命令給服務(wù)端

原型系統(tǒng)測(cè)試表明,以RTS2為基礎(chǔ)核心,采用XML-RPC方式,可以較快地對(duì)RTS2進(jìn)行功能擴(kuò)展,快速構(gòu)建滿足天文遠(yuǎn)程自主觀測(cè)需求的用戶終端軟件系統(tǒng)。

4 結(jié) 論

自主觀測(cè)軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)是天文望遠(yuǎn)鏡自主觀測(cè)的核心,近幾年已經(jīng)成為天文技術(shù)研究中的一個(gè)重要方向。在當(dāng)前可用的自主觀測(cè)系統(tǒng)中,RTS2系統(tǒng)因?yàn)槠浜诵牟糠珠_源,已經(jīng)有諸多實(shí)際應(yīng)用,特別是已經(jīng)成功應(yīng)用于Bootes[8],成為國(guó)內(nèi)天文技術(shù)界較為關(guān)注的系統(tǒng)之一。

本文深入分析RTS2中XML-RPC的數(shù)據(jù)訪問(wèn)和功能調(diào)用接口,實(shí)現(xiàn)了一個(gè)基于XML-RPC的望遠(yuǎn)鏡自動(dòng)控制終端系統(tǒng)原型。在不更改RTS2核心代碼的基礎(chǔ)上,通過(guò)服務(wù)層提供的XML-RPC接口,可以快速實(shí)現(xiàn)RTS2的應(yīng)用擴(kuò)展,為后續(xù)工作中集成利用RTS2奠定了基礎(chǔ)。

[1] Remote Telescope System-2nd version[EB/OL]. [2012-11-20]. http://rts2.org/.

[2] Petr Kubánek. RTS2—the remote telescope system[J]. Advances in Astronomy, 2010: 1005-1014.

[3] 諶俊毅, 陳東, 范玉峰, 等. 基于網(wǎng)絡(luò)的望遠(yuǎn)鏡遠(yuǎn)程控制實(shí)驗(yàn)[J]. 天文研究與技術(shù)——國(guó)家天文臺(tái)臺(tái)刊, 2007, 4(1): 36-41.

Chen Junyi, Chen Dong, Fan Yufeng, et al. The remote control experiment of the telescope based on the embedded internet[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2007, 4(1): 36-41.

[4] 許駿, 金振字. Windows Sockets實(shí)現(xiàn)天文終端的遠(yuǎn)程控制[J]. 天文研究與技術(shù)——國(guó)家天文臺(tái)臺(tái)刊, 2001(1): 40-46.

Xu Jun, Jin Zhenyu. Remote control of astronomical terminals based on WinSockets[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2001(1): 40-46.

[5] Petr Kubánek, Martin Jelínek, Stanislav Vítek, et al. The RTS2 protocol[C]//Proceedings of SPIE, 2008, 70192S: 92-103.

[6] Xml-RPC for C and C++[EB/OL]. [2012-11-20]. http://xmlrpc-c.sourceforge.net/.

[7] David Suder. Software and hardware autoguiding issues with the LX200GPS[M/OL]. [2012-11-20]. http://www.pdfio.com/k-1465698.html.

[8] BOOTES: Burst Optical Observer and Transient Exploring[EB/OL]. [2012-11-20]. http://bootes.iaa.es/.

AStudyofRemoteAccessTechniquesforAnRTS2AutonomousObservationSoftwareSystemBasedontheXML-RPC

Ran Fanhui, Deng Hui, Liang Bo, Wang Feng, Wei Shoulin, Ji Kaifan

(Key Lab of Applications of Computer Technology of the Yunnan Province, University of Science and Technology of Kunming, Kunming 650500, China, Email: dh@cnlab.net)

An autonomous observation software system is a key component in modern autonomous astronomical telescope observation, which has been an important new research direction of astronomical technologies in recent years. Among established autonomous observation software systems, the RTS2 has a variety of advantages and has

relatively more attention. However, the RTS2 does not provide any function for remote access and control. In this paper, we have an in-depth study on installing in an RTS2 system function callings and data-access interfaces based on the XML-RPC technology. We provide a prototype of a terminal system for autonomous telescope control based on the XML-RPC. We present the details of the source codes including descriptions of interface functions and interface parameters. Our experimental results show that the XML-RPC based methods are simple for expanding the applications of an RTS2 system. These methods could also be helpful for further development of autonomous observation systems.

XML-RPC; RTS2; Autonomous observation

CN53-1189/PISSN1672-7673

TP311.11

A

1672-7673(2013)04-0372-06

國(guó)家自然科學(xué)基金 (11203011) 資助.

2012-11-20;修定日期:2012-12-21

冉凡輝,男,碩士. 研究方向:天文技術(shù)與方法. Email: rff@cnlab.net

鄧 輝,女,教授. 研究方向:計(jì)算機(jī)應(yīng)用技術(shù). Email: dh@cnlab.net

猜你喜歡
服務(wù)端調(diào)用望遠(yuǎn)鏡
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
系統(tǒng)虛擬化環(huán)境下客戶機(jī)系統(tǒng)調(diào)用信息捕獲與分析①
神奇的千里眼——望遠(yuǎn)鏡
打造最大望遠(yuǎn)鏡
新時(shí)期《移動(dòng)Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
超級(jí)望遠(yuǎn)鏡頭
“趕緊送幾架望遠(yuǎn)鏡過(guò)來(lái)!”等7則
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
摸清黑客套路防范木馬侵入
C++語(yǔ)言中函數(shù)參數(shù)傳遞方式剖析
泰和县| 唐河县| 隆德县| 辽阳市| 澜沧| 翁牛特旗| 红桥区| 通海县| 都江堰市| 明溪县| 三原县| 杭锦后旗| 汉川市| 措勤县| 喀喇| 克东县| 沂源县| 凭祥市| 金塔县| 弥渡县| 天等县| 滕州市| 漳浦县| 收藏| 白玉县| 威海市| 衡水市| 江油市| 沈阳市| 伊宁县| 罗甸县| 陆河县| 高清| 肥城市| 山阳县| 和林格尔县| 白河县| 城固县| 福泉市| 遵化市| 曲麻莱县|