基于数据库和串口技术的数据监控系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于数据库和串口技术的数据监控系统

摘要:ADO和串口通信技术常用于数据采集监控等场合。通过ADO 对象可以建立与数据库的连接,并读写数据库中的数据;利用串口通信程序可在上位机和下位机间进行数据传输。介绍了ADO对象及其导入编程环境的方法,根据具体事例详细描述了利用ADO对象操作数据库,介绍了串口通信程序。结果证明ADO和串口通信技术相结合可以更方便快捷地访问数据库。

关键词:VC++;ADO;数据库;串口;监控系统

0 引言

数据采集作为远程监控的重要组成部分,通常是创建一个普通数据文件如文本文件保存数据。但当数据量很大时,频繁地读写将会消耗很多的系统资源,造成上位机负担加重,实时性恶化,利用数据库管理系统则能较好地解决这一问题。串行通信因其简单方便、成本低廉、适合大规模长距离传输等优点,广泛地应用于远程监控系统中。本文介绍了一种利用ADO技术访问数据库,实现串口数据采集存取的方法。

1 ADO数据库接口技术

1.1 ADO技术简介

ADO(ActiveX Data Object)是微软提出的一种应用程序接口,和DAO、RDO一样,均可以访问数据库中的数据。它是一种功能强大的面向对象的数据访问编程模式,是对当前微软所支持的数据库进

行操作的最有效和最简单直接的方法。由于微软开发的Visual C++语言支持COM库,所以可在VC编译环境下利用ADO对象访问数据库。

1.2 ADO数据库初始化

使用ADO访问数据库之前有两个准备步骤:①导入ADO类型库;②初始化COM库。

一般在stdafx.h头文件中,使用#import指令导入ADO类型库,程序语句如下:

#import“C:Program FilesCommon FilesSystemadomsado15.dll”no_namespace

rename(“EOF”,“adoEOF”)rename(“BOF ”,“adoBOF”)在调用ADO对象之前,必须先初始化库环境,调用结束后再释放资源。在应用程序的InitInstance()成员函数中添加初始化函数::CoInitialize(NULL),在ExitInstance()成员函数中添加::CoUninitialize()函数释放资源。

1.3 链接数据库

ADO动态链接库定义了_ConnectionPtr智能指针用以创建一个数据库连接,返回一个记录集或空指针。其操作步骤是:首先利用指针创建Connection对象,然后调用open()函数建立连接。程序语句如下:

_ConnectionPtr pConnect;

pConnnect.CreateInstance(“ADODB.Connection”);//创建

Connection对象实例

pConnnect->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DataBase.mdb”,“”,“”,adModeUnknown);

其中“Microsoft.Jet.OLEDB.4.0”代表通过JET数据库引擎连接数据库,“DataBase.mdb”是登录的数据库名,可根据具体情况进行修改。访问完数据库后,应该关闭与数据源的连接。ADO在关闭连接的同时,也将关闭所有使用这个连接的ADO对象。关闭连接的代码如下:

pConnnect->Close();

pConnnect.Release();

注意要先关闭连接,再释放组件接口。

1.4 操作记录集

ADO中定义了_RecordsetPtr智能指针,用其创建Recordset对象,完成对数据库的操作。Recordset对象表示一个数据库表的记录集,或一个SQL语句的执行结果记录的集合。一个Recorset对象由记录和列(字段)组成,是最重要且最常用于对数据库的数据进行操作的对象。通过Recordset对象可以进行查询、添加、修改、删除记录的操作。

首先需打开记录集,声明一个_RecordsetPtr指针,调用CreateInstance()函数创建一个Recordset对象实例,然后调用Open ()函数打开记录集。代码如下:

_RecordsetPtr pRset;

pRset.CreateInstance(_uuidof(Recordset));//创建Recordset 对象实例

pRset->Open(“SELECT * FROM AddressList ”,pConnection.GetinterfacePtr(),

adOpenDynamic,adLockOptimistic,adCmdText);

通过一条SQL语句,以文本方式打开数据库中一个表AddressList 中所有内容,完成操作后,应关闭记录集,以释放之前占用的系统资源。调用Recordset对象的Close()函数可以关闭记录集,代码如下:pRset.Close();

pRset.Release();

应先关闭记录集,后关闭连接。

2 监控系统串口通信

在监控系统中,下位机将采集到的数据通过串口线上传至上位机,上位机将接收到的数据存放到数据库中。双方遵循相同的串口通信协议。实现串口通信的方式主要由API函数实现、MSComm控件实现及利用CSerialPort类,三者各有特色。本文采用串口类实现。

2.1 串口类CSerialPort

CSerialPort类一个非常好用的第三方多线程串口类,用它可以很方便快捷地完成一般串口编程任务,程序在Windows 98/NT/2000/XP 操作系统下均可很好地运行。和MSComm控件相比,该类打包时无需加入其它文件,所有函数是开放、透明的,用户可根据自己的需求进行改造,编程者可以将更多的精力集中在串行通信协议的编制及数

相关文档
最新文档