当前位置:首页 期刊杂志

面向LabWindows/CVI的数据库访问技术研究

时间:2024-07-28

李 晖

(中国航天科技集团公司第四研究院第四十一研究所,燃烧、流动和热结构国家级重点实验室,西安710025)

1 引言

LabWindows/CVI是美国NI公司(National Instruments Corporation)推出的一款功能强大的交互式C语言软件开发平台,主要用于仪器控制、自动测试、数据处理等应用软件开发。LabWindows/CVI的优势在于完全建立在ANSI C基础之上,实现了功能强大、使用灵活的C语言平台与用于数据采集、分析与显示的测控专业工具的有机结合,其特有的交互式编程方法及丰富的功能面板和函数库可以很方便地设计出非常友好的测控操作界面[1-2]。尤其是大型、复杂的测试软件,使用LabWindows/CVI开发可以获得优良的测试性能[3]。

CVI作为侧重于测控软件开发平台,不可避免地要和数据库打交道,然而它自身却始终没有通过标准函数库提供数据库的操作函数,也没有在工具包中提供能够访问数据库的驱动器,也就是说CVI本身不具备访问数据库的功能。这也是CVI相对Visual C++、VB、Delphi等开发环境的一个弱项。虽然NI公司提供了独立于CVI 开发平台以外的专门用于和数据库打交道的软件工具包SQL Toolkit,但是价格较为昂贵。

针对CVI较为薄弱的数据库访问功能,给出了到目前为止能够实现在CVI中访问外部数据库的方法,详细阐述了 ADO、SQL Toolkit以及 DatabaseAssistant这三种方法在CVI环境下访问数据库的具体途径,并通过实验对三种方法的数据库访问性能进行了比较。

2 数据库访问技术

2.1 Microsoft ADO技术

Microsoft开发了一系列基于Windows平台的数据库访问技术。OLE DB是其早期开发的一套开放标准,它基于COM(Component Object Model,组件对象模型)结构,对所有的数据文件提供了一个统一的接口,包括关系数据库、非关系数据库和其他文件系统,是Microsoft针对所有数据库提供的底层接口。

后来Microsoft又在OLE DB基础上开发了面向对象的数据库访问技术ADO(ActiveX Data Objects,ActiveX数据对象)。ADO是完全建立在OLE DB模型之上的高层数据库访问技术,它简化了OLE DB的操作,定义了ADO对象,使得数据库应用程序的开发得到简化[4]。ADO技术最大的特点是可以以Microsoft ActiveX控件的形式出现,使得它可以应用在多种软件开发环境中,LabWindows/CVI 6.0之后的版本提供了对ActiveX自动化和网络的支持,使得在CVI环境下应用ADO技术开发数据库成为可能。

在CVI中利用ADO技术访问数据库,首先要生成ActiveX自动化仪器驱动器,具体方法是:在主窗口的菜单栏中选择“Tools”→“Create ActiveX Controller…”,LabWindows/CVI会自动搜索注册在操作系统中的所有自动化服务器,搜索完成后弹出列表框会显示所有 ActiveX自动化服务器,选择“Microsoft ActiveX Data Objects 2.8 Libra”后,点击“Next”,按照开发向导提示进行操作完成即可。完成后会在当前项目目录下生成五个文件:“ADODB.c”、“ADODB.h”、“ADODB.fp”、“ADODB.obj”、“ADODB.sub”,这五个文件就组成了CVI下ADO驱动程序。

以最一般的访问一次数据库为例,比如在Microsoft Acess数据库中插入一条记录,则利用ADO访问数据库程序流程如图1所示。

2.2 NI SQL Toolkit

NI SQL Toolkit(简称Toolkit)是NI公司提供的独立于CVI开发平台以外的专门用来和数据库打交道的软件工具包,它遵从ODBC规范的数据库技术,其实也是提供了一族访问数据库的API供用户调用。Toolkit有如下特点:第一,其安装完成后以CVI中的仪器驱动器的形式出现,提供了.fp、.lib、.dll、.h等文件,每个函数都有完善的函数面板并提供了详细的函数说明,用户调用很方便;第二,函数封装比较好,减少了很多比较晦涩难懂的函数,并给出了数据库访问时函数调用层次图,一目了然;第三,Toolkit不但可以访问ODBC数据源,也可以访问任何遵从ADO标准的数据源,不过如果没有特殊说明,SQL Toolkit默认为ODBC数据源。

图1 ADO访问数据库程序流程图

在CVI中利用Toolkit访问数据库较为简单,只要将相应的.fp、.lib、.dll、.h等文件拷贝到工程目录下,再将.fp、.lib、.h文件加载到工程中,就可以调用Toolkit提供的函数了。

