楊宛璐,韓 立,王建普,鄧鑄洲
(航空工業洪都,江西 南昌, 330024)
飛行模擬器分為飛機性能仿真分系統、座艙模擬分系統、視景、教員臺控制分系統、計算機和網絡分系統、航空電子模擬分系統、聲音模擬分系統、輔助分系統等八大分系統。 其中教員控制臺(IOS—Instructors Operating Station)作為飛行模擬器與教員的人機交互界面,是整個系統中重要的環節之一。 通過教員控制臺可以控制整個飛行模擬器的全過程,如訓練開始、訓練結束、設置飛機數據、機場數據、飛行環境、特情等。除此之外,通過態勢監控、電子地圖、語音通信等功能操作,教員可以隨時掌握飛行訓練中的每一個細節。
目前國內大部分飛行模擬器教員控制臺大都采用可視化集成開發工具來開發教員控制臺軟件,但界面設計與底層邏輯代碼的緊密耦合度高,隨著程序功能的拓展與擴張,代碼量也會相應地增加,程序也會變得十分復雜,使得在后期維護修改時,工作量繁重,牽一發而動全身,后期維護較為不便。
針對上述缺點, 將MVVM 模式應用在教員臺系統的設計上可以很好地解決上述問題,MVVM 模式是基于微軟.Net 架構以及WPF 全新設計模式,將數據層、業務邏輯層以及表現層分開,并利用Data/Binding(數據綁定與命令綁定)進行接口粘合,可以使業務邏輯與界面最大程度地分離開來。
根據教員控制臺的應用特點,結合各種先進技術的發展,并考慮到系統設計的通用性,提出以下設計思路:采用面向對象技術進行教員控制臺軟件引擎的分析與實現,利用模塊化的軟件結構和網絡通訊框架提高系統的通用性、擴展性和可移植性,注重從界面布局、風格設計和功能實現方法等方面增強人機交互界面的靈活性和友好性。
教員控制臺系統是飛行模擬器的一個重要組成系統,擔負著整個飛行模擬器的輸入控制和輸出顯示工作,它與模擬器幾乎所有的系統都存在著直接或間接的信息交互。
教員控制臺軟件采用三層架構,底層為網絡通訊層,用于主控計算機與其他計算機網絡數據的接收和發送;中間層為數據的邏輯處理層;最上層為用戶交互界面,實現界面布局和顯示。
在飛行訓練過程中,教員控制臺軟件將教員設置的各類控制指令通過以太網發送給仿真計算機,仿真計算機通過數據處理模塊將解算出的飛行數據及指令通過以太網反饋給教員臺,用于軟件界面的實時顯示。
本系統界面采用WPF 編程實現:
1) 采用Visual Studio 2010 和.Net Framework 4.0平臺架構。
2) 應用C#、XAML 語言進行開發,C# 用于軟件框架的搭建,XAML 用于軟件界面的布局和設計,XML 用于系統數據配置文件。
界面設計采用微軟的Expression Blend 4 和Visual Studio 2012。Blend 主要負責界面設計,包括空間布局,背景色,控件樣式以及自定義控件;Visual Studio 2012 主要完成界面上控件的響應及界面之間的傳值,完成用戶與系統的信息交互。
教員控制臺軟件界面采用數據驅動的方式實現,在完成內部功能模塊設計后,將界面顯示與配置文件和數據驅動模型進行綁定。 界面配置文件,包括中英文切換、單位切換、值域編輯、屏幕分辨率配置、系統樣式以及圖標更換,均采用XAML 文件存儲,這些文件修改之后不需要進行再編譯,重新啟動軟件后將自動識別載入系統數據。
數據交換處理模塊主要是用于將操作界面發出的請求發送給仿真框架中的仿真管理系統主機,并將網絡接收過來的數據實時傳給教員控制臺,供界面顯示。
主控系統框架采用MVVM(Model-View-ViewMode)模式。 該模式由Model(模型層)、View(視圖層)和ViewModel(視圖模型)三部分組成,該模式系統框架如圖1 所示。 View 先綁定ViewModel,然后執行一些命令向其請求動作。 ViewModel 與Model 通訊,通知響應UI。 View 層只需展示數據格式不同生成的不同窗體視圖的界面設計。 ViewModel 實現數據邏輯的展示,它只關注操作任務、操作邏輯的行為,Model 層制定數據模型。 相對于之前把邏輯結構卸載Code Behind 里面的方式,MVVM 幾乎完全解耦視圖與邏輯業務的關系, 通過數據綁定和命令來處理UI 屬性及事件驅動。 同理,ViewModel 的視圖交互業務邏輯處理導致的屬性變更也會通知到View 前端,讓View前端實時更新,關系如圖1 所示。View 使用XAML 語言只包含界面相關邏輯代碼,并運用綁定屬性和綁定命令的方式與視圖模型層進行交互。當一個控件值改變后,XAML 會根據控件綁定的ViewModel 的屬性進行相應的更新,同理,若ViewModel 的屬性值發生變化時,可調用INotify Property Changed 的事件來通知前臺進行改變。這樣的通訊機制使得系統構建十分容易。 在系統界面和功能越來越松耦合的同時,功能可測性越來越強。

