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

?

基于句柄和腳本定制的試飛數(shù)據(jù)自動卸載工具

2016-09-08 09:23:24賈雨王爽劉升護(hù)
電子設(shè)計工程 2016年13期
關(guān)鍵詞:句柄配置文件腳本

賈雨,王爽,劉升護(hù)

(中國飛行試驗研究院 陜西 西安 710079)

基于句柄和腳本定制的試飛數(shù)據(jù)自動卸載工具

賈雨,王爽,劉升護(hù)

(中國飛行試驗研究院 陜西 西安710079)

試飛數(shù)據(jù)卸載及位流分析是飛行試驗中的一個重要環(huán)節(jié),直接影響著飛行試驗結(jié)果分析的及時性和有效性。本文提出了基于句柄和腳本定制相結(jié)合的試飛數(shù)據(jù)自主卸載工具,通過配置文件按照操作句柄或腳本設(shè)定的操作流程,自動調(diào)用相應(yīng)的卸載和位流分析軟件進(jìn)行數(shù)據(jù)卸載分析。經(jīng)過實踐使用表明,該工具緩解了傳統(tǒng)數(shù)據(jù)卸載耗費大量人力的問題,同時確保了試飛數(shù)據(jù)的及時性和準(zhǔn)確性。

試飛數(shù)據(jù);數(shù)據(jù)卸載;位流分析;句柄;腳本

飛行試驗是在真實飛行條件下進(jìn)行的科學(xué)研究和產(chǎn)品試驗,是航空航天科技發(fā)展的重要手段,是航空產(chǎn)品研制和鑒定的必須環(huán)節(jié),是為用戶摸索和積累經(jīng)驗的有效途徑。試飛數(shù)據(jù)處理的對象是經(jīng)由測試系統(tǒng)在飛行試驗或地面試驗進(jìn)行中所采集到的實驗數(shù)據(jù),然后按照試飛課題要求對采集到的試驗數(shù)據(jù)進(jìn)行加工、整理、分析,使得課題人員及時掌握飛行情況,診斷和檢測飛行參數(shù)的質(zhì)量,給出在試驗狀態(tài)下飛行任務(wù)完成情況,以保證飛行安全和提高試飛質(zhì)量,最終得到評價試驗對象的有用信息,它是航空武器裝備定型、鑒定最重要的依據(jù)。

目前,試飛數(shù)據(jù)的事后處理是在飛行結(jié)束之后地面卸載人員將機(jī)載記錄器記錄的飛行數(shù)據(jù)通過專業(yè)卸載軟件卸載到數(shù)據(jù)服務(wù)器上并根據(jù)需要進(jìn)行位流分析,然后提供給數(shù)據(jù)處理人員進(jìn)行數(shù)據(jù)的預(yù)處理與二次處理。隨著科技的進(jìn)步和測試技術(shù)的發(fā)展,飛行試驗過程中的測試參數(shù)與日劇增,而且由于試飛架次的不斷增加,試飛數(shù)據(jù)量也隨之增大,然而目前數(shù)據(jù)卸載都是通過地面卸載人員手動完成,導(dǎo)致數(shù)據(jù)卸載變得愈加繁重和花費時間,對數(shù)據(jù)的快速處理要求帶來很大挑戰(zhàn)。

針對以上問題,文中提出了基于句柄和腳本定制相結(jié)合的自主卸載工具,在需要進(jìn)行數(shù)據(jù)卸載時用戶只需要編寫一個簡單的配置文件,卸載工具只需要根據(jù)配置文件控制相關(guān)句柄或解析相應(yīng)動作腳本,即可自動控制卸載軟件進(jìn)行試飛數(shù)據(jù)卸載和位流分析,節(jié)省了大量的人工操作時間,有效提高了數(shù)據(jù)卸載的工作效率,而且還可以防止人為因素而引起的錯誤,保證飛行試驗數(shù)據(jù)卸載的準(zhǔn)確性、及時性及完整性。

1 自主卸載工具設(shè)計

