微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > 嵌入式数据库矿场安全系统的设计

嵌入式数据库矿场安全系统的设计

时间:12-27 来源:互联网 点击:
3.2 数据存储模块

将传感器设备上传时间作为 key,封装在DEVDATA 结构体中的设备安装信息和封装在REALDATA 结构体中的实时数据信息分别构成数据库的data,从而构成两组Key 到Data对。因此,该方案将形成两张表,分别存储在两个数据库文件中。将传感器设备安装信息和实时数据信息形成两个数据库文件分别存储,只在设备安装信息改变的时候才会进行设备文件的存储操作,这样大大减少了数据库文件的磁盘占用空间。

Berkeley DB 用Key/Data(关键词/数据)来区分数据库中的数据,Key/Data 对是BerkeleyDB 用来进行数据库管理的基础,由这两者构成的Key/Data 对组成了数据库中的一个基本结构单元,而整个数据库实际上就是由许多这样的结构单元所构成的。也就是说,调用数据库接口实际上就是提供了相应的关键词,通过该关键词来查找要操作的数据。

如果把一组相关的 Key/Data 对也看作一个表的话,那么每一个数据库只允许存放一个table,因此,一般一种类型的Key/Data 对构成一个数据库文件。数据库存储代码设计主要分为设备安装信息(key/data 对为设备上传时间/DEVDATA 结构体)存储代码设计和实时数据信息(key/data 对为设备一上传时间/REALDATA 结构体)存储代码设计。Berkeley DB 是以文件为单位进行数据库管理的,由于设备安装信息只在数据改变的时候才进行数据库存储操作,并且其间隔周期较长,因此作者设计了dev.db 文件实现安装信息的存储管理;由于实时数据信息的更新周期较短,数据库存储操作频繁,并且每天都会有数据的采集和更新,因此作者以每天的日期为单位设计了实时数据库文件,系统将会获取当天的日期,并以之为文件名形成数据库文件进行数据库操作,例如当天的日期为2007 年2 月8 日,那么数据库文件名为 2007-02-08.db 。

 
   

 

设备安装信息和实时数据信息的存储代码具有一定的相似性,作者以实时数据信息的存储代码为例说明其设计过程,程序流程如下所示:



图 2 设备安装信息数据库存储程序流程

  3.3 数据查询模块

实时/历史数据查询模块设计主要就是GetDevKey、DataQueryByRealTime 和DataQuery函数设计。

1. DataQueryByRealTime 函数设计

若用户输入的查询时间段内设备安装信息没有改变,GetDevKey 函数会直接返回FALSE,程序接着会调用DataQueryByRealTime 函数查询实时数据库文件,设备安装信息直接从m-devList 结构体链表中获得,函数设计包括如下:

①根据用户输入的查询日期,形成实时数据库文件如2007-02-09.db,打开实时数据库。

②构建游标cursor,使用get 方法,以查询时间为key,flag 标签为DB_ SET_ RANGE 游标定位到数据库文件多重记录的首一记录。

③遍历数据库文件拥有相同 kev 的多重记录,将data 中传感器ID 号与用户输入ID 号相等的REALDATA 结构体与相应的m devList 链表节点DEVDATA 结构体在列表框控件(CC1istCtrl)中显示出来。

2. DataQuery 函数设计

若设备查询时间对应的安装信息相对于当前时间段己经改变,GetDevKey 函数会返回正确的设备安装信息查询时间devKey,这个查询时间可能跟用户输入的传感器查询时间不同;程序接着会调用DataQuery 函数,并将这个正确的设备查询时间devKey、用户输入的传感器实时数据查询时间realKey、传感器ID 号strDevID 以及实时数据库文件名strRealDbName以形参方式传给DataQuery 函数,其函数设计包括如下:

①打开设备数据库 dev.db 文件,根据形参strRealDbName 打开实时数据库文件。

②构建游标 cursor,使用get 方法,分别以devKey 和realKey 为数据库的key, flag标签为DB_ SET_ RANGE,游标定位到设备数据库文件和实时数据库文件的首记录。

③遍历数据库文件拥有相同key 的多重记录,若设备数据库文件记录的data 中(DEVDATA 结构体)传感器ID 号与实时数据库文件记录的data 中(REALDATA 结构体)传感器ID 号相等,则将这两个data 信息在列表框控件(CC1istCtrl)中显示出来。

4.总结

本文的创新点:分析嵌入式煤矿井上监控系统的功能需求,开发设计了基于Berkeley DB数据库和Windows CE 的矿场安全系统,实现了窗口登录、数据采集、系统界面、数据库存储、实时/历史数据查询、实时曲线显示等功能模块,深入讨论研究了系统的数据采集方法、数据库KEY/DATA 对存储方案及实时/历史传感器数据的数据库查询策略。在实际生产中工作稳定,查询速度快,达到了预期的设计目标。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top