第3章 环境监测ppt课件.pptx
《第3章 环境监测ppt课件.pptx》由会员分享,可在线阅读,更多相关《第3章 环境监测ppt课件.pptx(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 环境监测企想学院智能家居平台应用项目化教程第3章 环境监测企想学院l 相关知识介绍l 项目实施l 实训项目3 3l 项目描述企想学院l 项目描述4 4企想学院项目描述u 环境监测作为智能家居应用的重要基础功能,其主要用于获取各传感器采集的实时数据,并通过预处理将其展示在应用界面中。其中传感器类别主要包括温度传感器、湿度传感器、光照传感器和CO2传感器等,这些传感器协调工作,将自然界中的各类非电信号转化成电信号,让用户能够全面直观的了解其周围的生活环境。5 5企想学院l 相关知识介绍6 6企想学院相关知识介绍u 信号和槽是一种高级接口,应用于对象之间的通信,它是Qt的核心特性,也是Qt区
2、别于其它工具包的重要地方。信号和槽是Qt自行定义的一种通信机制,它独立于标准的C/C+语言,因此要正确的处理信号和槽,必须借助一个称为moc(Meta Object Compiler)的Qt工具,该工具是一个C+预处理程序,它为高层次的事件处理自动生成所需要的附加代码。u Qt支持将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射,系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。7 7u 信号槽企想学院相关知识介绍u 信号在Qt中使用信号时有以下几点注意事项:声明一个信号需要
3、使用signals关键字做标识符,同时在signals关键字前面不允许出现public、private和protected等限定符。信号只是用作声明,因此在代码中不需要对其进行定义和实现。信号没有返回值,只能是void类型。使用信号槽时必须在类声明的最开始处添加Q_OBJECT宏。信号由moc自动产生,它们不应该在.cpp文件中实现。例如,下面定义了三个信号:signals: void mySignal(); void mySignal(int x); void mySignalParam(int x,int y);8 8u 信号槽企想学院相关知识介绍u 槽 槽是普通的C+成员函数,其可以被正
4、常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。 同普通的C+成员函数一样,槽函数也分为三种类型,即 public slots、private slots 和 protected slots:public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,开发者可以根据需要创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用属于类实现的一部分,但是其界面
5、接口却面向外部的槽。private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。9 9u 信号槽企想学院相关知识介绍u 槽槽也能够声明为虚函数,这也是非常有用的。槽的声明也是在头文件中进行的。例如,下面声明了三个槽:public slots: void mySlot(); void mySlot(int x); void mySignalParam(int x,int y);1010u 信号槽企想学院相关知识介绍u 信号与槽的连接 所有从 QObject 或其子类 ( 例如 Qwidget ) 派生的类都能够包含信号和槽。因为信号与槽的连接是通
6、过 QObject 的 connect() 成员函数来实现的。其代码使用如下: connect(sender, SIGNAL(signal), receiver, SLOT(slot); 其中 sender 与 receiver 是指向对象的指针,SIGNAL() 与 SLOT() 是转换信号与槽的宏。11 11u 信号槽企想学院相关知识介绍1212u QComboBox函数说明void addItems (const QStringList & texts)在QComboBox的最后添加一项,其中texts参数便是添加的内容。int count () const返回列表项总数。int cur
7、rentIndex () const当前显示的列表项序号。QString currentText () const返回当前显示的文本。void insertItems (int index, const QStringList & list)插入一项或多项内容至序号index处。void insertSeparator ( int index)在序号为index的项前插入分隔线。void setItemText (int index, const QString & text)改变序号为index项的文本。 ComboBox是QT GUI中的下拉列表框,它用于显示特定字段的可能值列表,当单击该
8、控件时会显示与该字段关联的值列表,用户可选择其中的一个值。QComboBox类具有如下表所示的常用方法和属性,运行效果如下图所示:企想学院l 项目实施1313企想学院项目实施u 环境监测作为智能家居应用中的重要功能之一,其主要是利用诸如温度传感器、湿度传感器、光照传感器和CO2传感器等协调工作,将自然界中的各类非电信号转化成电信号,让用户能够全面直观的了解其周围的生活环境。u 通过本项目的完成,使学生可以掌握以下技能: 能够完成功能界面的合理布局; 能够理解并灵活使用信号槽及QComboBox控件; 能够利用代码实现环境数据的实时监测功能; 能够通过调试解决代码的错误提示并保证正常编译运行。1
9、414u 方案设计和项目目标企想学院项目实施 在上一章的工程项目基础上添加SerialThread类,其步骤如下:(1)鼠标右击SmartHome项目,在弹出的工具栏中选择“添加新文件”,如右图所示。(2)点击“添加新文件”后在弹出的“新建文件”对话框中选择“C+类”,随后单击“选择”按钮,如右图所示。1515u 添加C+类文件企想学院项目实施(3)在弹出的“C+类向导”界面中的类名对话框输入SerialThread,在基类对话框中输入QThread,其界面如右图所示,完成后单击“下一步”。(4)在弹出的“项目管理”界面单击“完成”按钮,至此C+类的添加便已完成,如右图所示。1616u 添加C
10、+类文件企想学院项目实施(5)修改serialthread.h头文件,在其首部引入其它功能的头文件,以此实现功能模块之间的交互,因此在代码#include 下一行写入如下代码:#include posix_qextserialport.h/导入串口支持类头文件(6)随后在以上代码的下一行声明zhi3和ttys两个全局变量,其代码和注释如下所示:extern int zhi3;/用数组存储界面上QComboBox选择的参数extern QString ttys;/用于存储与服务端进行数据交换的端口号17 17u 添加C+类文件企想学院项目实施(7)在class SerialThread : pu
11、blic QThread函数的public中声明Posix_QextSerialPort类实例化的变量,同时在signals:中编写信号函数,其详细代码如下所示: public: explicit SerialThread(); Posix_QextSerialPort *m;/实例化串口类 void run();signals: void serialFinished(QByteArray str);/信号函数,str用于串口返回来的数据(8)打开源文件serialthread.cpp,对头文件serialthread.h中声明的zhi3和ttys两个全局变量进行初始化,其位置处于#incl
12、ude serialthread.h下一行,具体代码如下:int zhi3=0,0,0;QString ttys=;1818u 添加C+类文件企想学院项目实施(9)在函数SerialThread:SerialThread()中输入功能代码,其主要用于实现串口数据交换的配置,具体代码如下: struct PortSettings tty; /实例化串口,并对其进行配置 m=new Posix_QextSerialPort(/dev/+ttys,tty,QextSerialBase:Polling); /定义串口对象,指定串口名和查询模式 m-open(QIODevice:ReadWrite);/
13、设置串口读写 m-setBaudRate(BaudRateType(zhi0); /设置波特率 m-setDataBits(DataBitsType(zhi2);/设置数据位 m-setFlowControl(FLOW_OFF); /数据流控制设置 m-setParity(ParityType(zhi1);/设置校验位 m-setStopBits(STOP_1);/设置停止位 m-setTimeout(70); /延时设置1919u 添加C+类文件企想学院项目实施(10)在程序尾部插入头文件serialthread.h中run()函数的具体功能实现,代码如下:void SerialThread
14、:run() while(1) /对比40ms前后收到的两段数据,一直的话即读取数据 int len=m-bytesAvailable();/把接收到的包赋值 msleep(40); /延迟40ms if(len=m-bytesAvailable()/判断接受到的包是否一致 QByteArray t=m-readAll(); /读取串口缓冲区的所有数据给临时变量t emit this-serialFinished(t); /把serialFinished信号发射出去 2020u 添加C+类文件企想学院项目实施u TabWidget控件对上一章中的界面文件smart.ui进行设计,使用Tab W
15、idget控件将其分成四个功能模块,分别是环境监测、家电控制、自动控制和数据可视,因此本部分界面中主要需要注意Tab Widget和Combo Box两个控件。其中Tab Widge控件的详细使用方法如下:(1)选择找到界面文件,在本项目中以smart.ui为例。双击“smart.ui”文件,进入图形化界面设计窗体,在窗体的左侧的Containers栏找到TabWidget图标,如右图所示。TabWidget就是Qt开发中用于页面切换的控件。2121u 修改界面布局企想学院项目实施(2)选中TabWidget图标,将它拖拽至界面中,就成功地在界面中添加了一个页面切换控件了。此时可以将TabWi
16、dget中的文本修改成符合项目需求的文本了,在此处就以“环境监测”为例。点击刚刚拖出来的TabWidget中的需修改文本的某一页,在右侧的属性栏中找到currentTabText属性,在其中输入文本“环境监测”即可,如图所示。2222u 修改界面布局企想学院项目实施(3)为了在项目以后的开发过程中,避免控件太多导致的混淆,就需要修改控件的名称,在右上角的控件列表中找到这个TabWidget,修改它的名称,在此处就以SmartHome为例,如左图所示。如果为了修改其中某一页面的控件名称,只需按照上述方法将TabWidget下面的该页面的名称修改即可,此处以第一个“环境监测”界面为例,将其名称修改
17、为Environment,修改后的界面如右图所示。2323u 修改界面布局企想学院项目实施(4)如果要在当前页面的基础上继续增加页面,则只需单击最后一个页面,随后鼠标选择“插入页”,并在右边工具栏点击“在当前页之后”,如左图所示。插入页面的结果如右图所示,后续具体操作只需重复上述步骤即可。2424u 修改界面布局企想学院项目实施u Combo Box控件对于Combo Box控件的使用方法如下:(1)选择找到界面文件,在本项目中以smart.ui为例。双击“smart.ui”文件,进入图形化界面设计窗体,在窗体的左侧的Input Widgets栏找到Combo Box图标,如图右所示。Comb
18、o Box就是Qt开发中的组合框,这个控件是由一个文本输入控件和一个下拉菜单组成的,可以节省空间。2525u 修改界面布局企想学院项目实施(2)选中Combo Box图标,将它拖拽至界面中,就成功地在界面中添加了一个组合框了。此时可以在Combo Box中添加符合项目需求的文本了,在此处就以“光照”为例。双击刚刚拖出来的Combo Box控件,在弹出的“编辑组合框”中点击加号按钮,及新建文件按钮,如图所示。2626u 修改界面布局企想学院项目实施(3)在新建的文本框中输入“关照”,随后按照此方法依次添加所需项目,最后单击“确定”完成组合框选项设置,如右图所示。(4)为了在项目以后的开发过程中,
19、避免控件太多导致的混淆,就需要修改控件的名称,在右上角的控件列表中找到这个Combo Box,修改它的名称,在此处就以comboBox为例,如右图所示。2727u 修改界面布局企想学院项目实施 对主界面文件smart.ui进行重新设计,其界面布局效果图如图所示:2828u 修改界面布局企想学院项目实施控件的详细信息如表所示:2929u 修改界面布局控件ID控件类别控件内容labelQLabel服务器IP:label_2QLabel端口号:label_3QLabel串口号:label_4QLabel波特率:label_5QLabel校验位:label_6QLabel数据位:label_7QLab
20、el监测对象:label_8QLabel温度:label_9QLabel湿度:label_10QLabel人体:label_11QLabel光照:label_12QLabel烟雾:label_13QLabel燃气:label_14QLabel气压:label_15QLabelPM2.5label_16QLabelCO2:lbServerIPQLabel0.0.0.0lbPortQLabel0控件ID控件类别控件内容lbTempQLabel0lbHumidityQLabel0lbRTQLabel无人lbIllQLabel0lbSmokeQLabel0lbGasQLabel0lbAirQLabel
21、0lbPM25QLabel0lbCo2QLabel0cbPortQComboBoxttyUSB0cbBaudQComboBox9600cbFlowQComboBox偶校验cbDataQComboBox8cbQJQComboBox光照btnLinkQPushButton打开串口btnLinkServerQPushButton连接服务器btnListenQPushButton监听btnCloseQPushButtonleMaxQLineEdit最大值:企想学院项目实施 环境监测功能主要是用于实时读取传感器采集的环境参数,并利用数值的形式展示给用户,使其对周围环境有一个量化的了解。该模块功能主要由头
22、文件smart.h和源文件smart.cpp实现。其中smart.h的具体编写步骤如下:(1)打开头文件smart.h并修改,在其首部引入其它功能的头文件,以此实现功能模块之间的交互,因此在代码#include 下一行写入如下代码:#include login.h/导入登录功能头文件#include command.h/导入参数命令头文件#include configure.h/导入配置功能头文件#include log.h/导入日志功能头文件#include sql.h/导入数据库功能头文件#include tcpclientthread.h/导入环境参数传递至服务器操作的客户端线程类头文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 环境监测ppt课件 环境监测 ppt 课件
限制150内