屈景怡,陳鐘玉,吳仁彪
(中國民航大學(xué) 天津市智能信號與圖像處理重點實驗室,天津300300)
通航飛行服務(wù)站由監(jiān)控指揮系統(tǒng)、飛行計劃處理、沖突探測、航行情報服務(wù)系統(tǒng)、適配參數(shù)系統(tǒng)等多個子系統(tǒng)組成[1,2]。其中,適配參數(shù)系統(tǒng)的主要功能是對通航飛行服務(wù)站中各子系統(tǒng)的參數(shù)進(jìn)行配置管理,并以配置文件的形式發(fā)布最新的參數(shù)配置[3]。
在民用航空空管自動化系統(tǒng)中,由于飛行流程和飛行參數(shù)等都是固定的,對于配置的靈活性要求并不高[4]。通航飛行服務(wù)站分為基本型、增強(qiáng)型和應(yīng)急型3種,需要根據(jù)不同的作業(yè)環(huán)境對各子系統(tǒng)進(jìn)行靈活的配置。比如,基本型和增強(qiáng)型飛行服務(wù)站所配備的軟件模塊種類、數(shù)量是不同的;應(yīng)急型的飛行服務(wù)站要求能夠根據(jù)工作地點進(jìn)行實地靈活配置。針對通航飛行服務(wù)站的特點,本文提出了一種基于自定義腳本的方法,用于實現(xiàn)通航適配參數(shù)的靈活配置。
適配參數(shù)系統(tǒng),簡稱DMS (data management system),它的主要功能是對系統(tǒng)參數(shù)進(jìn)行配置與管理。因此,適配參數(shù)系統(tǒng)的設(shè)計主要包括配置文件格式的設(shè)計和用戶界面的設(shè)計兩部分。
適配參數(shù)包括通航飛行服務(wù)站的地理參數(shù)、雷達(dá)參數(shù)、ADS-B參數(shù)、飛行計劃相關(guān)參數(shù)和多源航跡融合參數(shù)等。這些數(shù)據(jù)按功能模塊劃分,以配置文件的形式進(jìn)行存儲,在通航飛行服務(wù)站各軟件模塊啟動時作為初始化信息使用。這些數(shù)據(jù)一般是Name-Value形式的數(shù)據(jù),結(jié)構(gòu)簡單,不存在復(fù)雜的嵌套結(jié)構(gòu)。目前常用的適配參數(shù)配置文件形式為INI文件和XML文件。表1給出兩種文件形式的對比。其中,代碼量和處理時間均是采用兩層結(jié)構(gòu)對控件信息進(jìn)行描述的情況下,對100個控件信息多次進(jìn)行解析和處理統(tǒng)計所得。

表1 INI與XML的對比
從表1中可以清晰地看出INI和XML 文件的優(yōu)缺點。對于小數(shù)據(jù)量、層次結(jié)構(gòu)簡單的文件,XML 比INI文件需要的處理時間長。XML雖然具有多平臺、支持?jǐn)?shù)據(jù)格式嵌套等明顯的優(yōu)勢,但是,是以增加代碼量為代價的。XML數(shù)據(jù)格式的靈活性將大大增加用戶界面實現(xiàn)的復(fù)雜度[5]。
而INI文件雖然不具有平臺和數(shù)據(jù)格式的靈活性,但是完全可以支持Name-Value格式的數(shù)據(jù)配置,簡單的數(shù)據(jù)格式也將使得用戶界面的實現(xiàn)更容易。由于通航飛行服務(wù)站使用的是統(tǒng)一的Windows操作系統(tǒng),所以不需要跨平臺特性。Windows相關(guān)的API提供了良好的接口,將大大提高易用性,節(jié)省系統(tǒng)開銷。因此,通航適配參數(shù)系統(tǒng)選用INI文件作為配置文件格式。
適配參數(shù)系統(tǒng)是一個具有操作界面的軟件。界面配置的靈活性將直接影響著軟件的靈活性。現(xiàn)行的適配參數(shù)系統(tǒng)都是固定的不可改動的界面。即一個配置文件對應(yīng)一個操作界面,每一個配置參數(shù)對應(yīng)一個唯一的控件和唯一的格式檢查語句。現(xiàn)行的適配參數(shù)系統(tǒng)的數(shù)據(jù)處理流程如圖1所示。
從圖1可以看出,現(xiàn)行的適配參數(shù)系統(tǒng)不具有可配置性的主要原因是控件與配置文件內(nèi)容一一綁定、格式和語法檢查與控件一一綁定。這種形式導(dǎo)致對配置文件中的任何一項做了增、刪、改等操作都將影響到界面的布局以及格式和語法檢查模塊接口設(shè)計。