軟件控制指在自己的程序中針對某些特定的應(yīng)用軟件模擬人的行為實現(xiàn)自動控制,軟件控制使得我們能將現(xiàn)已經(jīng)成型的第三方一系列相關(guān)軟件集成為一個大的應(yīng)用,大大地節(jié)約了系統(tǒng)開發(fā)時間。在本文中我們利用Windows系統(tǒng)的消息機(jī)制,在合適的時刻獲取目標(biāo)程序的相應(yīng)句柄,模擬Windows系統(tǒng)向其適當(dāng)窗口發(fā)出相應(yīng)的消息實現(xiàn)數(shù)據(jù)卸載和位流分析。同時考慮到第三方軟件升級等變動造成的窗口句柄實效,我們還實現(xiàn)了軟件的腳本控制功能,用戶可以根據(jù)需要選擇現(xiàn)有腳本或者自己編寫腳本對第三方軟件進(jìn)行控制進(jìn)行數(shù)據(jù)卸載和位流分析。

自主卸載工具的最主要目的是將地面卸載人員從重復(fù)繁瑣的卸載軟件操作中解放出來,減少卸載人員的工作量,因此,軟件設(shè)計只需要用戶讀取定義的一組配置信息文件,卸載工具通過運行相應(yīng)的操作配置文件,自動調(diào)用相關(guān)的卸載軟件和位流分析軟件進(jìn)行試飛數(shù)據(jù)的卸載及位流分析,極大減輕了卸載人員的工作量,同時保證試飛數(shù)據(jù)卸載及位流分析的完整性和有效性。卸載工具的工作流程定義如圖1所示。

圖1 工作流程

用戶配置文件為一個規(guī)范化的文本文檔,自主卸載工具讀取一段完整的用戶配置定義后根據(jù)用戶選擇利用Windows系統(tǒng)的消息機(jī)制控制句柄或者調(diào)用腳本解析模塊解析相應(yīng)腳本動作文件,模擬按鍵操作控制相應(yīng)的卸載軟件及位流分析軟件,卸載工具的用戶配置管理、句柄獲取與控制、動作腳本文件的解析以及日志記錄功能通過C++[1]開發(fā)環(huán)境編程實現(xiàn)。當(dāng)卸載分析軟件開始工作時,自主卸載工具停止繼續(xù)解析配置文件,而是不斷檢測當(dāng)前卸載分析軟件是否運行完畢,當(dāng)檢測到當(dāng)前的卸載分析軟件運行完畢時,關(guān)閉當(dāng)前軟件,用戶配置管理讀取下一段完整的用戶配置定義開始下一個卸載操作控制直至用戶配置文件執(zhí)行完畢。在下文中將著重介紹基于Windows系統(tǒng)的消息機(jī)制句柄控制模塊、腳本定義及解析模塊、戶配置模塊及日志記錄模塊。

2 Windows系統(tǒng)的消息機(jī)制句柄控制

2.1Windows消息機(jī)制概述

Windows是消息驅(qū)動的系統(tǒng)。Windows應(yīng)用程序的鍵盤或鼠標(biāo)等的輸入由Windows系統(tǒng)以消息的形式送給應(yīng)用程序窗口。系統(tǒng)將會維護(hù)一個或多個消息隊列,所有產(chǎn)生的消息都會被放入或是插入隊列中。系統(tǒng)會在隊列中取出每一條消息,根據(jù)消息的接收句柄而將該消息發(fā)送給擁有該窗口的程序的消息循環(huán)。每一個激活程序在循環(huán)中獲得屬于自己的消息并根據(jù)接收窗口的句柄控制相關(guān)窗口過程。這就是Windows操作系統(tǒng)的消息機(jī)制。消息的數(shù)據(jù)結(jié)構(gòu)如下:

在Windows程序中,消息是由MSG結(jié)構(gòu)體來表示的。MSG結(jié)構(gòu)體的定義如下[2]:

Typedef struct tagMsg{

HWND hwnd;

UNIT message;

WPARAM wParam;

LPARAM lParam;

DWORD time;

POINT pt;

}MSG;

