楊宛璐,應(yīng)艷茹,吳慧欽,王建普
(航空工業(yè)洪都,江西 南昌,330024)
飛行模擬器的設(shè)備眾多,各個(gè)模擬分系統(tǒng)的數(shù)據(jù)接口也越來(lái)越繁雜,以往人工手動(dòng)更改接口配置文件已經(jīng)不能滿足當(dāng)前的業(yè)務(wù)需求。本文設(shè)計(jì)一種基于WPF設(shè)計(jì)的配置工具,采用工程化的方式對(duì)所有接口文件進(jìn)行加載、保存,圖形化界面方式對(duì)所有模塊進(jìn)行編輯,對(duì)系統(tǒng)的數(shù)據(jù)接口文件進(jìn)行有效的管理。
數(shù)據(jù)采集配置軟件是飛行模擬器數(shù)據(jù)采集系統(tǒng)不可或缺的組成部分,主要實(shí)現(xiàn)對(duì)動(dòng)態(tài)接口及數(shù)采信號(hào)的定義,生成一定格式的配置文件,數(shù)采軟件通過(guò)讀取配置文件的信息,建立動(dòng)態(tài)接口和獲取數(shù)采信號(hào)詳細(xì)信息,軟件采用關(guān)系表的形式,通過(guò)主鍵(iID,子iID)建立動(dòng)態(tài)接口與數(shù)采信號(hào)變量的一一對(duì)應(yīng)關(guān)系,完成數(shù)據(jù)映射。編輯工具除具有生成和編輯數(shù)采信號(hào)文件、動(dòng)態(tài)接口文件的功能,還可在編輯配置文件過(guò)程中,對(duì)文件進(jìn)行唯一性判斷和安全性檢查,同時(shí),對(duì)同類型的配置文件具有文件合并的功能。
本系統(tǒng)采用WPF作為界面實(shí)現(xiàn)技術(shù),采用C#語(yǔ)言編寫邏輯代碼,主要介紹實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)配置軟件的WPF界面設(shè)計(jì)方法及技巧,旨在說(shuō)明如何高效設(shè)計(jì)出合理、易擴(kuò)展、友好的系統(tǒng)界面。
WPF是 Microsoft原有.NET框架和 DirectX的產(chǎn)物。WPF能夠運(yùn)用快速開(kāi)發(fā)的視覺(jué)效果以及特殊的用戶體驗(yàn)技術(shù)來(lái)建立與客戶的密切關(guān)系,使企業(yè)可以建立穩(wěn)定的數(shù)字客戶關(guān)系。
WPF提供統(tǒng)一的UI(用戶界面)平臺(tái)。因此,設(shè)計(jì)人員只需學(xué)習(xí)一個(gè)模式,就可以獲得無(wú)限可能的UI體驗(yàn)。對(duì)于.NET開(kāi)發(fā)人員,代碼量能減少到最佳用戶體驗(yàn)和通訊邏輯所需的行數(shù);對(duì)于設(shè)計(jì)人員,WPF提供的平臺(tái)可以消除內(nèi)容、媒體和應(yīng)用程序之間的邊界。最重要的是,WPF可以使開(kāi)發(fā)人員和設(shè)計(jì)人員同步緊密地合作來(lái)快速提供不同的體驗(yàn)[1]。
數(shù)采系統(tǒng)配置工具系統(tǒng)框架采用MVVM (Model-View-View-Mode)模式。該模式系統(tǒng)框架如圖1所示。View先綁定View Model,然后執(zhí)行一些命令向其請(qǐng)求動(dòng)作。View Model與Model通訊,通知響應(yīng)UI。這樣的通訊機(jī)制使得系統(tǒng)構(gòu)建十分容易。在系統(tǒng)界面和功能越來(lái)越松耦合的同時(shí),功能可測(cè)性越來(lái)越強(qiáng)[1]。
圖1 系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)界面采用WPF編程實(shí)現(xiàn),采用Visual Studio 2010和.Net Framework 4.0平臺(tái)架構(gòu)。
界面設(shè)計(jì)采用微軟的Expression Blend 4和Visual Studio 2010。Blend主要負(fù)責(zé)界面設(shè)計(jì),包括空間布局,背景色,控件樣式以及自定義控件;Visual Studio 2010主要完成界面上控件的響應(yīng)及界面之間的傳值,完成用戶與系統(tǒng)的信息交互。
基于WPF的數(shù)據(jù)采集配置可分為文件管理、模塊管理、數(shù)據(jù)管理、有效性檢測(cè)、系統(tǒng)管理五大部分(見(jiàn)圖 2)。
圖2 MVVM架構(gòu)圖
主窗口由三部分組成,標(biāo)題欄、菜單欄及左、右兩欄業(yè)務(wù)區(qū)(見(jiàn)圖3)。
圖3 主界面
1)菜單欄:通過(guò)菜單實(shí)現(xiàn)新建文件、打開(kāi)文件、保存文件等功能。
2)左側(cè)業(yè)務(wù)區(qū):通過(guò)加載文件顯示樹(shù)狀視圖節(jié)點(diǎn)信息,主要指加載XML文件節(jié)點(diǎn)信息,顯示各個(gè)層次節(jié)點(diǎn)屬性的信息。
3)右側(cè)業(yè)務(wù)區(qū):通過(guò)點(diǎn)擊左側(cè)樹(shù)狀圖的節(jié)點(diǎn)信息,以Tab頁(yè)形式顯示各個(gè)模塊的詳細(xì)信息。
該配置工具在子模塊的設(shè)計(jì)過(guò)程中將界面顯示功能與業(yè)務(wù)模塊盡量獨(dú)立,這樣可以減少它們之間的耦合,便于進(jìn)行維護(hù)和移植[3]。同時(shí)在配置過(guò)程中,進(jìn)行有效性檢測(cè),目的是為了配置出合格的數(shù)據(jù)文件。
子模塊通過(guò)自定義控件實(shí)現(xiàn),該系統(tǒng)中存在9個(gè)自定義控件,分別為:
以下以總線模塊進(jìn)行舉例說(shuō)明,在主窗口左側(cè)樹(shù)狀圖,點(diǎn)擊不同節(jié)點(diǎn)會(huì)在右側(cè)業(yè)務(wù)區(qū)載入不同的自定義控件,如點(diǎn)擊 “總線”節(jié)點(diǎn),將載入CANInfoUserControl自定義控件,并以Tab頁(yè)形式顯示。此Tab頁(yè)需重新設(shè)置樣式,每一個(gè)Tab頁(yè)由一個(gè)TextBlock和一個(gè)Button組成,Button重定義模板,由“×”圖形填充,并實(shí)現(xiàn)關(guān)閉該子模塊的功能。為保證總線模塊與主框架的松耦合狀態(tài),應(yīng)使總線模塊只有一個(gè)獨(dú)立的數(shù)據(jù)源,簡(jiǎn)單來(lái)說(shuō)是為模塊設(shè)計(jì)對(duì)外部公開(kāi)的公共接口。
因此注冊(cè)依賴屬性ItemSourceDataProperty,用戶可通過(guò)ItemSource屬性給該控件賦值。
圖4 文檔結(jié)構(gòu)圖
本系統(tǒng)配置文件為XML文本格式文件,XML(Extensible Markup Language)是一種界定文本數(shù)據(jù)的簡(jiǎn)便而標(biāo)準(zhǔn)的方法,它可根據(jù)需求創(chuàng)建任意數(shù)據(jù)結(jié)構(gòu),此格式允許自定義標(biāo)簽并支持層次結(jié)構(gòu)的嵌套。XML文本格式不受編程語(yǔ)言和平臺(tái)的限制,能夠在不同的用戶、平臺(tái)和程序間交換數(shù)據(jù)[2]。
配置工具的數(shù)據(jù)結(jié)構(gòu)與約定規(guī)則的XML數(shù)據(jù)之間相互映射,信息可以相互解析。
如圖4所示,配置系統(tǒng)的詳細(xì)信息以樹(shù)型結(jié)構(gòu)表示,Root節(jié)點(diǎn)是邏輯節(jié)點(diǎn)XML結(jié)構(gòu)中的根節(jié)點(diǎn),本身也包括一部分信息,如工程的名稱、創(chuàng)建人、創(chuàng)建版本、創(chuàng)建時(shí)間等。在保存交換數(shù)據(jù)時(shí),要使信息不丟失且具有原始的結(jié)構(gòu)信息,XML以屬性方式保存這部分信息,保持?jǐn)?shù)據(jù)的真實(shí)性與完整性。圖4中XML文檔所示元素代表模型中樹(shù)節(jié)點(diǎn)、各元素的屬性。配置工具能夠?qū)?pro文件和對(duì)應(yīng)各個(gè)模塊的XML文件(如 : NetConfig、 CANInfoConfig、DIModuleConfig、AIModuleConfig等),用戶可根據(jù)實(shí)際需求進(jìn)行相應(yīng)的界面配置。配置工具根據(jù)各個(gè)模塊的XML文件信息和工程人員的配置信息,生成各個(gè)模塊的配置文件,同時(shí)也可導(dǎo)出新的配置文件。
應(yīng)用WPF實(shí)現(xiàn)的系統(tǒng)界面使得系統(tǒng)界面更加美觀,新的架構(gòu)使得界面與代碼更好地分離,開(kāi)發(fā)和維護(hù)越來(lái)越簡(jiǎn)單。該配置工具開(kāi)發(fā)完成后,已實(shí)際應(yīng)用于工程配置中。實(shí)踐證明,該工具既能滿足當(dāng)前工程環(huán)境中的配置需求,也能有效降低配置工作的難度,提升了工作效率,保證了配置的準(zhǔn)確性,在飛行模擬器數(shù)據(jù)采集系統(tǒng)中發(fā)揮了應(yīng)有的作用。