圖1 現(xiàn)行DMS的實現(xiàn)流程
為了解決該問題,基于自定義腳本的適配參數(shù)系統(tǒng)將界面控件信息寫入自定義腳本,在軟件啟動時通過讀取腳本進(jìn)行控件的動態(tài)生成,實現(xiàn)了配置項選擇區(qū)域的可配置。并同時采用CMFCPropertyGridCtrl控件進(jìn)行配置文件的顯示,實現(xiàn)了文件內(nèi)容與控件的脫離。而文件內(nèi)容的格式與和語法信息則寫入格式控制腳本中,實現(xiàn)了文件格式校核可配置。圖2是本文采用的自定義腳本方法實現(xiàn)適配參數(shù)系統(tǒng)的流程。

圖2 基于自定義腳本的DMS實現(xiàn)流程
由圖1和圖2的對比可以看到,本文提出的基于自定義腳本的實現(xiàn)方法以腳本作為界面生成和格式校核過程中的信息來源,只需要進(jìn)行腳本的更改即可改變用戶界面以及數(shù)據(jù)格式限制方式[5-8]。基于自定義腳本的適配參數(shù)系統(tǒng)在配置和修改上十分靈活,適用于通航飛行服務(wù)站靈活多變的工作環(huán)境。
腳本是使用特定的描述性語言,依據(jù)一定的格式編寫的文件[9]。腳本的格式是腳本解釋器對腳本內(nèi)容進(jìn)行解析的依據(jù)。因此,腳本格式的設(shè)計關(guān)系到腳本的易用性以及腳本解釋器的工作效率。
基于自定義腳本的適配參數(shù)系統(tǒng)的腳本分為兩種:一種是用于界面生成以及界面控件響應(yīng)的界面腳本;一種是用于對參數(shù)的格式和語法進(jìn)行檢查的參數(shù)格式腳本。考慮到系統(tǒng)中采用的都是INI文件,相關(guān)接口已經(jīng)比較完善,因此,自定義腳本也均采用INI格式進(jìn)行編寫,即采用“節(jié)-鍵-鍵值”的層次結(jié)構(gòu)。
自定義界面腳本的主要作用是生成用戶界面。基于自定義腳本的適配參數(shù)系統(tǒng)的界面是通過動態(tài)創(chuàng)建控件生成的[10,11]。動態(tài)創(chuàng)建控件時,需要的信息包括控件ID、控件位置以及控件樣式。在處理控件事件時,適配參數(shù)系統(tǒng)需要從界面腳本中獲取與控件關(guān)聯(lián)的子系統(tǒng)信息,因此,界面腳本設(shè)計如圖3所示。它詳細(xì)描述了控件 (CButton)的編號、位置以及與控件綁定的子系統(tǒng)信息。

圖3 界面腳本
圖3中,“001”是控件的編號; “Name”是與控件綁定的子系統(tǒng)名稱;其余內(nèi)容是控件的位置信息。由于控件的顯示區(qū)域所占的屏幕比例是固定的,腳本中同樣以百分比來限定控件的位置及大小以保證在不同的屏幕下界面布局正確。
自定義參數(shù)格式腳本對各子系統(tǒng)中的參數(shù)格式進(jìn)行了詳細(xì)描述。用戶對各子系統(tǒng)的配置文件進(jìn)行修改時,不一定能夠按照正確的參數(shù)格式進(jìn)行填寫或修改。因此,對用戶配置后的參數(shù)進(jìn)行格式檢查是十分必要的。自定義參數(shù)格式腳本能夠提供正確的格式描述,對用戶的操作進(jìn)行檢查及限定,從而保證用戶所做的操作是正確有效的。
根據(jù)統(tǒng)計,通航飛行服務(wù)站中各子系統(tǒng)的參數(shù)分為字符和數(shù)字兩種,參數(shù)格式要求大致分為取值范圍限定、小數(shù)精度限定、長度限定和數(shù)據(jù)類型限定等。自定義參數(shù)格式腳本中,主要采用 “格式類型關(guān)鍵詞/具體格式要求”的形式對參數(shù)的數(shù)據(jù)格式進(jìn)行描述。具體來說,自定義參數(shù)格式腳本中采用 “Range”、“Accuracy”、“Length”、“Data-Type”等作為格式描述關(guān)鍵詞,以分號作為 “具體格式要求”字段間的分隔標(biāo)記來對數(shù)據(jù)格式進(jìn)行描述。表2 是4類常用基本格式的腳本示例。

