基于VC的智能甲醛监测软件设计与应用

2022-02-19 10:23余燕娟
计算机应用与软件 2022年2期
关键词:甲醛绘制计量

余燕娟 高 翔

1(漳州职业技术学院 福建 漳州 363099) 2(厦门大学第一附属医院 福建 厦门 361003)

0 引 言

甲醛(HCHO),又名蚁醛,是一种带有刺激性气味的气体[1]。甲醛一直被用于木材、塑料、医药、纺织、机械等行业生产过程中,同时甲醛会与生物细胞产生反应,如人体接触高浓度甲醛,甲醛便会与人体蛋白质结合,会使得细胞受损,引发水肿、头疼等一系列症状,对低浓度的甲醛人体会由代谢系统排除。我国国家标准规定居室空气中甲醛的最高允许浓度为0.08 mg/m3,公共场所甲醛的最高允许浓度为0.10 mg/m3[2]。甲醛对人体的伤害因浓度的高低而不同,其中人体处于高浓度甲醛环境中会使得身体组织产生不可逆性的伤害[3]。因此为了保障人员的身体健康,在生产过程中会产生甲醛的工厂实现对甲醛的实时监测十分重要。

工厂应该对产生中易产生甲醛的过程进行监测,以保证员工作业安全,但目前针对甲醛的连续监测仍处于空白[4]。针对社会需求团队设计了适合于工厂环境的多点甲醛监测仪。该监测装置基于RS485总线分布式总线控制结构,实现了多个甲醛采集板的与中心控制板的通信方式,完成了多个数据采集板的级联。采集器采用MSP430单片机为核心工作部件,采用纳米材料的甲醛传感器检测甲醛计量。选取台湾工研院资深研发的高精度泓格AD和DA模块,用于加强数据的采集和处理。对甲醛出现超标状况下设置开启排气系统及报警提醒等两种保护措施命令的下发,利用低电压、低功耗无线网络通信模块实现与PC机的对接。甲醛检测系统的结构如图1所示。

图1 甲醛监测系统的结构框图

与常规单点检测的甲醛测试仪[5]不同,该甲醛监测仪可对工厂5个生产点进行甲醛计量的实时监测,实现了低功耗、网络化、智能化的设计。选取高精度的传感器和AD元件,保证精准性和灵敏度。为了实现对甲醛监测数据和对甲醛报警信息的汇总,设计利用网络通信模块将数据上传PC机。本文基于此硬件平台进行软件设计,实现智能甲醛监测软件,完成工厂中多点甲醛的实时显示、报警、数据存储、查看等多种功能。

1 关键技术

智能甲醛监测软件在VC++的开发平台完成设计,利用窗口化的设计模式,采用面向对象的设计语言C++[6],选择数据可视化开发模块PlotLab,利用自主开发的仪表类,结合SQLite嵌入式关系型数据库完成了软件开发。

1.1 PlotLab VC++数据可视化

数据可视化设计是智能甲醛测试软件设计的重要部分,帮助用户快速获取数据信息、捕抓信息特点。本文设计嵌入了数据可视化的PlotLab_VCL控件,控件以类的方式提供了用户快速信号绘制接口函数,可以实现柱行、波浪行、星点行等多种模式图形的绘制及数据的分析[7],其形状如图2所示。PlotLab具备模块化的设计方式让程序的设计和数据显示更轻松、简易,同时PlotLab以多线程编程方式完成开发,因此运行速度快。PlotLab可以嵌入到多种应用程序开发中,VC++程序的开发选择的是PlotLab_VC版本。安装PlotLab_VC软件,设置安装环境及链接库,即可在工程中调用PlotLab的函数库。通过头文件的调用打开程序接口:“#include ”。在资源中添加画布对象,并定义控件变量CTSLScope Scope,利用VCL_InitControls()函数将画布与Scope实现关联,Scope绘制的图形就可以在画布上面呈现。

图2 PlotLab中数据显示模式

以柱状图为例,Scope可以利用其接口函数为完成显示样式的选择:

Scope.Channels[0].ChannelMode=cmBar;

//cmBar为柱状图

……

Scope.Channels[0].Data.Clear();

……

//开启定时器用于接收数据并显示

Scope.Channels[0].Data.AddXYPoint(m_Date);

……

PlotLab通过定时器的AddXYPoint()函数完成数据的添加,完成数据图形可视化的设计。

1.2 多功能仪表类设计

为了更加形象地显示甲醛环境中温湿度的监测,软件设计适合温湿度显示的CStThermometer仪表类。CStThermometer利用Visual C++提供了CDC绘图类,调用基础绘图函数完成图形的绘制,程序中主要使用LineTo()直线/折线、Rectangle()矩形函数完成图形绘制[8]。

CStThermometer图形如图3所示,图形利用从背景、基本元件、刻度、数据等几个步骤层层叠加的方式完成绘制。

图3 CStThermometer图形类绘制

主要程序如下所示:

pDC->FillSolidRect(&m_rectCtrl,m_clrBackGround);

//绘制填充背景颜色

//绘制温度计的刻度

ScaleFont.CreateFont(……)

//创建刻度笔

for(int i=0;i<=m_nTicks;i++)

//绘制大刻度

{

pDC->MoveTo(……);

pDC->LineTo(……);

if(i

//绘制子刻度

{ for(int j=1;j

{ pDC->MoveTo(……);

pDC->LineTo(……);

}

}

……

}

OnDrawData(……)

//绘制数据

在绘制背景、刻度等变量时,为了体现温度控件立体效果,提高用户感官体验,CStThermometer类对仪表进行三种颜色画笔交错绘制,利用位置及颜色的差异为视觉呈现立体效果[9],使得仪表呈现更真实。

使用CStThermometer类需调用#include “CStThermometer.h”头文件,同时在资源中增加画布STATIC变量,利用画布与CStThermometer关联,利用接口函数完成数据设置:

SetMaxValue(maxvalue);

//设置量程最大值

SetLimit()

//设置限值函数

SetData()

//设置数值函数

1.3 嵌入式数据管理

智能甲醛监测系统中数据与数据之间不存在复杂的关系,为了方便用户可以快速使用软件,不必安装数据库软件及架设服务器[10],本文设计选择嵌入式关系型数据库SQLite完成嵌入数据存储、调用管理。SQLite数据库可以免安装直接嵌入到智能甲醛监测系统中,其仅有一个.db文件,用户在使用时可以直接拷贝,其最大的特点是小巧、简单、代码精简,方便用户移植智能甲醛监测系统程序。SQLite数据库在这种零状态配置模式下与应用系统有效结合,效率高、稳定性强。

SQLite数据库与应用程序建立的联系方式有很多,如SQLite3命令行程序、SQLite共享库、TCL扩展方式等[11]。智能甲醛监测系统选择了SQLite共享库的方式打开数据库与程序的接口,程序通过添加sqlite3.dll及头文件sqlite3.h连接文件,并利用sqlite3_open()函数开启了与数据库通信的通道,如图4所示。

图4 SQLite数据库共享链接库链接模式

智能甲醛监测软件在访问数据库操作主要包括甲醛计量的存储、查看、筛查等,SQLite采用SQL语言完成上述数据操作需求。区别于直接使用SQL语言,SQLite数据库使用数据库执行函数嵌套SQL语言的方式执行,其部分程序如下:

char*sql="CREATE TABLE table1(……);";

//SQL语言创建表格

sqlite3_exec(db,sql……);

//SQLite语言执行SQL建表命令

sql="SELECT*FROM table1";

//SQL查询

sqlite3_get_table(db,sql,&azResult,&nrow,&ncolumn,&zErrMsg);

//SQLite语言执行SQL查询数据命令

SQLite3存储中文数据会出现乱码现象,因为SQLite3数据库默认的编码格式为ASCII码,而VC++程序默认使用的是Unicode编码。因此在存储中文数据时候需要对中文数据由Unicode转换成ASCII码,同时在读取数据库表格时需将ASCII码进行编码模式的转换,否则读到的数据也将是乱码。程序结束需利用sqlite3_close(db)函数关闭创建的数据库文件,断开程序与数据库的握手通道。

1.4 多线程网络通信类

硬件设备利用无线通信模块与PC机进行通信,其中无线通信模块采用网络方式完成通信,因此程序设计了网络通信类CSoketConnect。CSoketConnect是以Windows提供的WinSock套接字为基础,编程中需要先调用套接字,程序如下所示,WinSock只支持一个通信域,即网际域(AF_INET)[12]。

#include "winsock2.h"

#include

#pragma comment(lib,"ws2_32")

//导入Socket的动态链接库

程序设计的网络套接字具有两种模式,分别为MODE_ASYN异步接收模式和MODE_SYN同步接收模式。在同步模式的网络套接字在调用发送/接收数据时,函数结束时相应的发送/接收处理操作也同时结束,如果函数未结束,那么网络套接字的程序进行等待状态。而使用异步模式下,发送/接收函数被调用结束时,数据发送到消息机制中处理,并不知道网络套接字对是否结束,处理结果会通过事件结果反馈。网络通信类CSoketConnect网络编程中结合了事件驱动方式[13],实现了在单个程序设计中多个网络的连接,事件驱动方式是将网络通信的权限下放给事件,不断轮询所负责的WinSock,当有WinSock数据到达时,再通知程序。

设置程序变量SOCKET m_Socket,并可以利用InitSocket()函数实现异步模式连接到对应网络。网络就自动进入事件驱动的多线程模式,利用监视线程时刻监督网络的通信状态,保证数据可靠和稳定。

event=WaitForMultipleObjects(……);

//等待网络事件

switch(event)

//对事件进行判定

{

case 0:

//要求停止网络,结束监视线程

AfxEndThread(100);……

case 1:

//人工操作连接无反应,重启事件

time=0;

ResetEvent(psocket->m_HandleOperate);

break;

case 2:

//超时连接,进行多次同步模式网络重连

ResetEvent(psocket->m_HandleTime);

if(time>=0)

{……

psocket->ConnectSyn()

//利用同步模式重连网络判断是否成功

}}

在出现网络中断将进行重连,此时采用同步模式连接网络,等到超时仍未连接上,接收到报错信息才停止。利用监视线程对网络的通信状态及错误进行跟踪,保障了系统运行的实时准确性。

2 软件功能、框架和实现

2.1 软件功能分析

设计软件要实现现场对甲醛的计量监测需要满足如下功能:

(1) 对多个甲醛计量、环境PM2.5的值、温度湿度数据的监测,对获取的原始数据进行解码,获得对应计量值,并显示在对应界面上;(2) 通过计算并显示每个数据监测点中甲醛最高计量、最低计量和平均计量;(3) 可控制监测点的开启状态,开启或者关闭甲醛计量监测功能;(4) 对出现甲醛超标情况的实时报警,同时下发命令,单片机驱动通风排气系统,改善空气质量,保证人员的安全;(5) 对甲醛实时数据进行存储,并设置筛查功能,方便管理人员查看、导出数据。

2.2 软件框架结构

软件架构是设计者从现实世界通向计算机领域工程项目的桥梁[14]。根据软件逻辑框架结构设计流程,对甲醛监测系统用户需求进行分析,对程序中服务的元件之间的关系进行梳理,将程序按照逻辑功能的不同将划分成三部分,如图5所示。

图5 程序设计结构框图

智能甲醛监测软件是面向甲醛测试仪和软件操作员的软件,通过网络方式建立了PC机与甲醛测试仪设备之间的连接,以窗口化图形界面显示的方式向软件操作员提供数据信息及操作。数据的分析、转换、存储、调用都是在软件内部完成,因此业务逻辑操作层是程序核心。根据每个逻辑层的功能不同,将软件框架细分,如图6所示。

图6 智能甲醛监测软件软件框架

智能甲醛监测系统要完成多路甲醛监测、控制、报警、数据存储等功能,因此针对软件操作层需要设置甲醛计量的显示、数据图形化、报警提醒、数据查询等界面显示模块。设备交互层包括程序与PC机工作的Windows的I/O接口[15],与测试仪通信的网络通信程序,以及CSoketConnect类。业务逻辑层中与数据为中心的处理包括数据的转换、存储、调度的实际程序,以及用户操作的动作对应的程序。

2.3 软件实现与应用

基于VS2010开发软件中的VC++开发平台,利用MFC窗口框架设计模式、面向对象的设计方法完成软件开发[16],软件主要功能分为甲醛监测、环境变量监测、监测状态设置、数据存储设置、报警和数据筛查等几个模块。甲醛监测同时显示每个测试点甲醛的最大、最小测试值及平均值,同时利用PlotLab_VC动态显示甲醛波形数据。系统同时监测了PM2.5、温度、湿度参量,监测软件界面如图7所示。

软件与甲醛测试装置进行无线通信,获取数据进行处理,软件内部数据处理流程如图8所示。

图8 智能甲醛监测软件流程

2.4 软件测试与应用

选择了家具厂作为系统的测试点,家具生产过程中要大量使用粘合剂、涂料等,这些材料均会释放甲醛。选取工厂中的五个地点进行监测,根据监测点工作特性将其分为材料区、切割区、组立区、包装区、成品区五个区域,利用甲醛检测仪对监测点的甲醛进行实时监测,并通过无线网络上传控制室的控制软件。通过监测发现不同区域的甲醛监测计量不同,如材料区常在0.16 mg/m3左右,管理人员设置报警界限值为0.15 mg/m3,软件报警并下发信号,开启材料区的通风系统,通风系统的作用使甲醛计量下降。监测发现不同的温湿度值对于甲醛计量有影响,温度和湿度增加五个区域的甲醛监测值均有上升。

通过测试,该智能甲醛监测软件性能稳定、数据准确、可视化强、操作性可靠,且获取的数据可以提供对甲醛进行研究。

3 结 语

智能甲醛监测软件采用面向对象的C++为开发语言,在VS2010的开发软件下,利用嵌入式关系型数据库SQLite完成设计。软件的可拓展性强、用户体验良好。环保是目前我国社会关注的重要问题之一,中国很多企业对甲醛检测仍纯在空缺,因此该软件与硬件配合完成的智能甲醛监测系统具有良好的应用前景,为工厂甲醛监测的软件设计提供了借鉴。

猜你喜欢
甲醛绘制计量
高速公路合同计量变更管理策略
Painting ski maps 绘制滑雪地图
绘制童话
基于信息系统的计量标准管理
甲醛
“零甲醛”家具根本不存在
绘制世界地图
面条里有甲醛?
对公司计量管理工作的一些思考
田德祥:甲醛致癌物再认识