其中,hwnd表示目標(biāo)窗口的句柄。Message指定了消息類型。在Windows中,消息是由一個數(shù)值來表示的,不同的消息對應(yīng)不同的數(shù)值。wParam和lParam用于指定消息的附加信息。time表示消息產(chǎn)生的時間,pt則是消息產(chǎn)生時鼠標(biāo)在屏幕中的位置坐標(biāo)。

2.2卸載軟件和位流分析軟件控制技術(shù)

上面介紹了Windows系統(tǒng)的消息機(jī)制,自主卸載工具要控制卸載軟件和位流分析軟件,還須要弄清楚兩個問題,如何獲取卸載軟件和位流分析軟件的對應(yīng)窗口的句柄和如何向該窗口發(fā)送消息。

2.2.1獲取窗口句柄

Windows中用窗口句柄(Handle)來標(biāo)識一個窗口。有句柄的控件本質(zhì)上都是一個窗體(window),它們可以獨立存在,可以作為其它控件的容器,而沒有句柄的控件,如Label,是不能獨立存在的,只能作為窗口控件的子控件。窗口分為主窗口和子窗口,并且子窗口中還有子窗口。在這里我們利用SPY++工具來確定每一窗口(包括有句柄的控件)之間的從屬關(guān)系,SPY++以清晰的樹狀結(jié)構(gòu)表示窗口的父窗口和子窗口。

要找到卸載軟件和位流分析軟件的某一控件,必須首先找出其窗口,再逐級的找出子窗口,直至找到想要控制的控件。要獲得窗體/控件的句柄,你先用SPY++獲得它的類名或窗口標(biāo)題,如位流分析軟件PCMDUMP窗口標(biāo)題為“PCM數(shù)據(jù)文件檢查”,然后用 FindWindow即可獲得其句柄,如PCMDUMP句柄

hWnd=::FindWindow(NULL,"PCM數(shù)據(jù)文件檢查");

其他窗體/控件也類似,只要用SPY++選獲得窗體從屬關(guān)系,便可以一步步用FindWindow或FindWindowEx獲得其句柄。

2.2.2發(fā)送Windows消息到受控窗體/控件

發(fā)送消息到指定卸載軟件或位流分析軟件的窗體/控件是通過以下兩個Windows API函數(shù)完成的:SendMessage和PostMessage。兩個函數(shù)的區(qū)別在于:PostMessage函數(shù)是非阻塞的,只是向線程消息隊列中添加消息,添加完之后立即返回。而SendMessage是非阻塞的,它并不是把消息加入到隊列里,而是直接翻譯消息和調(diào)用消息處理,直到消息處理完成后才返回。

應(yīng)用程序窗口一般有按鈕、文本框、菜單、滾動條等不同的要素組成,要控制一個可控的控件,可以通過SendMessage這個API函數(shù)發(fā)送特定的消息,我們可以借助于SPY++工具,通過工具的“Message Log”功能,先進(jìn)行一次類似操作,再查看該操作所須要的SendMessage函數(shù)的參數(shù)值。

1)控制菜單欄

要實現(xiàn)對菜單的控制,首先要去的菜單的標(biāo)識信息,Windows應(yīng)用程序的菜單是一個為樹狀結(jié)構(gòu),要取得菜單項的句柄就得從樹根出發(fā)逐級而下獲得。利用Windows API函數(shù)GetMenu取得主菜單的句柄,然后再用GetSubMenu取得子菜單的句柄,而取得菜單標(biāo)識項則調(diào)用GetMenuItemID。得到了菜單項的標(biāo)識后,就可以同過發(fā)送WM_COMMAMD消息選擇控制菜單項了。

::PostMessage(hParentWnd,WM_COMMAND,(WPARAM)menuid,NULL);

2)控制按鈕

按鈕的控制是向按鈕句柄發(fā)送CLICK消息。

::SendMessage(hChildWnd6,BM_CLICK,0,MAKELPARAM (2,2);

3)控制文本輸入

實現(xiàn)文本的輸入,是向文本框發(fā)送WM_SETTEXT消息,例如向文本框輸入一段文字,文字存放在str中。

str=m_FrameSet_Number;

