基于MVVM架构的矿井水文监测系统软件设计与实现

2016-10-11 11:34董建梁
中国科技信息 2016年17期
关键词:设计模式控件水文

李 鹏 董建梁 吕 琦

中煤科工集团西安研究院有限公司

基于MVVM架构的矿井水文监测系统软件设计与实现

李 鹏 董建梁 吕 琦

中煤科工集团西安研究院有限公司

对煤矿水文数据进行监测是进行水害防治的主要手段之一。实现水文监测数据采集和观测的自动化系统,可以高效地实现对原始数据的处理及二次分析。本文基于WPF编程技术和MVVM设计模式相结合方式,开发的水文监测系统模拟显示了监测站点位置并在软件中加入了实时地图,使数据的观测更加直观。

煤矿水害是威胁煤矿生产安全的重大灾害之一。针对矿井水害预测问题,本文研究开发基于MVVM设计模式的矿井水文自动监测系统。矿井水文监测系统能够自动的采集井下和地面的水压、水位、流量、降雨量等水文数据,并自动的传输到监控中心,在出现异常时能够自动的报警,提示相关部门采取防范措施,确保煤矿安全生产,降低灾害损失。特别是在一些水文地质条件复杂的地区,管理难度很大,使用水文监测系统能够有效地提高工作效率,加强水文地质灾害的防治。

系统设计

系统框架

本系统的开发整体架构采用了C/S模式,也就是客户端/服务器模式。为了实现界面的图形显示效果,降低界面与业务逻辑的耦合度以及提高代码的复用性,软件的开发使用了WPF的MVVM模式。

系统功能模块

水文实时监测系统软件功能主要包括实时数据显示、数据查询、生成曲线、生成报表、系统参数设置、用户管理、GSM水情遥测、GPRS水情遥测、OPC工业接口以及矿井设备布局图显示等功能。

开发环境

系统开发使用微软最新开发工具Vistual Studio 2015实现。界面设计应用两种工具:微软的 Expression Blend 4和 Visual Studio 2015。其中,Expression Blend 4主要负责界面设计,包括控件的布局,背景色,界面的样式及自定义控件等,有助于设计出更加漂亮的界面与动画;VisualStudio 2015主要完成界面上按钮的响应及界面之间的跳转,完成系统与用户之间的信息交互。

图1 系统总体框架

图2 系统功能结构图

MVVM设计模式在系统中的应用

MVVM

WPF(Windows Presentation Foundation)是一套基于.Net Framework、XML、矢量绘图技术的展示层开发框架。WPF使用一种新的XAML(eXtensible Application Markup Language)语言来开发介面,将界面开发和后台逻辑完美的分离,降低了耦合度,使用户界面设计师与程序开发者跟好的合作,降低维护和更新成本。

MVVM(Model-View-ViewModel)是一种WPF的新型软件设计模式。Model代表业务逻辑的实体类,可以是简单的用户实体类,也可以是复杂的期货交易实体类;View指用户界面或者承载了子控件的控件集合,主要响应业务逻辑传来的数据及状态变化等等,一个WPF窗口、一个Silverlight页面或者简单的XAML数据控件都可以作为View;ViewModel主要处理View和Model之间的业务关系,包括各种逻辑、命令、事件及实体类的引用。MVVM架构将其中的View的状态和行为抽象化,让我们可以将UI和业务逻辑分开,ViewModel取出 Model 的数据同时帮忙处理View中由于需要展示内容而涉及的业务逻辑。

图4 系统主界面

图5 某煤矿地面卫星图

MVVM在系统中的应用

本软件系统主要使用了MVVM设计模式的四大模块:ObservableObject基 类、RelayCommand接 口、Messager通信机制和PropertyObserver。

系统主界面(图4)的数据刷新通过ObservableObject实现ViewModel中的属性改变通知到绑定的控件的方法,相当于是所有Viewmodel的基类,使用时调用OnPropertyChange方法,则后台数据变化即可通知界面刷新。图中左侧图形界面的测点数据更新应用了OnPropertyChange方法。

图4中上部的按钮全都采用了RelayCommand接口,在ViewModel中定义View中绑定的命令,代替了以前Winform的Click事件。

在ViewModel中定义Command:

在View中的按钮管理该Command:

Messager信息机制主要用于ViewModel之间以及ViewModel和View之间的信息传递。

定义信息传输类:

在需要通知的类中注册要通知的信息

当对应的消息出现时,通知已经注册的类

PropertyOberver主要用于对对象的属性监听,属性变更后可触发已注册的回调函数。

注册要监听对象的属性及回调函数

WPF与Baidu Map的结合

百度地图是百度提供的一项网络地图搜索服务,覆盖了国内近400个城市、数千个区县。可以通过百度提供的Baidu Map API进行二次开发,实现煤矿地面水文监测系统遥测分站的定位和显示。运用Baidu Map JavaScript创建水文监测系统地面遥测地图,通过遥测分站位置的经纬坐标在地图上可标记处具体位置,进行实时监测,并开发了地图放大、缩小等功能。

程序使用WPF的WebBrowser将Baidu Map的HTML文件加载到程序中,当安装程序的主机与因特网连接时,实时更新百度地图;当主机无法连接因特网时,将使用提前下载好的离线地图显示。WPF通过调用HTML文件中的JavaScript与Baidu Map进行交互,此时可以使用WebBrowser的InvokeScript方法调用JavaScript,例如:

webbrowser.InvokeScript(“MeikuangMap”)。

结束语

经过整体测试和煤矿世纪应用,实现了煤矿井上下水文观测孔水压、水位、水温、采空区水位、排水明渠、管道流量的实时监测及阀门的远程控制。采用基于WPF的编程技术和MVVM设计模式编制的上位机监测软件,提高了人机交互的能力和软件界面的美观性,使用软件模拟监测站点位置并在软件中加入了百度地图,使数据的观测更加直观。MVVM框架的应用也使得系统设计流程更加规范,通过Model、View、View Model之间的交互实现了界面设计与后台逻辑代码的分离,封装了对象与数据库之间的交互,建立了一个易于维护,便于测试,有良好的扩展性的应用系统。

猜你喜欢
设计模式控件水文
“1+1”作业设计模式的实践探索
继往开来 守正创新——河北省水文工程地质勘查院
继往开来 守正创新——河北省水文工程地质勘查院
基于.net的用户定义验证控件的应用分析
三维协同设计模式下的航天项目管理实践与展望
水文
水文水资源管理
交通机电工程设计模式创新探讨
关于.net控件数组的探讨
互动式设计模式研究