圖1 MVVM 架構圖
根據模擬器對教員控制臺的需求分析,將軟件模塊分為以下內容,如圖2 所示。

圖2 教員控制臺功能模塊設計
1) 窗口布局管理
(1)加載各類資源文件,完成主窗口的動態創建顯示;
(2)加載頁面資源,完成各功能頁面內容的動態創建顯示;
(3)實現各功能頁面間的切換顯示。
2) 通用顯示和控制
(1)讀取基本界面元素配置文件,實現頁面中界面元素的加載,如參數設置按鈕、狀態設置按鈕、標志按鈕、參數狀態顯示框、圖片控件等。
(2)利用WPF 的數據綁定和依賴項屬性等特性,實時顯示從主機網絡服務軟件獲取的數據;
(3)根據控制指令的數據類型,通過開關按鈕、彈出對話框輸入數據或選擇狀態等不同方式,將控制指令對應的數據發送到主機網絡服務軟件。
3) 故障管理
(1)按系統分頁顯示可設故障名稱以及各故障的描述內容;
(2)提供即時觸發和預設故障的設置及取消;
(3)所有已激活故障集中顯示,便于教員了解當前故障設置狀態;
(4)故障預設的觸發條件管理。
4) 多語言版本管理
(1)創建語言切換配置文件,描述不同語言版本下對應的翻譯內容;
(2)實現軟件顯示內容多語言版本的動態切換。
5) 網絡通訊
(1)實現與主機網絡服務軟件通過UDP 進行數據交互,完成數據的發送和接收。
(2)接收主機網絡服務軟件發送過來的信息包和數據包; 解析信息包獲取數據包的拆解描述信息;解析數據包,獲取數值更新到數據資源,用于界面實時顯示數據信息;
(3)發送控制指令時,提供控制指令對應的唯一標識、數據類型和值,按數據發送協議組包并序列化后的數據包發送給主機網絡服務軟件。
教員臺主控軟件顯示界面即MVVM 模式中的View 層, 以數字和圖形的方式顯示了以太網接收的所有數據。 顯示界面的前端為用戶提供程序交互界面。 View 層通過豐富多樣的圖形化界面使得使用者能得到很好的人機交互體驗。 ViewModel 與View 通過屬性綁定在一起,將數據以更加直觀的圖形化的方式展現給用戶,若用戶需改變圖形界面顯示,只需將界面與數據重新綁定一次即可。對于整體模塊無需進行多余修改。
圖3所示教員臺系統的界面設計,主界面左側為導航欄,內容包括:任務(創建任務、選擇任務、任務頁面)、故障設置、活動目標、檔案管理和系統設置。
以天氣設置界面設計為例,如圖3 所示,風向的設置由一個自定義的控件DashBoard 組成,將控件的Maximum 最大值、Minumum 最小值、和Value 當前值定義為依賴屬性(Dependency Property),這樣就可以跟WPF 的原生控件一樣, 允許對該控件進行屬性綁定, 將風向設置的TextBox 的Text 屬性與DashBoard的Value 屬性綁定在一起, 如:Text="{BindingValue,ElementName=DashBoard},這樣使得TextBox 與Dash-Board 間建立關聯,產生聯動效果。 利用自定義控件制作動畫來顯示風向,使得同一個數據擁有兩種不一樣的表現形式,雖然兩種表現方式、效果完全不一樣,但兩者來源的數據是一樣的。底層數據并沒有因為界面顯示的不同而進行代碼修改,就可有兩種不同的顯示方式,很好地將界面的設計開發與底層的數據開發分離。

圖3 風向設置界面
傳統的界面監控設計思路是消息觸發機制,結合TCP/UDP 通訊協議即可以搭建完整的網絡監控系統。 本文采用的是數據綁定機制,此方法是對消息觸發方式的一次革新,更加強調模塊化設計,與常規桌面軟件的設計,帶來了全新的設計思路。 其中關鍵的技術革新即為一對多的數據綁定取代了一對一的消息觸發機制,突破了數據來源與界面顯示的專一性,僅在需要顯示的界面才進行數據綁定,模塊化程度高。
將MVVM 框架融合于飛行模擬器教員臺軟件系統中,使其具備低耦合、可重用性、可測試性等優點,通過綁定及自動更新,使得后臺業務邏輯更加清晰,便于進行飛行模擬器教員臺界面設計的修改和更新,給傳統桌面開發帶來全新的設計理念,為以后開發桌面交互設計界面提供了開發經驗。