一种智能远程在线测温装置系统的软件设计与实现
2022-04-11冯晓荣
冯晓荣,凌 云
(1.南通大学工程训练中心,江苏 南通 226007;2.杭州开地信息技术有限公司,浙江 杭州 310000)
1 概述
文章围绕一种“准、快、操作方便”的红外线测温装置,实现支持远程服务、自动程度高,但是价格低、操作便捷,方便一线新冠疫情防控工作使用。该装置的人体测温的电路由人环境温度传感器、人体温度传感器以及自校准系统,人脸识别、控制器、本地语音播报、LED 显示器以及远程传输模块组成,在测试人体温度时,人体体表温度受环境影响比较大,控制器先测量环境温度,再测量人体温度,根据环境温度来修正所测量的人体温度,测量的温度实现本地显示和远程上传,根据预先设定的阈值进行正常或异常播报。
本测温系统还带有人脸识别系统,用于对特定区域范围内的群体进行体温测量和跟踪。
2 软件流程
模块设计原则是解耦、颗粒度和时效性,按照此原则划分了软件模块图1,包括基本节拍任务、环境温度测量任务、人体温度测量任务、GPRS处理及自行上报任务、串口通信处理任务、人脸识别处理任务和语音播报处理。
图1 硬件模块图
2.1 测温总体流程
环境温度对人体测温存在重大影响,首先需要测得环境温度,再测得人体温度,通过计算得到实际人体温度并通过远程通道上报到平台,然后判断人体温度是否存在异常,按照设定值有异常则语音报警,否则正常显示人体温度,图2为测温总体流程图。
图2 测温流程框图
2.2 GPRS模块处理及上报流程
人体测得的温度需要上传到平台软件,作为实时跟踪的数据,而上传通过GPRS无线通道连接到平台软件,装置软件有新的温度数据时进行实时上报,装置软件GPRS通道的整体流程如图3所示。
图3 GPRS处理及上报流程图
GPRS通道的登录及心跳的流程如图4所示,登陆帧和心跳帧都需要平台软件应答,登录若没有收到确认帧则会重试三次,都不成功断开重新连接,心跳按照心跳周期发送心跳维持连接在线,GPRS重连如图5所示。
图4 GPRS登录及心跳流程图
2.3 环境温度测量
环境温度测量后,对环境温度进行细分、别分,采用不同的修正模型,对应修正人体温度,具体的流程如图6所示。
2.4 人脸识别流程
人脸识别流程用于实时跟踪特殊人群,特殊人群由使用单位添加,防止人脸数据被滥用,采集到温度需要和人脸图像建立对应关系,如此测温后便可索引历史测得温度,比对出异常信息并报警,历史天数可以配置,流程如图7所示。
图7 人脸识别流程图
3 主要数据结构
·GPRS配置参数结构:
typedef struct GPRS_PARM_STRUCT
{
char iIpAddr[IP_ADDR_LEN]; //IP
unsigned short iPort; //端口
char iAPN[16]; //APN
char iUser[16]; //APN用户名
char iPassword[16]; //APN密码
}STRUCT_GPRS_PARM;
·GPRS数据发送结构
typedef struct
{
unsigned char iRecvFlag:1; //0-尚未接收完成,1-接收完成Ê unsigned char iTimerOut:7;//接收超时时间
unsigned short iLen;//数据长度
unsigned char iData[SIZE_0F_GPRS_SEND_LEN];//发送数据缓冲
}CommStruct_Gprs;
·数据上报结构
typedef struct REPORT_STRUCT
{
unsigned char iSta;// 上报状态 ´Ì¬
unsigned char iLen;//数据长度Ê
unsigned char iData[SIZE_OF_SAVE_READ_DATA];//上报数据缓冲
}ReportStruct;
·串口数据结构
struct UARTOpStruct{
uint08 *TxBuf; // 发送数据指针
uint08 TxLen; //待发送数据长度È
uint08 TxOpc; //已发送数据长度
uint08 *RxBuf; // 接收数据指针
uint08 RxLen; //待接收数据长度
uint08 RxOpc; //已接收数据长度
};
4 主要函数
(1)void IsMainProcessGprsTask(void); //GPRS主循环处理。
(2)void IsTimerReportProcess(unsigned char *iSta);// 上报处理函数。
(3)void IsProcessCfCenter(unsigned char iTcp,unsigned char iParm);//登录心跳维护。
(4)void IsRecvFromCenterProcess(unsign ed char iParm);//数据接收循环处理。
(5)void IsHandleTemperature(void); //温度计算处理。
(6)float Test_ADC_Temperature(void);//ADC采样温度。
(7)void UpdateTemperature(void);// 刷新环境温度。
(8)void IsProcessExtDisTemp(void);//人体温度修正显示。
(9)void IsSciMainProcess(void);// 串口处理任务。
(10)void IsTimeProcess(void);//基本节拍任务。
5 结论
模块分类正确,软件编写规范,在温度数值计算与传输方面基本实现快速与正确。应用本软件系统形成的测温装置已经投入使用,得到用户肯定。