表2 常用基本格式腳本
在進(jìn)行配置文件管理時,是以配置文件為單位,參數(shù)名稱為子單元進(jìn)行的。參考INI文件的格式,格式校核腳本以文件名為節(jié)名稱,參數(shù)名稱為鍵名,格式描述為鍵值的形式進(jìn)行書寫[6]。
(1)基本格式的腳本示例:適配參數(shù)系統(tǒng)中有取值范圍、長度限制等幾種基本格式要求。圖4是取值范圍限制的腳本示例。圖4中描述的是:在配置文件“AIST_M(jìn)apOriLonLat.cfg”中,參數(shù) “Lon”和 “Lat”的取值范圍分別為 [0,180]和 [0,90]。當(dāng)用戶對 “AIST_M(jìn)apOriLon-Lat.cfg”文件進(jìn)行參數(shù)配置時,如果配置后的經(jīng)緯度參數(shù)“Lon”或 “Lat”不滿足相應(yīng)的取值范圍則會出現(xiàn)告警信息。

圖4 基本格式腳本
(2)組合格式的腳本示例:有時,某些參數(shù)的格式用基本格式腳本不能進(jìn)行完整的描述。比如,對于數(shù)字類型的參數(shù)可能不只有取值范圍限定還有長度限定和小數(shù)精度限定等要求。這時,可以采用組合格式腳本進(jìn)行描述。實際上,對于字符型的參數(shù),其格式要求只可能為長度限制或者固定取值選項兩種,不存在組合情況。因此,組合格式是針對數(shù)字型參數(shù)提出的。其腳本形如:“Range/取值范圍~數(shù)據(jù)類型/長度限定”。圖5 是組合格式的腳本示例。圖5 中描述的是:在配置文件 “AIST_M(jìn)apOriLonLat.cfg”中,參數(shù) “Para”應(yīng)該是取值范圍為 [0,180],數(shù)據(jù)長度不超過10的浮點數(shù)。

圖5 組合格式腳本
(3)多字段參數(shù)格式的腳本示例:所謂多字段的參數(shù)是指由多個字段按照一定的格式組成的參數(shù)。比如,多源航跡融合軟件中的 “Location”參數(shù)就是一個多字段參數(shù)。該參數(shù)記錄的是初始地理位置信息,由3個取值范圍不同的數(shù)字組成,分別表明經(jīng)緯度和高度,它們之間用逗號隔開。可以看出,“Location”的格式要求無法使用基本格式腳本和組合格式腳本進(jìn)行描述。這時,可以使用多字段參數(shù)格式腳本。
多字段參數(shù)格式的關(guān)鍵字為 “MixCombin”,格式為“MixCombin/字段名稱1~分隔符名稱1~字段名稱2~分隔符名稱2……”。其中,分隔符名稱有預(yù)定義,程序可自動識別。多字段參數(shù)格式腳本的書寫方法是:首先,對參數(shù)進(jìn)行整體形式的描述;然后,分別以各字段名稱為節(jié)名稱對分字段格式進(jìn)行描述。以 “Location”為例,其格式腳本如圖6所示。

圖6 多字段參數(shù)格式腳本
自定義腳本解釋模塊是將腳本最終轉(zhuǎn)化為具體界面并使得系統(tǒng)具有格式校核功能的核心模塊。根據(jù)自定義腳本的劃分,腳本解釋模塊分為界面腳本解釋模塊和參數(shù)格式腳本解釋模塊。
基于自定義腳本的適配參數(shù)系統(tǒng)在軟件啟動時,通過讀取界面腳本完成控件的動態(tài)創(chuàng)建從而完成界面的生成。控件的事件則通過讀取腳本中的控件信息,根據(jù)信息內(nèi)容進(jìn)行響應(yīng)處理。即界面腳本的解析分為兩部分:界面的動態(tài)創(chuàng)建和控件事件的響應(yīng)處理。
(1)界面的動態(tài)創(chuàng)建:界面腳本中詳細(xì)記錄了界面上控件的位置、編號等信息。按照界面腳本完成各控件的動態(tài)創(chuàng)建即可生成用戶界面。圖7為通過自定義界面腳本生成界面的過程。

