APP下载

基于Qt 的嵌入式水质检测系统界面软件设计

2021-11-26吴连港

农业装备与车辆工程 2021年11期
关键词:折线图自动检测控件

吴连港

(200082 上海市 上海理工大学 机械工程学院)

0 引言

改革开放以来,我国经济发展很快,也不可避免地产生了一些污染问题,部分工厂乱排乱放,造成水质污染,因此生态环境问题受到越来越多的关注[1]。本文设计了一个水质检测系统,实时检测各项指标,从而管理水污染问题。

水质在线检测系统是运用现代传感技术、自动测量技术、自动显示技术组成的一个综合性的在线自动检测体系[2]。水质在线检测系统可尽早发现水质的异常变化,为防止下游水质污染迅速追踪污染源,从而为减少水污染,改善大自然环境质量和保护人类的生命安全[3]。

目前的水质检测系统大多采用Java 或LabVIEW 等实现,导致开发的可移植性差,本文采用基于嵌入式Linux+Qt 的水质检测系统图形用户界面的设计与开发[4]。

1 系统硬件结构

上位机采用国产芯片瑞芯微RK3288 的Firefly 开源主板。Firefly-RK3288 是2014 年6 月中旬由国内Firefly硬件团队推出的高性能开发板,使用瑞芯微最新RK3288 四核Cortex-A17 处理器,频率最高可达1.8 GHz,支持Android 和Ubuntu双系统,类似产品有树莓派,Cubieboard,pcDuino 等,Firefly-RK3288 可 用 作MiniPC(微型电脑主板),电视盒子,服务器,广告机,开发板[5]。下位机用于完成水质各项重要数据的采集以及与上位机的通信。通过调用QSerialPort 模块,可以实现上位机与下位机的RS485 串口通讯,并且发送的数据内容符合MODBUS-RTU 协议,能够极大保障发送与接收数据的准确性和抗干扰能力。另外采用一个RS485 通讯的继电器,Qt 的上位机界面通过按键槽函数向其发送报文,控制继电器的启停。硬件部分的整体组成逻辑图如图1 所示,上位机部分是运行在Linux 系统的水质检测系统,通过RS485 总线与扩展板连接,扩展板再与各个传感器的电极变压器的接线连接采集传感器的电压信号。

图1 硬件组成逻辑图Fig.1 Logic diagram of hardware composition

2 应用程序软件设计

2.1 基于Qt 的图形用户界面设计

Qt 是一个跨平台的C++应用程序开发框架。它既可以开发GUI 程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 是面向对象的框架,使用特殊的代码生成扩展以及一些宏。Qt 很容易扩展,并且允许真正地组件编程。作为嵌入式版本,Qt 被广泛运用于各类嵌入式产品和设备的开发[6]。水质检测系统的图形用户界面的开发,主要运用了QPushButton 控件、QLCDNumber 显示控件、QTableView 控件、Line Edit 等其它控件。在Qt 中,通过按钮信号与槽函数的通信和联系,实现主界面与子界面的来回切换,还实现了自动检测和关闭自动检测以及继电器的打开和关闭以及不同水质数据折线图的窗口切换等许多功能[7]。

打开自动检测前,水质检测系统的图形用户界面设备文件节点找到对应的USB 串口号,这里我们设置串口的波特率是9 600,数据位是8位,停止位是0 位,奇偶位是1。从而实现了LCD 控件上实时显示各个传感器采集的数据。

打开自动检测后,为了满足嵌入式上位机能延时自动向下位机发送报文,并要求传感其开始采集水质各项数据。但由于需要6 个传感器同时采集,这就要调用QThread 模块线程多任务进行。

通过Linux 开发平台上Qt 集成开发环境得到的图形用户界面如图2 所示。

图2 显示画面Fig.2 Display screen

2.2 水质检测系统界面程序的开发

首先使用Qt 设计器创建水质检测系统的主窗口,即Widget 类。在此基础上,另外添加了3个QWidget 类和一个Qbjiect 类分别实现实时数据报表查看、历史折线图查看、打开摄像头以及多任务线程功能。

类之间的调用与界面间的来回切换,并将这些功能串联起来是整个界面设计的关键所在。在Widget 的头文件中,include 被调用子窗体类的头文件。在构造函数中初始化子窗体类的对象名,在源程序中的按钮函数中将其隐藏,在相应的菜单按钮clicked()信号对应的槽函数中使子窗体显示出来,实现了主窗体与子窗体的切换。代码如表1 所示。

表1 界面间来回切换代码Tab.1 Code to switch back and forth between interfaces

2.3 数据库的使用

由于该水质检测系统要对检测的数据进行存储等功能,并且SQLite 数据库功能强大、接口简单、速度快、体积小,非常适合嵌入式设备,所以这里采用了数据库SQLite 来作为本地存储[6]。

SQLite 数据库拥有众多优点,如管理简单、操作方便、生成的数据库文件可以在各个平台无缝移植等,可以非常方便地以多种形式嵌入到其他应用程序中,如静态库、动态库且易于维护等。就可以为Qt 界面提供实时数据查看以及历史数据的折线图查看功能所需要的数据,采用QTableView 以及QChartView 控件来分别显示查看实时数据表格和历史趋势折线图。

程序编写好后,运行编译好的Qt 程序,部分测试结果如图3—图5 所示。

图3 数据报表图Fig.3 Data report diagram

图4 pH 数据折线图Fig.4 pH data line chart

图5 温度数据折线图Fig.5 Line graph of temperature data

用折线图查看历史数据设计时,为了防止项目工程的冗余,故将6 个控件直接放在一个界面中,以便在同一个界面中切换查看。初始化默认显示为水质pH 数据的折线图。同时,为了能够查看折线图上的每个时间点对应的数据值,并将时间与数据值都显示在折线图表的上方,采用支持hover 事件响应并将其关联到槽函数,且写出槽函数。

除此以外,为了防止采集了大量的数据后,折线图会出现堆积现象,此时运用QTimer 类启动定时器定时,设置每2 s 钟动态显示折线图的由左向右的移动。对于数据表格,由于采集大量的数据,因此采用翻页和跳转到某一页的操作来更有效地查看实时数据。

3 结语

本文通过跨平台的 Qt 开发,并借助SQLite数据库一起构成一个水质检测系统。通过连接下位机的测试,该系统实现了实时显示数据、实时查看采集的数据和历史趋势图等功能,满足了水质检测的设计要求,可灵活地应用于各种水质检测。

猜你喜欢

折线图自动检测控件
基于.net的用户定义验证控件的应用分析
数据增加折线图自动延长
风扇动作自动检测装置的设计与制作
一种开关柜局部放电自动检测装置的研究
基于STM32的室内有害气体自动检测与排风系统
关于.net控件数组的探讨
光电传感器在自动检测和分拣中的应用
让折线图显示在一个单元格中
再多也不乱 制作按需显示的折线图
美化Excel折线图表