基于MVVM 架构的飞行模拟器教员控制台系统的设计和实现

2022-08-17 10:53:26杨宛璐王建普邓铸洲
教练机 2022年2期
关键词:界面设计模拟器控件

杨宛璐,韩 立,王建普,邓铸洲

(航空工业洪都,江西 南昌, 330024)

0 引言

飞行模拟器分为飞机性能仿真分系统、座舱模拟分系统、视景、教员台控制分系统、计算机和网络分系统、航空电子模拟分系统、声音模拟分系统、辅助分系统等八大分系统。 其中教员控制台(IOS—Instructors Operating Station)作为飞行模拟器与教员的人机交互界面,是整个系统中重要的环节之一。 通过教员控制台可以控制整个飞行模拟器的全过程,如训练开始、训练结束、设置飞机数据、机场数据、飞行环境、特情等。除此之外,通过态势监控、电子地图、语音通信等功能操作,教员可以随时掌握飞行训练中的每一个细节。

目前国内大部分飞行模拟器教员控制台大都采用可视化集成开发工具来开发教员控制台软件,但界面设计与底层逻辑代码的紧密耦合度高,随着程序功能的拓展与扩张,代码量也会相应地增加,程序也会变得十分复杂,使得在后期维护修改时,工作量繁重,牵一发而动全身,后期维护较为不便。

针对上述缺点, 将MVVM 模式应用在教员台系统的设计上可以很好地解决上述问题,MVVM 模式是基于微软.Net 架构以及WPF 全新设计模式,将数据层、业务逻辑层以及表现层分开,并利用Data/Binding(数据绑定与命令绑定)进行接口粘合,可以使业务逻辑与界面最大程度地分离开来。

根据教员控制台的应用特点,结合各种先进技术的发展,并考虑到系统设计的通用性,提出以下设计思路:采用面向对象技术进行教员控制台软件引擎的分析与实现,利用模块化的软件结构和网络通讯框架提高系统的通用性、扩展性和可移植性,注重从界面布局、风格设计和功能实现方法等方面增强人机交互界面的灵活性和友好性。

1 软件架构设计

教员控制台系统是飞行模拟器的一个重要组成系统,担负着整个飞行模拟器的输入控制和输出显示工作,它与模拟器几乎所有的系统都存在着直接或间接的信息交互。

教员控制台软件采用三层架构,底层为网络通讯层,用于主控计算机与其他计算机网络数据的接收和发送;中间层为数据的逻辑处理层;最上层为用户交互界面,实现界面布局和显示。

在飞行训练过程中,教员控制台软件将教员设置的各类控制指令通过以太网发送给仿真计算机,仿真计算机通过数据处理模块将解算出的飞行数据及指令通过以太网反馈给教员台,用于软件界面的实时显示。

本系统界面采用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 文件存储,这些文件修改之后不需要进行再编译,重新启动软件后将自动识别载入系统数据。

数据交换处理模块主要是用于将操作界面发出的请求发送给仿真框架中的仿真管理系统主机,并将网络接收过来的数据实时传给教员控制台,供界面显示。

2 MVVM 架构

主控系统框架采用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 架构图

3 软件功能模块设计

根据模拟器对教员控制台的需求分析,将软件模块分为以下内容,如图2 所示。

图2 教员控制台功能模块设计

1) 窗口布局管理

(1)加载各类资源文件,完成主窗口的动态创建显示;

(2)加载页面资源,完成各功能页面内容的动态创建显示;

(3)实现各功能页面间的切换显示。

2) 通用显示和控制

(1)读取基本界面元素配置文件,实现页面中界面元素的加载,如参数设置按钮、状态设置按钮、标志按钮、参数状态显示框、图片控件等。

(2)利用WPF 的数据绑定和依赖项属性等特性,实时显示从主机网络服务软件获取的数据;

(3)根据控制指令的数据类型,通过开关按钮、弹出对话框输入数据或选择状态等不同方式,将控制指令对应的数据发送到主机网络服务软件。

3) 故障管理

(1)按系统分页显示可设故障名称以及各故障的描述内容;

(2)提供即时触发和预设故障的设置及取消;

(3)所有已激活故障集中显示,便于教员了解当前故障设置状态;

(4)故障预设的触发条件管理。

4) 多语言版本管理

(1)创建语言切换配置文件,描述不同语言版本下对应的翻译内容;

(2)实现软件显示内容多语言版本的动态切换。

5) 网络通讯

(1)实现与主机网络服务软件通过UDP 进行数据交互,完成数据的发送和接收。

(2)接收主机网络服务软件发送过来的信息包和数据包; 解析信息包获取数据包的拆解描述信息;解析数据包,获取数值更新到数据资源,用于界面实时显示数据信息;

(3)发送控制指令时,提供控制指令对应的唯一标识、数据类型和值,按数据发送协议组包并序列化后的数据包发送给主机网络服务软件。

4 教员台界面设计

教员台主控软件显示界面即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 风向设置界面

5 显示界面与数据绑定

传统的界面监控设计思路是消息触发机制,结合TCP/UDP 通讯协议即可以搭建完整的网络监控系统。 本文采用的是数据绑定机制,此方法是对消息触发方式的一次革新,更加强调模块化设计,与常规桌面软件的设计,带来了全新的设计思路。 其中关键的技术革新即为一对多的数据绑定取代了一对一的消息触发机制,突破了数据来源与界面显示的专一性,仅在需要显示的界面才进行数据绑定,模块化程度高。

6 结语

将MVVM 框架融合于飞行模拟器教员台软件系统中,使其具备低耦合、可重用性、可测试性等优点,通过绑定及自动更新,使得后台业务逻辑更加清晰,便于进行飞行模拟器教员台界面设计的修改和更新,给传统桌面开发带来全新的设计理念,为以后开发桌面交互设计界面提供了开发经验。

猜你喜欢
界面设计模拟器控件
《京燕儿》APP界面设计
大众文艺(2023年22期)2023-12-10 04:27:18
中医养生APP界面设计
大众文艺(2022年19期)2022-10-19 08:18:18
“共享员工”平台界面设计
包装工程(2022年14期)2022-07-28 07:07:00
了不起的安检模拟器
盲盒模拟器
划船模拟器
面向智能手机的UI界面设计
湖北农机化(2020年4期)2020-07-24 09:07:46
关于.net控件数组的探讨
软件(2018年7期)2018-08-13 09:44:42
动态飞行模拟器及其发展概述
就这样玩会VBA中常见的自定义控件
电脑迷(2012年24期)2012-04-29 00:44:03