::SendMessage(hChildWnd,WM_SETTEXT,0,(LPARAM)_T (str.c_str());

3 腳本及腳本定義解析

當(dāng)卸載軟件或位流分析軟件版本發(fā)生變化時,如果不更新自主卸載工具繼續(xù)使用句柄控制會導(dǎo)致句柄獲取實效,無法繼續(xù)完成相關(guān)操作,在這里,我們?yōu)橛脩籼峁┠_本控制功能,用戶可以利用現(xiàn)有腳本或自定義動作腳本有效控制卸載軟件或位流分析軟件。

3.1腳本定義

隨著計算機(jī)的運算速度不斷提高,編程的方法和技術(shù)的不斷演變,面向軟件組件結(jié)構(gòu)的系統(tǒng)設(shè)計方法逐漸為眾多的開發(fā)者所接受。程序開發(fā)的觀念正發(fā)生著變化:從使用高級程序設(shè)計語言編寫應(yīng)用程序向結(jié)合腳本語言[3]開發(fā)應(yīng)用程序過渡[4]。高級程序設(shè)計語言主要是用于構(gòu)造帶有復(fù)雜數(shù)據(jù)結(jié)構(gòu)和算法的組件。而腳本語言則是一種“穿線的語言”或“系統(tǒng)集成語言,它總是假設(shè)已經(jīng)存在一個功能強(qiáng)大的組件集合,而運用腳本語言編程的目的就是根據(jù)應(yīng)用需求粘貼組合這些組件,形成一個實際的應(yīng)用系統(tǒng)。腳本語言具有以下優(yōu)點[2]:腳本語言的無類型性;腳本語言的被解釋執(zhí)行;腳本語言的簡單性;腳本語言的高效性。

在試飛數(shù)據(jù)卸載和位流分析過程中,卸載人員都是經(jīng)過一個既定的操作流程操作一系列的卸載軟件和位流分析軟件組合完成試飛數(shù)據(jù)卸載分析工作,為了完成試飛數(shù)據(jù)的自動卸載和位流分析,在程序中需要定義一套完整的動作腳本語句。通過粘貼組合這些腳本語句,可以形成對某個卸載分析軟件進(jìn)行完整操作的操作配置文件定義,然后利用C++編寫的腳本解析模塊自動解析該操作配置文件文件,最終實現(xiàn)試飛數(shù)據(jù)的自動卸載及位流分析。具體腳本操作定義如下所示:

#以"#"開頭的行為注釋行

[SLEEP]暫停時間(以秒計算)

[RUN]SIZE=[NORMAL(default)|MAX|MIN] " filepath""Para"

[OPEN]SIZE=[NORMAL(default)|MAX|MIN]"filepath"

[ACTIVE]"Feature"

[CLOSE]"Feature"

[MOUSEMOVE] x、y

[LCLICK]

[RCLICK]

[LDBLCLICK]

[KEYPRESS]STRING

[KEYDOWN]Char

[KEYUP]Char

[SCREENSAVE]

[SUSPEND]

[PAUSE]STRING

3.2解析模塊

盡管對于粘貼型和系統(tǒng)集成型應(yīng)用程序,用腳本語言能以幾乎快10倍左右的速度開發(fā),但是對于包含復(fù)雜數(shù)據(jù)結(jié)構(gòu)和算法的系統(tǒng),高級編程語言的類型性能夠使應(yīng)用程序更容易控制。在那些運行速度要求很高的地方,高級編程語言能以比腳本語言快10到20倍的速度運行。而且腳本編程所使用的組件都需要用高級編程語言精心組織和編寫。顯然,兩類語言具有很強(qiáng)的互補性。把它們結(jié)合起來使用就能產(chǎn)生強(qiáng)大功能的編程環(huán)境:高級編程語言用于生成組件,腳本語言把它們組合起來構(gòu)成應(yīng)用程序。

