基于Qt的远程监测系统客户端设计与实现
2015-12-18王珍珍张庆磊王传刚
王珍珍,张庆磊,王传刚,杨 亮
(西安电子科技大学电子工程学院,陕西西安 710071)
远程监测系统是智能监控系统向智能化发展的一项重要研究内容,也是物联网技术的一个重要应用[1]。近年来,其在环境监测和视频监控领域发挥着越来越重要的作用。为了满足跨平台、多样化的应用需要,设计采用Qt作为系统软件开发框架。Qt以其友好的图形界面、跨平台的特性以及良好的信号槽机制,成为工控领域GUI设计的最佳选择[2]。
1 客户端界面设计
设计中,客户端采用灰度渐变的主题风格、自适应的布局管理器及模拟真实仪器的显示界面。用户界面的整体布局包括两大块,即显示区和控制面板区。其中,显示区采用Qt的Frame组件,控制面板采用Qt的TabWidget组件。多功能GUI用户界面如图1所示。
图1 多功能GUI用户界面
2 整体架构
设计中,客户端不仅为用户提供了一个友好的显示界面,还提供了灵活的控制面板和配置选项。
显示终端和用户交互主要完成两个工作:(1)将数据呈现出来,对内部信号进行实时显示,对外部数据进行定制化显示。(2)方便用户交互式控制,实现对摄像机云台的控制,以达到调整摄像头的俯仰角、视角和焦距的作用[3]。本设计采用MVC设计模式,将数据和视图分离[4]。
视图部分主要由Display模块完成,根据不同的数据自动生成相应的显示视图。其中,波形数据,以虚拟示波器的外观来动态显示输入波形信号;视频图像信号,以图像方框的外观实时刷新每一帧图片;传感数据,可实现多通道环境参数的显示,且自动适应屏幕大小,调整显示栅格。
控制部分主要由WorkPannel模块来完成,通过接收用户指令和输入数据,切换到不同的工作模式,在Display模块中实时输出用户信息。此外,WorkPannel模块需要协调不同接口数据的传输速率,以保证数据既能实时更新又能稳定显示。显示交互和用户界面整体结构如图2所示。
图2 显示终端和用户交互整体结构
3 模块设计
显示终端主要负责数据的传递、数据的显示和用户交互。Qt提供了一种信号槽机制,可实现不同组件对象之间无缝通信[5]。内部数据的产生、外部数据的传输、用户数据的获取及显示区数据的推送,均是以类的形式封装于具体模块中。
3.1 GUI设计主要模块
为满足对环境参数和视频图像的实时显示,在显示终端部分设计了5大模块,每个模块由一个类来实现。
图3 显示终端的几个重要模块类图
3.1.1 Camera模块
Camera模块主要对USB传输的视频图像进行按帧分割、处理、优化,以适应Display显示模块的标准。设计采用OpenCV图像框架来实现摄像头视频图像的读取控制。为了达到良好的视频显示效果,设计将获取的每帧图片均转换为jpg格式,且设定定时器,每33 s读取一帧。
3.1.2 Display模块
Display模块主要负责对不同模型数据的显示。设计使用Qt独有的双缓冲重绘机制,实现动态曲线和视频图像的稳定显示。设计中,Display显示区的刷新频率是通过定时器来控制的,具体函数调用关系如图4所示。
图4 Display模块工作流程
为了实现数据的更好显示,设计定义了scaleData()函数来对输入数据进行规范化处理,包括数据点数的约束和数据大小的归一化处理。其中,数据点数约束在800内,保证适应大多数桌面屏幕。
(1)SerialComms模块。SerialComms模块是对串口接口数据的封装,包括串口的识别、初始化配置、数据的读写和规范化处理等。(2)SigGenerator模块。SigGenerator模块主要用于内部信号发生器,方便演示和测试。
(3)WorkPannel模块。WorkPannel模块是最重要的部分,主要完成3方面的工作:1)协调各模块接口数据的传输。2)实现用户界面的交互。3)对显示终端、控制面板以及工作流程的管理和控制。
为了实现更好的用户交互界面和丰富的功能,设计提供了多种槽函数,以响应用户界面的控制和参数设置,如工作模式的切换、波形幅度周期的调整、数据源的选择、数据类型的选择、传输模式的切换等。
3.2 GUI设计主要模式
为了方便不同工作模式的快速切换,在设计中使用枚举数据类型和模式切换方法,提高了程序的鲁棒性和可读性[6]。
图5 数据交互中用到的主要模式
ChnMode模式负责波形信号的显示通道切换,包括CH1、CH2、Dual和Sleep的4种状态,分别表示工作于通道1、通道2、双通道和睡眠状态。
DataSource模式负责选择不同的数据源,包括None、Inner和Exter 3种状态,分别表示无数据、内部数据和外部数据。
DispMode模式负责切换横屏和竖屏显示。这种模式切换主要是为了适应手机、平板、嵌入式终端等可移动设备。
DataType模式负责接收3种不同模型的外部数据,包括Monitor、Video和Sensor,分别表示波形数据、视频图像和传感数据。这种模式只有在DataSource模式处于Exter状态才有效。
CommsMode模式负责切合串口工作方式,包括Terminal、Transfer和 Control,分别表示调试终端、数据传输和云台控制3种状态。
WorkMode负责整个显示终端和用户交互的工作状态,包括 Started、Closed、Paused和 Normal的4种状态,分别表示启动、关闭、暂停和正常模式。一旦WorkMode处于关闭模式,显示器Display和串口SerialComms均将关闭。
4 系统功能测试
4.1 测试方法
鉴于远程监测系统完整的设计方案包括云台终端、数据中心和显示终端,本设计是显示终端方面,故只测试显示终端。使用虚拟串口、串口调试助手和Monitor用户界面来搭建测试上位机测试平台。
4.2 测试结果
设计的主要部分集中于多终端跨平台的GUI设计,即以定制化的方式对传感数据和视频数据进行实时显示,同时为用户提供参数配置和云台控制。故本设计对GUI的测试主要有3方面:1)对波形数据的测试,包括内部波形和外部输入波形。2)对传感数据的测试,可通过虚拟调试助手进行模拟。3)对视频图像数据的测试,可通过USB直接连接摄像头[7]。
4.2.1 波形数据的测试
Virtual Monitor用户界面主要包括两部分:Display显示区和用户控制面板。在波形数据模式下,通过模拟传统示波器的显示特点,可实现对2通道波形数据的显示。同时,在控制面板中,用户可通过Dial旋钮分别对每个通道的幅度和位移进行设置[8]。
为了测试波形数据的显示,设计选择数据源为内部数据,并选择双通道模式。然后启动内部数据选项卡,分别选择矩形波和正弦波,如图6所示。
图6 内部波形的显示情况
从图6可看出,Virtual Monitor用户界面可在Windows平台下对波形信号实现稳定的显示。且用户可灵活地切换不同通道,根据需要调整波形的相关参数,如周期、幅度和偏移等。
4.2.2 传感数据测试
Virtual Monitor用户界面在传感数据显示模式下,可多达对10个通道数据的实时显示,并自动以不同的颜色进行区分。由于传感数据是通过串口传输的数据,因此要测试此功能,用户需进行3个操作[9]:(1)在显示设置页面下,打开显示器,并选择数据源为外部数据。(2)在高级设置页面下,选择需要传输的传感数据通道数。(3)在外部数据页面下,选择合适串口和波特率,并点击Transfer数据模式。
图7 多通道传感数据显示情况
通过搭建虚拟测试平台,来完成对传感数据显示的测试。虚拟测试平台包括虚拟串口VSPD、串口调试助手和 Virtual Monitor界面[10-12]。
4.2.3 视频数据的测试
Virtual Monitor用户GUI界面可提供对3种外部数据的显示,要想获取视频图像数据,必须打开Video数据模式。当没有接入视频数据时,显示区会呈现如图所示画面“请插入摄像头”;当有视频数据输入时,系统会自动检测,并按帧提取图像实时显示,视频图像的显示结果如图8所示。
图8 视频图像显示界面
4.2.4 云台运转控制测试
设计在串口通信方面,提供了3种数据模式,即Terminal、Transfer和 Control,分别表示串口调试模式、数据传输模式和云台控制模式。选择Control进入云台控制模式,用户可对云台终端的摄像头参数和云台运转姿态进行控制。其中,摄像头可控制参数有光圈和焦距,用以调节摄像的视角。云台控制包括基本的启动、暂停控制和水平、垂直旋转控制。云台控制和摄像头参数设置如图9所示。
图9 云台控制和摄像头参数控制
5 结束语
通过实验测试效果可看出,Virtual Monitor用户GUI界面基本可实现对波形数据、传感数据和视频数据的显示,以及对云台工作和摄像头参数的控制。同时,在测试过程中,也发现了以下问题:(1)客户端界面设计仍有待改进,需进一步优化以提高界面的友好程度。(2)系统性能也有待提高,系统构架可能造成性能瓶颈。
[1] 高璐,张鹰峰.基于Qt的远程监控系统设计[J].电子世界,2013,22(7):783 -788.
[2] 石沙.基于Qt的跨平台视频监控客户端的设计与实现[D].西安:西安电子科技大学,2013.
[3] Sun Tong,Xia Yongquan,Gan Yong.Procedia engineering[C].Shanghai,China:Discussion on Integration of Urban Video Surveillance System,2011.
[4] 栗新雨.MVC设计模式中的“视图模型”与“视图”[J].计算机光盘软件与应用,2013,20(3):178-179.
[5] 汪小闯,任远.基于 Qt的 EMS图形系统的研究[C].南京:第十届全国保护和控制学术研讨会,2005.
[6] 曾剑元.ARM9平台上基于Qt/Embedded的嵌入式GUI的研究与实现[D].长春:吉林大学,2010.
[7] 邱建东.基于STM32的远程智能测控单元设计[D].兰州:兰州交通大学,2013.
[8] 黄清江,蒋强,任高星.基于RealView MDK软件的嵌入式系统仿真研究[J].电子测试,2009,3(1):63 -66.
[9] Song Qiang,Lv Chenguang.Data acquisition system for electric vehicle's driving motor test bench based on VC[J].Physics Procedia,2012(3):110 -114.
[10]农伟,侯俊丞,胡睿南.构架在OBD系统的远程汽车监测新方案[J].电子科技,2012,25(1):61-64.
[11]代治国,李兴霞.基于ARM的智能小区远程视频监控系统[J].电了设计工程,2013,21(3):70 -72.
[12]杜晓婷,李美莲.基于GPRS的远程监控系统[J].现代电子技术,2011,34(17):205 -207,210.