论文部分内容阅读
摘 要:主要阐述了自动站温湿度传感器数据采集及处理系统的软件设计,分析了其功能、结构、界面设计,介绍了数据的采集、存储、查询、证书打印等的实现算法。经实践验证,该系统提高了传感器的检定速度,节省了检定人力。
关键词:温湿传感器批量检定系统;软件设计;用户界面;数据管理
目前对于国内气象站温度、湿度及气压传感器的检定主要还是依靠自动站采集器,通过采集器监控软件显示传感器读数,由于受自动站采集器通道的限制,各传感器的批量检定还不能实现,校准数据和证书还是以人工输入为主,在这种条件下使得传感器的检定耗时长、占用人力多[1]。为了改善这种状况,在VC6.0环境下使用MSComm通信控件和SQL Sever 2000数据库技术,开发了自动站温湿度传感器数据采集及处理系统,实现多路温湿传感器的数据批量采集,实现对于温湿传感器的批量检定。
1 软件的主要功能、结构和界面设计
本系统主要通过对温湿度传感器的数据采集,实现对温湿传感器批量检定。整个系统在Visual C++ 6.0环境下开发,总共包括五大模块:温湿度传感器数据检测模块、温湿度传感器数据存储模块、温湿度传感器合格与否自动判定模块、温湿度传感器数据查询模块、相关证书的打印模块。
软件的各功能菜单采用统一格式的用户串口界面。其中,屏幕显示的是以下几个方面:⑴主界面,由背景界面和主菜单组成;⑵点击检测菜单时,显示温湿度传感器的信息界面,所填的信息包括所测传感器的信息和标准器的信息。⑶该系统的查询功能可对检测数据和检测结论分别查询。
2 数据的采集、存储和查询
2.1 串口通信实现数据的批量采集
串行通信应用广泛,在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息[2]。在Visual C++ 6.0环境下,一般使用控件‘MSComm’控件进行串行通信开发。通过MSComm控件,上位机也可以实现对下位机的操作,比如实时显示数据,更改需要检测的传感器个数等。
2.1.1 检测数据的实时显示
该系统要求每隔3秒钟一次显示1号,2号,…,n号传感器所检测的温度/湿度数据,即要求实现数据的实时显示。具体算法为:设置一个3秒定时器,每隔3秒向下位机发送一个数据,用于通知单片机需要几号传感器的测量值,并且根据不同的数据告知单片机需要的是温度值,还是湿度值,进而可以区别测量温湿度的值。在本系统中,当需要传感器检测的温度值时,上位机会向下位机发送0xF0-0xF7;需要传感器检测的湿度值时,上位机会向下位机传送0xF8-0xFF。下位机根据上位机的数据,选择输出不同的传感器的温度/湿度值。上位机接受到数据之后,显示在相应的编辑框中。
2.1.2 传感器有效个数的更改
执行更改需要检测的传感器个数的程序,具体的算法:根据用户在下拉列表中选择的个数,调用CWnd中的子函数GetDlgItem()和EnableWindow()函数使得被选中的所有的传感器相应的编辑框有效。
2.2 SQL-Server 2000数据库实现数据的存储和查询
SQL-Server 2000是微软公司开发的中型数据库,它的可视化方面做得很好,在安全性等方面功能非常强大,并且有微软的强大技术支持。连接和使用SQL Server数据库有多种不同方法,包括ODBC,DAO和RDO等。ADO是Microsoft的主要数据访问方法,故本系统采用ADO方法。ADO与OLE DB是Microsoft的Universal Data Access(UDA)策略中的关键组件。OLE DB定义一组COM接口,包括数据访问服务。ADO是个高级对象模型,将OLE DB提供的数据提供给应用程序。UDA(universal data access,通用数据访问,也叫全局数据访问)是microsoft为企业应用范围内各种类型信息存取所制定的一项新战略,它提供对多种数据源进行存取的一致界面。
利用Microsoft OLE DB Provider for SQL Server(SQLOLEDB),可不必访问另一ODBC API和驱动器层,可以直接访问数据源。要使用这个数据提供者,经连接字符串的Provider变元设置为SQLOLEDB。
与DAO和RDO等数据访问库相比,ADO对象模型很简单,主要有五个对象,可以实例化更多底层集合和对象。Connection对象,表示打开的数据源连接;Command对象,可以对SQL Server执行命令;Recordset对象,是从SQL Server返回的一组记录,但Recordset对象还提供了客户机应用程序中读取、更新和操纵数据的机制[3]。本系统较多使用了Recordset对象对数据库进行操作;Record对象,表示层次式机构中存放的数据,Record对象也可表示Recordset中的行,利用这个对象可以管理文件系统中的目录和文件,或e-mail系统中的文件夹与消息。
本系统共需要三个表格:温湿传感器的信息(HTSensorI nfo)、温湿传感器湿度检测数据(HTHSensorData)、温湿传感器温度检测数据(HTTSensorData),每個表格中包含所需要存储的各个变量。这三个表格同在HTSensor数据库中。
使用SQLOLEDB连接SQL Server数据库,连接字符串如下:
"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=HTSensor";
2.2.1 数据的存储
对于数据库的存储主要有两个方面,一个是在没有数据的情况下进行数据的插入,另一个是原来存在数据,则进行数据的更新。 插入数据用到的是SQL Server中的INSERT语句,例如:
"INSERT INTO HTSensorInfo(ChuChangNum,… …,Conclusion)VALUES(+ChuChangNum+,… …,+Conclusion+)";
更新数据用到的是SQL Server中的UPDATE语句,例如:
"UPDATE HTSensorInfo SET SensorName=+SensorName+,… …,Conclusion=+Conclusion+WHERE ChuChangNum=+ss+";//ss是参变量。
2.2.2 数据的查询
数据的查询主要用到了Visual C++的三个控件:ADO Data控件;DataGrid控件;DataCombo控件。
⑴ADO Data控件:使用ADO Data控件可以快速地创建一个到数据库的连接,并且它调用Recordset对象提供对存储在数据库中的数据的访问,并允许从一个记录移动到另一个记录,显示和操纵记录数据。ADO Data可以执行大部分对数据库的操作,但是它不能够显示数据库中的数据,一般会和数据察觉控件搭配使用,比如DataGrid控件、DataCombo控件、DataList控件。当ADO Data控件中的当前记录发生变化时,数据查询控件中的数据也随之发生变化。
本文中,对于每个用到的数据表格都关联了相应的ADO Data控件。这样,就可以实现了将数据库中的数据与数据察觉控件相联系,显示数据库中的数据。
⑵DataGrid控件:DataGrid控件以表格的形式显示结果集中的数据,它需要ADO Data控件提供数据源。与关练了数据库中相关表格大ADO Data控件相结合,DataGrid控件中便可以显示测量的数据。
⑶DataCombo控件:DataCombo控件是数据绑定组合框。其外表是一个组合框的形式,它与一般的组合框的不同之处在于它需要一个ADO Data控件指定数据源,并且使用数据源中的一个字段填充。而这个字段将是显示在这个组合框中的内容。鉴于本系统的查询要求,本系统用到的所有DataCombo控件都是和数据源中的仪器编号相联系。
本系统中的查询界面由数据查询和检验结论查询两部分组成。使用两个Adodc控件分别为DataCombo控件和DataGrid控件提供数据。利用SELECT语句实现查询功能。举例如下:
CString strSql="SELECT Sensor_id,ChuChangNum AS 出厂编号,… …,Time AS检校时间FROM HTSensorInfo";
3 调用EXCEL实现数据、证书的输出打印
因为证书有一定的格式,所以实现证书的打印,用到的算法为:预先设定好相应的模板,在Visual C++环境中调用一定格式的Excel表格进行数据的导出、证书的打印等。
在Visual C++中根据模板创建EXCEL的程序为:
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if (!m_App.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
return;
}
m_App.SetVisible(false);
//利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\"+moban;//‘moban’为参变量。‘moban’不同,创建出的EXCEL表格便不相同。
m_Books.AttachDispatch(m_App.GetWorkbooks(),true);……
4 结束语
该系统集数据采集、数据存贮、证书打印于一体,适用于铂电阻温度表、气压传感器(模拟信号输出)、湿度、風向(模拟信号输出)传感器的批量校准,为自动气象站传感器室内检定、校准发挥了重要作用。
[参考文献]
[1]李光忠.基于单片机的温湿度检测系统的设计[D].山东大学,2007.
[2]李长林,高洁.Visual C++串口通信技术与典型实例[M].北京:清华大学出版社.2006,20-25.
[3]孙鑫.VC ++深入详解[M].北京:电子工业出版社.2008,752-767.
关键词:温湿传感器批量检定系统;软件设计;用户界面;数据管理
目前对于国内气象站温度、湿度及气压传感器的检定主要还是依靠自动站采集器,通过采集器监控软件显示传感器读数,由于受自动站采集器通道的限制,各传感器的批量检定还不能实现,校准数据和证书还是以人工输入为主,在这种条件下使得传感器的检定耗时长、占用人力多[1]。为了改善这种状况,在VC6.0环境下使用MSComm通信控件和SQL Sever 2000数据库技术,开发了自动站温湿度传感器数据采集及处理系统,实现多路温湿传感器的数据批量采集,实现对于温湿传感器的批量检定。
1 软件的主要功能、结构和界面设计
本系统主要通过对温湿度传感器的数据采集,实现对温湿传感器批量检定。整个系统在Visual C++ 6.0环境下开发,总共包括五大模块:温湿度传感器数据检测模块、温湿度传感器数据存储模块、温湿度传感器合格与否自动判定模块、温湿度传感器数据查询模块、相关证书的打印模块。
软件的各功能菜单采用统一格式的用户串口界面。其中,屏幕显示的是以下几个方面:⑴主界面,由背景界面和主菜单组成;⑵点击检测菜单时,显示温湿度传感器的信息界面,所填的信息包括所测传感器的信息和标准器的信息。⑶该系统的查询功能可对检测数据和检测结论分别查询。
2 数据的采集、存储和查询
2.1 串口通信实现数据的批量采集
串行通信应用广泛,在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息[2]。在Visual C++ 6.0环境下,一般使用控件‘MSComm’控件进行串行通信开发。通过MSComm控件,上位机也可以实现对下位机的操作,比如实时显示数据,更改需要检测的传感器个数等。
2.1.1 检测数据的实时显示
该系统要求每隔3秒钟一次显示1号,2号,…,n号传感器所检测的温度/湿度数据,即要求实现数据的实时显示。具体算法为:设置一个3秒定时器,每隔3秒向下位机发送一个数据,用于通知单片机需要几号传感器的测量值,并且根据不同的数据告知单片机需要的是温度值,还是湿度值,进而可以区别测量温湿度的值。在本系统中,当需要传感器检测的温度值时,上位机会向下位机发送0xF0-0xF7;需要传感器检测的湿度值时,上位机会向下位机传送0xF8-0xFF。下位机根据上位机的数据,选择输出不同的传感器的温度/湿度值。上位机接受到数据之后,显示在相应的编辑框中。
2.1.2 传感器有效个数的更改
执行更改需要检测的传感器个数的程序,具体的算法:根据用户在下拉列表中选择的个数,调用CWnd中的子函数GetDlgItem()和EnableWindow()函数使得被选中的所有的传感器相应的编辑框有效。
2.2 SQL-Server 2000数据库实现数据的存储和查询
SQL-Server 2000是微软公司开发的中型数据库,它的可视化方面做得很好,在安全性等方面功能非常强大,并且有微软的强大技术支持。连接和使用SQL Server数据库有多种不同方法,包括ODBC,DAO和RDO等。ADO是Microsoft的主要数据访问方法,故本系统采用ADO方法。ADO与OLE DB是Microsoft的Universal Data Access(UDA)策略中的关键组件。OLE DB定义一组COM接口,包括数据访问服务。ADO是个高级对象模型,将OLE DB提供的数据提供给应用程序。UDA(universal data access,通用数据访问,也叫全局数据访问)是microsoft为企业应用范围内各种类型信息存取所制定的一项新战略,它提供对多种数据源进行存取的一致界面。
利用Microsoft OLE DB Provider for SQL Server(SQLOLEDB),可不必访问另一ODBC API和驱动器层,可以直接访问数据源。要使用这个数据提供者,经连接字符串的Provider变元设置为SQLOLEDB。
与DAO和RDO等数据访问库相比,ADO对象模型很简单,主要有五个对象,可以实例化更多底层集合和对象。Connection对象,表示打开的数据源连接;Command对象,可以对SQL Server执行命令;Recordset对象,是从SQL Server返回的一组记录,但Recordset对象还提供了客户机应用程序中读取、更新和操纵数据的机制[3]。本系统较多使用了Recordset对象对数据库进行操作;Record对象,表示层次式机构中存放的数据,Record对象也可表示Recordset中的行,利用这个对象可以管理文件系统中的目录和文件,或e-mail系统中的文件夹与消息。
本系统共需要三个表格:温湿传感器的信息(HTSensorI nfo)、温湿传感器湿度检测数据(HTHSensorData)、温湿传感器温度检测数据(HTTSensorData),每個表格中包含所需要存储的各个变量。这三个表格同在HTSensor数据库中。
使用SQLOLEDB连接SQL Server数据库,连接字符串如下:
"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=HTSensor";
2.2.1 数据的存储
对于数据库的存储主要有两个方面,一个是在没有数据的情况下进行数据的插入,另一个是原来存在数据,则进行数据的更新。 插入数据用到的是SQL Server中的INSERT语句,例如:
"INSERT INTO HTSensorInfo(ChuChangNum,… …,Conclusion)VALUES(+ChuChangNum+,… …,+Conclusion+)";
更新数据用到的是SQL Server中的UPDATE语句,例如:
"UPDATE HTSensorInfo SET SensorName=+SensorName+,… …,Conclusion=+Conclusion+WHERE ChuChangNum=+ss+";//ss是参变量。
2.2.2 数据的查询
数据的查询主要用到了Visual C++的三个控件:ADO Data控件;DataGrid控件;DataCombo控件。
⑴ADO Data控件:使用ADO Data控件可以快速地创建一个到数据库的连接,并且它调用Recordset对象提供对存储在数据库中的数据的访问,并允许从一个记录移动到另一个记录,显示和操纵记录数据。ADO Data可以执行大部分对数据库的操作,但是它不能够显示数据库中的数据,一般会和数据察觉控件搭配使用,比如DataGrid控件、DataCombo控件、DataList控件。当ADO Data控件中的当前记录发生变化时,数据查询控件中的数据也随之发生变化。
本文中,对于每个用到的数据表格都关联了相应的ADO Data控件。这样,就可以实现了将数据库中的数据与数据察觉控件相联系,显示数据库中的数据。
⑵DataGrid控件:DataGrid控件以表格的形式显示结果集中的数据,它需要ADO Data控件提供数据源。与关练了数据库中相关表格大ADO Data控件相结合,DataGrid控件中便可以显示测量的数据。
⑶DataCombo控件:DataCombo控件是数据绑定组合框。其外表是一个组合框的形式,它与一般的组合框的不同之处在于它需要一个ADO Data控件指定数据源,并且使用数据源中的一个字段填充。而这个字段将是显示在这个组合框中的内容。鉴于本系统的查询要求,本系统用到的所有DataCombo控件都是和数据源中的仪器编号相联系。
本系统中的查询界面由数据查询和检验结论查询两部分组成。使用两个Adodc控件分别为DataCombo控件和DataGrid控件提供数据。利用SELECT语句实现查询功能。举例如下:
CString strSql="SELECT Sensor_id,ChuChangNum AS 出厂编号,… …,Time AS检校时间FROM HTSensorInfo";
3 调用EXCEL实现数据、证书的输出打印
因为证书有一定的格式,所以实现证书的打印,用到的算法为:预先设定好相应的模板,在Visual C++环境中调用一定格式的Excel表格进行数据的导出、证书的打印等。
在Visual C++中根据模板创建EXCEL的程序为:
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if (!m_App.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
return;
}
m_App.SetVisible(false);
//利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\"+moban;//‘moban’为参变量。‘moban’不同,创建出的EXCEL表格便不相同。
m_Books.AttachDispatch(m_App.GetWorkbooks(),true);……
4 结束语
该系统集数据采集、数据存贮、证书打印于一体,适用于铂电阻温度表、气压传感器(模拟信号输出)、湿度、風向(模拟信号输出)传感器的批量校准,为自动气象站传感器室内检定、校准发挥了重要作用。
[参考文献]
[1]李光忠.基于单片机的温湿度检测系统的设计[D].山东大学,2007.
[2]李长林,高洁.Visual C++串口通信技术与典型实例[M].北京:清华大学出版社.2006,20-25.
[3]孙鑫.VC ++深入详解[M].北京:电子工业出版社.2008,752-767.