通過腳本語句的粘貼組合形成的腳本文件,自動卸載工具可以快速輕松的實現(xiàn)不同的應(yīng)用需求,同時,卸載工具需要“解釋”這些腳本文件,要根據(jù)腳本定義的不同需求來控制相應(yīng)的位流分析和卸載軟件,即能夠?qū)δ_本文件解析執(zhí)行。這些是腳本語言本身無法實現(xiàn)的,因此,該卸載工具利用C++編寫腳本解析模塊從而根據(jù)解析情況進(jìn)行相關(guān)卸載及位流分析軟件的操作,實現(xiàn)腳本文件的解析功能。

解析模塊由分解源程序、語句解釋、表達(dá)式解析器和語法錯誤處理幾部分組成。解釋器對源程序進(jìn)行邊解釋邊執(zhí)行。在整個程序的解釋執(zhí)行當(dāng)中,若出現(xiàn)語法錯誤,就執(zhí)行語法錯誤處理程序,提醒用戶腳本文件編寫錯誤。解析模塊的結(jié)構(gòu)如圖2所示。

圖2 解析模塊結(jié)構(gòu)

語句解釋是整個解析模塊的關(guān)鍵部分,每一個語句對應(yīng)于一個方法,在一個循環(huán)里面對程序的所有語句進(jìn)行解釋。每個語句的第一個“令牌”是關(guān)鍵字,根據(jù)關(guān)鍵字,調(diào)用相應(yīng)的方法進(jìn)行解釋,解析模塊能夠自動地在自定義的動作對象和鍵盤鼠標(biāo)操作之間根據(jù)名稱一致性的原則實現(xiàn)屬性和方法的對應(yīng),例如當(dāng)在腳本片斷中執(zhí)行定義的行為描述“[KEYPRESS]ALT+F4”,那么就會模擬相應(yīng)的鍵盤組合操作。在這里,我們通過HOOK技術(shù)[5],利用WINDOWS的消息機(jī)制實現(xiàn)鼠標(biāo)鍵盤動作的模擬。HOOK技術(shù)即鉤子技術(shù)。在Windows系統(tǒng)中,鉤子是一種特殊的消息處理函數(shù)[6]。鉤子可以監(jiān)視系統(tǒng)或進(jìn)程中的各種事件消息,截獲發(fā)往目標(biāo)窗口的消息并進(jìn)行處理。這樣,我們就可以在系統(tǒng)中安裝自定義的鉤子,監(jiān)視系統(tǒng)中特定事件的發(fā)生,完成特定的功能,比如截獲鍵盤、鼠標(biāo)的輸入和日志監(jiān)視等等。

4 用戶操作組件實現(xiàn)

用戶操作控制組件主要基于vc6.0開發(fā)環(huán)境完成。操作界面如圖3所示。用戶可通過加載運行配置文件進(jìn)行數(shù)據(jù)卸載。

圖3 工具操作界面

4.1配置文件實現(xiàn)

用戶通過編輯配置文件組織數(shù)據(jù)的卸載分析流程,一個配置文件由幾組規(guī)范化的配置定義組成,每一組配置定義完成一個特定的數(shù)據(jù)卸載或位流分析操作,如FTrans卸載、PCM數(shù)據(jù)位流分析。由于每架飛機(jī)試飛數(shù)據(jù)數(shù)據(jù)類型相對穩(wěn)定,而且卸載結(jié)果數(shù)據(jù)存儲路徑固定,配置文件經(jīng)過一次編輯定義好一組卸載操作流程,以后只需要極小的修改即可完成一個飛行架次的數(shù)據(jù)卸載,自主卸載工具根據(jù)配置文件調(diào)用相關(guān)的卸載軟件完成試飛數(shù)據(jù)的卸載任務(wù),配置文件如下所示:

#****************************D40f卸載

**************************

Begin:

Type:D40f

TestIni:FTrans.ini

Exe_FileName:

Source_FileName:D:JY est33120140630-1DATaRec.Raw

Result_FileName:D:JY est33120140630-1-pcm

Video_Dir:D:JY est33120140630-1-video

Drc:D:JY est331970#Script.Drc

End

#*************************位流分析-PCM

***************************

Begin:

Type:PCM

TestIni:PCMDUMP_PCM.ini

Exe_FileName:

Source_FileName:D:JY est33120140630-1DCM1.pcm

