2压缩备份数据库_超限超载不停车称重检测系统数据库技术

摘 要"针对高速公路超限问题,广州聚杰研制了一套超限超载不停车称重。该系统采用集成与研发相结合的研究方法,分别与车辆称重系统和车牌识别系统相集成,自行研发了一套车辆超限管理系 统。该系统采用Microsoft Visual C++6.0编程语言,以Windows2000系统为开发平台,以研华工控机为 硬件支持,完成软件的编程设计。采用2个德国SICK公司LMS221室外测距传感器,通过激光扫描实现 非接触式测量距离,根据距离绘制二维图像,从而完成对通过此门禁的车辆是否超限进行测量和判断。 本软件采用微软ACCESS2000数据库,用SQL语言调用Access数据库,该数据库实现了单条记录的写入、 数据的自动备份与压缩、列表的直观显示等功能,对通过的车辆信息进行记录和保存,方便管理者查 询和管理。

c3aefd079d343cb6f50942ea6d20ac68.png

1系统总体结构设计

车辆超限对高速公路方面投入了很多的财力、人力和物力"%针对此问题, 研制了一套高速公路车辆超限检测系统。本系统为实现 车辆的动态称重和车牌的自动识别,分别集成了西安杰 泰公司研制的动态轴重仪和哈尔滨飞扬软件技术有限公 司设计开发的高速公路收费站车牌照识别系统。装载的 几何尺寸识别部分为自行开发设计,主要采用了2个德 国SICK公司LMS221室外测距传感器,这2个传感器

安装在门禁装置上,通过激光扫描实现非接触式测量距 离,根据距离绘制车辆轮廓的二维图像。在软件编程方 面本系统采用Visual C++语言,在Windows2000平台上 以研华工控机为硬件支持,完成软件的,编程设计与开发 乳 系统框图如图1所示。

此数据列表中,使使用者能够一目了然地获取车辆信息。

(3)列表清空及数据库自动备份功能。由于收费站 每天通过车辆众多,经检测,每天有1 000 ~ 1 500辆车 通过。常年以往,不可能将所有通过的被检测车辆的信 息都显示在操作界面的数据列表并保存在Access数据库

中,那样既没必要也 浪费程序的运行效 率。为此,设计了列 表清空及数据库自动 备份功能。软件每次 实时将车辆信息写入 数据库之前,总是先 实时判断是否新的月 份已经到达。如果是 的话,则软件会自动 将包含已经过去的一 个月的所有通过车辆 信息的数据库进行 备份,保存到路径 "D:backup”中,将 此备份数据库文件名

d54b46e7bd242638c816732d95833252.png

2系统数据库功能

本软件数据库为微软ACCESS2000数据库何预,采 用ADO接口技术,通过JET数据库引擎对ACCESS2000 字定义为“****年**月”,年、月的数值对应于过去的 一个月的年、月数值。数据库文件备份完成之后,还会 将操作界面的列表清空,重新开始显示新的一个月的通 过车辆信息。

进行访问和操作,记录和存储所有通过车辆信息。采用

(4)数据库自动压缩功能。数据库文件备份完成之后,

SQL语言调用Access数据库。数据库中包含表项:序号、 车高、车宽、车重、是否超高、是否超重、是否超长、 会删除原有数据库文件的内容,同时重新保存新的一个 月的通过车辆信息。但由于Access数据库不能自动释放

车牌号、日期和时间。数据库列表显示在系统界面的下方, 被删除掉的记录选项所占有的存储空间,这样会导致虽

然数据库内容删除,但实际数据 库大小并未改变,因此,添加了 数据库自动压缩功能。在删除掉 数据库所有记录选项后,通过调 用相应的软件代码对数据库进 行自动压缩,节省存储空间。

5005bc9110ac5b948af47ceba57068e7.png

3数据库功能实现

3.1数据库的初始化

程序启动时,需要对ado 数据库进行加载和初始化。主要

该系统数据库主要完 成的功能如下:

(1)数据库写入功能。 车辆进入收费站后,此车 辆各种车体信息已经检测 完毕,包括车辆高度、车 辆宽度、车辆重量、车辆 超重数值、车辆是否超高、 车辆是否超宽、车辆是否 超重、车辆是否超长、车辆车牌号、对应日期,以及对应时间等各种信息将实时 写入Access数据库中。

(2)列表显示功能。为了将车辆信息如实地反馈给 路政执法人员,在操作界面中添加了数据列表。在通过 车辆信息写入数据库中的同时,也将此信息实时显示在 在 CCCarWeightTestApp::InitInstance()函数中完成。包括 初始化COM库、用Connection对象连接数据库等操作。

3.2列表的初始化及使用

在本开发系统中,数据库内容通过列表ListCtrl在 CCCarWeightTestView视图类所对应的窗口中显示。程序启动时,需要对列表进行初始化操作。列 表的初始化在 CCCarWeightTestVifcw::OnInitialUpdate() 中实现。列表初始化后,通过CCCarWeightTestView:: List(CString sql)函数来加载数据库内容并显示在列表上。

3.3数据库单条记录写入功能

在 CControIView:: JudgeLWOverLimit (int _index)函 数中,实现了数据库单条记录写入功能。此功能主要通 过使用SQL中的INSERT插入命令来实现。在此函数的 最后部分,根据要写入数据库的新的记录信息,生成具 有INSERT功能的SQL语句,并将此语句赋予字符串变 量 theApp.m_strSQL。之后调用 theApp.m_pConnection- >Execute()语句来将新的记录信息写入到数据库中,然后 将新的记录信息通过 infoForceFormView->m_list.SetItem() 来显示到列表中」现,即将当前目录下的数据库复制一份拷贝到指定目 录下,即完成了相应的备份功能。之后,通过SQL删 除命令delete来将当前目录下的数据库内容清空。然 后,建立UetEnginePtr引擎对象jet,通过调用jet- >CompactDatabase()函数来完成当前目录下的数据库容量的压缩。

3.4数据库自动备份与压缩功能

根据实际需要,每隔一个月对数据库的数据进 行自动备份与压缩。此功能同样在CControlView:: JudgeLWOverLimit(int _index)函数中实现。在此函数 中,在新的记录信息写入数据库之前,首先利用CTime:: GetCurrentTime。函数来获取当前的年、月,然后将它们 分别与数据库另一张表中存储的原有年、月记录相比较, 如果它们有变化,则需要将最新的年、月信息替代数据 库中存储的原有年、月,此替代功能通过使用SQL中的 update更新命令来实现。注意到,当月份变化,即新的 月份到来时,还需要将刚刚过去月份的数据库记录自动 备份到指定的目录下。备份完毕后,将当前的数据库内 容清空。注意到,由于ACCESS数据库文件的所占磁盘 空间大小并不会随着其内部记录项的减少或清空而减小。 所以,在自动备份完毕后,还需要将当前目录下的数据 库文件进行压缩。

数据库的自动备份主要是通过CopyFileO函数来实能够对通过车辆的信息进行查询和管理。

4结语

高速公路车辆超限检测系统实现了对车辆的动态称

cd5b05aff32baca8b430493bcba5492c.png

重、车辆的宽度和高度测量并判断其是否超限,完成了 车牌照的自动识别。采用VC++编程技术,实现了软件 的编程设计,利用Access 2000数据库技术实现了数据的自动保存、备份以及数据库的自动更新和压缩等功能, 将车辆的信息以列表的形式直观地显示给用户。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值