圖7 界面的動態(tài)創(chuàng)建流程
(2)控件事件的響應(yīng)處理:當(dāng)用戶進(jìn)行界面操作觸發(fā)了控件事件的時候,系統(tǒng)獲取控件的編號并以編號為關(guān)鍵字查找腳本獲得相應(yīng)的模塊信息,進(jìn)而對控件事件進(jìn)行響應(yīng)處理。圖8為控件事件的響應(yīng)處理過程。
參數(shù)格式腳本的格式是以配置文件名稱為節(jié)名稱,參數(shù)名稱為鍵名,參數(shù)格式描述為鍵值進(jìn)行編寫的。因此,在校核參數(shù)格式時,首先以文件名稱和參數(shù)名稱為關(guān)鍵字進(jìn)行查找,然后對獲得的鍵值進(jìn)行解析,進(jìn)而獲得參數(shù)格式的具體描述,完成對數(shù)據(jù)的校核。即格式腳本的解析分為兩部分:格式信息的讀取和格式描述語句的解析[12]。
(1)描述語句的讀取:Windows系統(tǒng)中提供了讀寫INI文件的API接口,在已知文件路徑、節(jié)名稱、鍵名稱的條件下,可以直接調(diào)用相關(guān)函數(shù)獲取鍵值。在進(jìn)行格式校核時,腳本文件路徑已知,配置文件名稱即為節(jié)名稱,參數(shù)名稱即為鍵名稱,因此,可直接獲取其鍵值,即格式描述語句。例如,用戶對“AIST_M(jìn)apOriLonLat.cfg”中的參數(shù)“Para”進(jìn)行了修改,則描述語句的讀取過程如圖9所示。
(2)描述語句的解析:格式描述語句的格式為 “格式類型關(guān)鍵字/具體格式要求/長度限制 (可缺省)”。其中,“具體格式要求”以 “;”為分隔符進(jìn)行字段的區(qū)分。按照該格式特點,對格式描述語句進(jìn)行解析時,首先以 “/”為分隔符區(qū)分格式類型、具體格式要求及長度限制;然后以“;”為分隔符對具體格式描述進(jìn)行拆分,從而獲得完整的格式要求。格式要求在程序中被細(xì)化為取值范圍、長度限制、固定取值范圍等內(nèi)容,從而可以對用戶的操作進(jìn)行格式檢查。以格式描述 “Range/0;180/Max10”為例,其解析過程如圖10所示。

圖9 描述語句的讀取流程

圖10 描述語句的解析流程
腳本是適配參數(shù)系統(tǒng)界面生成及數(shù)據(jù)校核的基本依據(jù)。腳本的正確性直接決定適配參數(shù)系統(tǒng)能否正常工作。因此,腳本解釋模塊需要具有處理異常腳本的能力。腳本中常出現(xiàn)的錯誤包括大小寫錯誤、不完整腳本描述和分割標(biāo)識符錯誤等。目前,基于自定義腳本的適配參數(shù)系統(tǒng)對異常的腳本具有一定的容錯機(jī)制,主要包括:
(1)不可識別的關(guān)鍵詞:對關(guān)鍵詞的大小寫進(jìn)行檢測和轉(zhuǎn)換,如果屬于大小寫錯誤,則系統(tǒng)直接進(jìn)行糾正;否則,輸出告警信息。
(2)不完整的腳本描述:對于控件位置信息等腳本不完整的情況,直接使用系統(tǒng)中的默認(rèn)參數(shù)進(jìn)行設(shè)置;否則,輸出告警信息。
(3)不可識別的分割標(biāo)識:依次遍歷無法識別分割標(biāo)識的腳本,若查找到可識別內(nèi)容,則進(jìn)行處理;否則,輸出告警信息。
本文所提出的基于自定義腳本的通航飛行服務(wù)站適配參數(shù)系統(tǒng)的開發(fā)平臺為Windows操作系統(tǒng),編程語言為VC++。本文所提出的方法在上述平臺上成功通過測試,運行良好。該適配參數(shù)系統(tǒng)可以實現(xiàn)界面控件、參數(shù)數(shù)據(jù)以及參數(shù)格式校核功能等多項內(nèi)容的靈活的配置。表3是添加10個界面控件及相應(yīng)控件事件響應(yīng)時,傳統(tǒng)方法與本文方法工作量的對比。表4是為10個參數(shù)增加取值范圍限制時,傳統(tǒng)方法與本文方法工作量的對比。表3和表4中的數(shù)據(jù)均是經(jīng)過多次測試平均而得,并且只表示大略數(shù)量上的對比,不對應(yīng)具體數(shù)值。

表3 界面修改工作量對比