Result_FileName:D:JY est33120140630-1DCM1.DCM

FrameSet_Number:970-1

End

4.2卸載日志生成

日志文件記錄了卸載工具運行的運行狀態(tài),如運行開始時間記錄,執(zhí)行的卸載位流分析操作類型記錄,操作中的關(guān)鍵步驟以及錯誤信息的記錄,同時還對運行過程中的節(jié)點狀態(tài)進(jìn)行截圖保存。通過查看卸載日志和節(jié)點狀態(tài)截圖,用戶可以準(zhǔn)確掌握卸載工具的運行狀態(tài)和分析結(jié)果數(shù)據(jù)的正確性和完整性,保證試飛數(shù)據(jù)卸載及位流分析的正確性,為課題分析提供準(zhǔn)確有效的試飛數(shù)據(jù)。

5 結(jié)束語

基于句柄和腳本定制的試飛數(shù)據(jù)自動卸載工具實現(xiàn)了句柄獲取與控制模塊、格式化的操作腳本定以及解析模塊和用戶配置模塊,有效解決了飛行試驗數(shù)據(jù)卸載耗費大量人力的難題,提高了數(shù)據(jù)卸載的工作效率,同時還具備日志記錄功能和關(guān)鍵畫面截取功能,防止人為因素而引起的錯誤,保證飛行試驗數(shù)據(jù)卸載的準(zhǔn)確性和有效性。

[1]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

[2]OUSTERHOUT J K.Scripting:Higher Level Programming for the 21st Century[J].IEEE Computer,1998,31(3):23-30.

[3]邵堃,劉宗田.腳本語言發(fā)展研究[J].計算機(jī)科學(xué),2000,27(1): 21-23.

[4]劉克勝,王忠壽.API Hook關(guān)鍵技術(shù)解析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2006(11):48-50.

[5]崔紅志,索巖基.基于API的Win32串口通信編程技術(shù)[J].科技信息,2010(7):80-81.

[6]殷振嶺,商書風(fēng).系統(tǒng)鉤子與鍵盤監(jiān)控[J].信息技術(shù)與信息化,2004(5):26-28.

Design of a flight test data independent downloading tool based on handle and script designing

JIA Yu,WANG Shuang,LIU Sheng-hu
(Chinese Flight Test Establishment,Xi'an 710079,China)

Data downloading and bits analysing is a very important step of flight test,which affects the level of the flight test results analysis transitive and validity.In this paper we proposed a self-determinative downloading tool based on handle and script designing.It can automatic call downloading or analyzing software to download or analyze flight test data throw configure file.substantial evidence the tool can reduce people's work effectively,and insure the transitive veracity of the flight test data at the same time.

flight test data;data downloading;bits analyzing;handle;script

TN06

A

1674-6236(2016)13-0045-04

2015-07-08稿件編號:201507067

賈 雨(1988—),男,陜西府谷人,碩士研究生,助理工程師。研究方向:試飛遙測監(jiān)控與數(shù)據(jù)處理。

猜你喜歡
句柄配置文件腳本
酒駕
提示用戶配置文件錯誤 這樣解決
安奇奇與小cool 龍(第二回)
搭建簡單的Kubernetes集群
互不干涉混用Chromium Edge
忘記ESXi主機(jī)root密碼怎么辦
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
電子測試(2018年14期)2018-09-26 06:04:24
高校圖書館持久標(biāo)識符應(yīng)用研究
快樂假期
編譯程序語法分析句柄問題分析與探討
舟曲县| 津市市| 盈江县| 中山市| 东乡县| 呼图壁县| 百色市| 宜兰县| 宝应县| 永清县| 肥西县| 文山县| 天祝| 四平市| 沅江市| 墨竹工卡县| 高唐县| 汶上县| 固镇县| 绥滨县| 新巴尔虎右旗| 汤阴县| 顺昌县| 海城市| 巩义市| 昌江| 大田县| 达孜县| 福鼎市| 砚山县| 图们市| 天水市| 青州市| 色达县| 石景山区| 高青县| 资源县| 漾濞| 离岛区| 红原县| 长葛市|