QT课程设计

水质检测系统界面设计


前言


QT设计与开发课程要求设计一个有关QT的课程项目。设计出一个使用串口通信的模拟上位机和下位机,上位机具有登录界面,可发送相关指令控制下位机对应模块;下位机发送相应水质参数给上位机,上位机接收后可将数值显示出来,并且画出折线图。
在这里插入图片描述
在这里插入图片描述

一、整体构建思路

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

本系统上位机利用普通PC机作为开发平台,使用QT软件开发水质检测系统的图形化界面。下位机采用QT模拟传感器,实时发送检测数据。通过调用QserialPort模块,实现上位机与下位机的串口通讯;下位机主要使用Qtimer,定义定时器进行实时发送传感器数据,以及接收上位机发送的控制命令对设备进行打开关闭操作。上位机使用QtCharts模块,使接收到的实时数据显示在QWidget图上面;并且判断温度或PH值的大小,是否通过串口发送控制指令打开进水阀、增氧机等设备。整体设计方案如图。
在这里插入图片描述

二、设计过程

1.登录界面

上位机的设计有两个界面,第一个为QT设计器建立水质监测系统主窗口,即QMainWindow类,在此基础上添加了一个QDialog类作为本系统的登录界面显示。登录界面如图所示。
在这里插入图片描述
类之间的调用与界面之间的来回转换是将多功能界面串联起来的关键所在。在本系统中采用了信号与槽来实现登录界面和主界面的交换显示。首先在main.cpp中首先显示登录界面,再判断输入的字符密码与设置的是否符合,若符合首先Qmessage打印成功提示信息,再发送showmainwindow信号显示出主界面,否则显示失败提示,仍显示登录界面。在登录界面的右上角设计了最小化和退出按钮可通过这进行便捷操作。信号与槽实现界面切换代码如图所示。
在这里插入图片描述
具体可看这个博主登录界面设计

2.串口通信

QT通信机制主要分为串口通信和网络通信,本系统采用QSerialPort类实现上位机和下位机的串口通讯连接。首先通过foreach (const QSerialPortInfo &info, QSerialPortInfo ::availablePorts())语句搜索本地的串口号,选择相应的串口号和波特率后进行连接,成功连接后串口状态指示灯变绿,未连接为红。信息的发送通过发送按键实现,当点击该案件后读取QlineEdit上的字符发送给下位机。当下位机发送信息时,上位机接收到存入info中,将数据分析处理后在界面上进行显示并将点传入折线图中。在下方的textedit中也会显示接收到的信息。部分重要程序如图所示。
在这里插入图片描述

3.实时显示折线图

制图控件主要有QCustomPlot、QWT以及QtCharts三种,qcustomplot如果不生成静态库再使用的话,运行起来特别特别慢,这就对编程带来了不便。而作为QT自带库的Qt Charts,更适合开发应用,它包含了折线、曲线、饼图、棒图、散点图、雷达图等等各种常用的图表。综合考虑,本系统选择Qt Charts进行制图。

首先定义一个QtCharts类的指针,再实例化。选择QLineSeries 直线作为数据点的连接;将模拟下位机上传的数据作为数据源在图上显示,在图中加入了鼠标和键盘事件,让折线图显示的更清楚明了。还加入了旋钮QDial控件来改变坐标轴的距离。折线图如图所示
在这里插入图片描述
折线波形显示可看这个博主


总结

设计的水质检测系统能够完成串口通信,实现上位机和下位机的数据传输。并且能够将数据在上位机上显示和打印成折线图,折线图能够实现鼠标拖动和滑轮放大缩小的功能,下方的旋钮QDial能够实现放大或缩小坐标轴的功能。上位机有设备控制按钮,在上位机点击后能将控制指令发送到下位机,并将设备打开或关闭,指示灯也能进行颜色的变化。系统整体运行流畅,基本功能实现。

但是系统功能还能进行改进,在此基础上,下一步应该尝试加上数据库,将传感器发送的数据保存在数据库中,并且在QT中能够增、删、改、查。将界面进行美化设计。

工程代码

项目工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值