表4 格式修改工作量對比
為適應(yīng)通航飛行服務(wù)站靈活可配置的要求,本文提出了一種基于自定義腳本的適配參數(shù)系統(tǒng)的實現(xiàn)方法,并在自主研發(fā)的通航飛行服務(wù)站中使用。由實際測試結(jié)果可知,該系統(tǒng)完全滿足功能需求,在傳統(tǒng)的適配參數(shù)系統(tǒng)的基礎(chǔ)上,大大地提高了可配置性,使用十分靈活,與通航飛行服務(wù)站的特點十分契合。基于自定義腳本的方法對類似的工程應(yīng)用具有一定的參考價值。在下一步工作中,我們將進(jìn)一步優(yōu)化腳本的解析方法,提高腳本解釋模塊的容錯能力。
[1]ZHUANG Wenwu,LIU Guangcai,LI Zhangping.Countermeasures to accelerate the development of general aviation in China[J].Comprehensive Transportation,2008 (7):36-39(in Chinese).[莊文武,劉光才,李章萍.加快我國通用航空業(yè)發(fā)展的對策 [J].綜合運輸,2008 (7):36-39.]
[2]CHEN Xin,LI Cheng,XU Dinghai,et al.Research of general aviation service station function and composition [J].Avionics Technology,2013,44 (2):10-13 (in Chinese).[陳昕,李橙,徐丁海,等.通用航空服務(wù)站功能與組成研究[J].航空電子技術(shù),2013,44 (2):10-13.]
[3]YAO Jiao.Synopsis of data management system in ATC3000[J].Computer CD Software and Applications,2014 (10):125-127 (in Chinese).[姚姣.ATC3000系統(tǒng)數(shù)據(jù)管理子系統(tǒng)的簡介 [J].計算機(jī)光盤軟件與應(yīng)用,2014 (10):125-127.]
[4]ZHANG Xu.Research on monitoring technology of air traffic control[D].Chengdu:Southwest Jiaotong University,2011(in Chinese).[張旭.民航ATC 系統(tǒng)監(jiān)控技術(shù)研究 [D].成都:西南交通大學(xué),2011.]
[5]FENG Jun,SHENG Zhenyu,TANG Zhixian.Web interface automatic generation method based on XML schema[J].Computer Engineering and Design,2013,34 (4):1498-1503 (in Chinese). [馮鈞,盛振宇,唐志賢.基于XML Schema的Web界面生成方法 [J].計算機(jī)工程與設(shè)計,2013,34 (4):1498-1503.]
[6]ZHANG Jing,LI Xianbo,LI Ke,et al.An intelligent sequential operation scheme based on script language[J].Auto-mation of Electric Power Systems,2012,36 (6):112-115(in Chinese).[張靜,李先波,李科,等.基于腳本語言的智能程序化操作方案 [J].電力系統(tǒng)自動化,2012,36 (6):112-115.]
[7]NING Aijun,MAN Chunlei,YANG Guanglei.A method of software reuse based on XML [J].Software Guide,2009,8(6):38-40 (in Chinese).[寧愛軍,滿春雷,楊光磊.一種基于XML的軟件復(fù)用方法[J].軟件導(dǎo)刊,2009,8(6):38-40.]
[8]LI Zhihua,SHEN Zuyi.Design of general test platform for RFDI based on description language [J].Computer Engineering and Design,2008,29 (4):1021-1024 (in Chinese).[李志華,沈祖詒.基于腳本語言的雷達(dá)故障診斷通用平臺設(shè)計 [J].計算機(jī)工程與設(shè)計,2008,29 (4):1021-1024.]
[9]ZHANG Jinsheng.An approach for development of scriptdriven application system [D].Kunming:Yunnan University,2010 (in Chinese).[張錦盛.基于腳本驅(qū)動的應(yīng)用系統(tǒng)開發(fā)方法 [D].昆明:云南大學(xué),2010.]
[10]ZHANG Chengzhong,LI Min.Research of the application of the script language usage in the complicated game UI’s interface design [J].Information Technology and Informatization,2007 (3):48-50 (in Chinese).[張承忠,李敏.腳本語言在復(fù)雜用戶界面制作中的應(yīng)用研究 [J].信息技術(shù)與信息化,2007 (3):48-50.]
[11]ZHNAG Jianlei,WU Wenjiang.The implementation of CNC customizable interface based scripting language [J].Modular Machine Tool & Automatic Manufacturing Technique,2011(1):50-53 (in Chinese).[張建磊,吳文江.基于腳本語言的數(shù)控系統(tǒng)可定制界面的實現(xiàn) [J].組合機(jī)床與自動化加工技術(shù),2011 (1):50-53.]
[12]SUN Jing,TAN Xiaohui,ZHAO Huiqun,et al.Research and implementation of ball games scenario interpreter [J].Journal of Computer Applications,2010,30 (3):612-614(in Chinese).[孫晶,譚效輝,趙會群,等.球類比賽的腳本解釋器的研究與實現(xiàn) [J].計算機(jī)應(yīng)用,2010,30 (3):612-614.]