以在Microsoft Acess数据库中插入一条记录为例,利用Toolkit访问数据库的程序流程图如图2所示。

2.3 DatabaseAssistant for CVI

DatabaseAssistant(简称DAssistant)是一个数据库访问工具包,它是丁晨等研究人员开发的免费软件,其主要就是为LabWindows/CVI开发环境提供数据库访问功能,它也可应用于支持C语言环境的其他软件开发环境。其官方发布网站为www.vihome.com.cn。

该工具包于2008年9月发布最初版本1.0 Beta1,目前的最新版本为2.06正式版,期间经过十几次版本升级。该工具包的开发和升级充分借鉴了SQL Toolkit,可以说几乎继承了SQL Toolkit的所有优点,而且数据库访问速度也比SQL Toolkit快,这个在后面的实验部分会给出说明。如今DAssistant的功能已经非常完善,其本身可以支持多种数据库。

图2 Toolkit访问数据库程序流程图

该工具包的使用需要系统安装ODBC3.0及其以后的ODBC管理器,Windows98后的系统都自带ODBC3.5,可在“控制面板-管理工具-ODBC数据源管理器”中查看版本。Windows系统提供以下数据库的 ODBC驱动:Access(.mdb)、dBase(.dbf)、excel(.xls)、Paradox(.db),其他数据库需要安装相应的ODBC驱动才能使用。

在CVI中利用DAssistant访问数据库的方法和Toolkit基本相同,只要将DatabaseAssistant.fp、DatabaseAssistant.lib、DatabaseAssistant.dll、DatabaseAssistant.h等文件拷贝到工程目录下,将DatabaseAssistant.fp、DatabaseAssistant.lib、DatabaseAssistant.h文件加载到工程中,就可以调用DAssistant提供的函数了。

还以在Microsoft Acess数据库中插入一条记录为例,利用DAssistant访问数据库的程序流程图如图3所示。

3 实验结果与分析

3.1 实验结果

为了能更好地说明如何利用上述提到的三种方法在LabWindows/CVI中实现对外部数据库的访问以及它们之间访问数据库性能的差异,本节给出一个实例,实现如下功能:能够分别使用ADO、Toolkit和DAssistant三种方法向一个Microsoft Access2003数据库文件中的Demo数据表中连续写入10000条相同的记录,随后更新这10000条相同的记录,最后读取并显示更新后的10000条记录,分别统计三种方法完成这些操作所花费的时间。Demo数据表结构及写入和更新的记录如表1所示。

图3 DAssistant访问数据库程序流程

实验所使用的硬件平台为DELL T3500台式机,CPU为Intel Xeon 2.40GHz,内存3GB。操作系统为Windows XP SP3,开发环境为LabWindows/CVI 8.0。

表1 Demo数据表结构及写入和更新的记录

程序界面设计及运行结果如图4所示。

3.2 实验结果分析

由图4可以得到 DAssistant、Toolkit、ADO三种方法写入、更新和读取10000条记录所花费的时间如表2所示。需要说明的是,在不同计算机上三种方法访问数据库的速度会略有不同,但是三者之间的相对访问速度不会改变,能够反映它们访问数据库的性能差异。可以看出,不管是写入、更新还是读取记录,DAssistant方法的速度都是最快的,Toolkit次之,而ADO则最慢。至此,三种方法总体特征比较如下表3所示。

表2 三种方法访问数据库耗时统计

总的来讲,三种方法中DAssistant的数据库访问性能最好,不但访问速度最快,而且具有较为详尽的软件接口说明,代码编写也比较简单。

表3 三种方法总体特征比较表

图4 程序界面及运行结果

4 结束语

LabWindows/CVI作为优秀的测控软件开发环境,却始终没有对数据库提供很好的支持。总结并实现了到目前为止能够在CVI环境下访问外部数据库的三种方法:Microsoft ADO、NI SQL Toolkit和DatabaseAssistant,详细阐述了这三种方法在CVI环境下访问数据库的具体途径,通过实验对三种方法的数据库访问性能进行了比较,结果表明在CVI中DatabaseAssistant方法具有最好的数据库访问性能。

[1] 王建新,杨世凤,隋美丽.Lab Windows/CVI测试技术及工程应用[M].北京:化学工业出版社,2006.

[2] 李腾飞,张辉.基于Labwindows/CVI和Matlab的滤波器设计[J].电子技术,2007(3):29-35.

[3] 张凤均.Lab Windows/CVI开发入门与进阶[M].北京:北京航空航天大学出版社,2001.

[4] 黄吉涛,周伦彬.ADO数据库访问技术在LabWindows/CVI中的应用[J].中国测控技术,2007(3):102-104.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!