LabWindows/CVI平台下数据共享技术研究

  • 格式:pdf
  • 大小:130.35 KB
  • 文档页数:3

第22卷第3期 2007年9月 北京机械工业学院学报 Journal of Beijing Institute of Machinery V0】.22 No.3 Sep.2007 

文章编号:1008—1658(2007)03—0020—03 

LabWindows/CVl平台下数据共享技术研究 

李改利,王红军,赵建辉 

(北京机械工业学院机械工程系,北京100085) 

摘 要:针对LabWindows/CVl在实时数据的存储和管理方面的不足,提出了一种在Lab— 

Windows/CVI平台与Visual FoxPro数据库之间实现数据共享的解决方案,该方案应用开放式数据 

库互连(ODBC)做数据接口、使用标准化查询语言(SQL)来进行数据库访问。应用表明该方案对 

于解决数据管理切实可行。 

关键词:【最bWind0ws/CVI;Visual FoxPro;数据共享;ODBC 

中图分类号:TP 227 文献标识码:A 

Study of data sharing technology based 

on LabWindows/CVI 

LI Gai—li,WANG Hong-jun,ZHAO Jian—hui 

(Department of Mechanical Engineering,Beijing Institute of Machinery,Beijing 100085,China) 

Abstract:In view of the deficiency of LabWindows/CVI in reserving and managing timely data,this 

paper puts forward a data sharing method between LabWindows/CVI and the Visual FoxPro database by 

using the open database connectivity(ODBC)as the data interface and applying structured query lan— 

guage(SQL)to access the database.The application shows that this method is feasible in solving data 

management problem. 

Key words:LabWindows/CVI;Visual FoxPro;data sharing;ODBC 

LabWindows/CVI是National Instruments公司 

专门用于虚拟仪器的基于ANSI C的开发平台;但它 

对数据库的开发、管理不是很理想。在课题“数控 

复合车磨机床检测系统”的软件开发中要求实时的 

对测试数据进行存储和管理,还要求检测系统的各 

个单元之问进行测试数据的交互。而目前,由于应 

用领域的专业性和具体应用平台的差异性,在这方 

面的研究成果还很罕见,本文根据这一需求,研究了 

在LabWindows/CVI语言平台下,应用ODBC技术 

实现数据共享,完成数据管理的方法。 

1数据共享软体结构分析 

LabWindows/CVI是一套面向测控领域的软件 

开发平台。它以ANSI C为核心,将功能强大,使用 

灵活的C语言平台与数据采集,分析和表达的测控 

专业工具有机地结合起来。它的集成化开发平台, 

交互式编程方法,丰富的仪器界面、控件和库函数大 大增强了C语言的功能,为开发人员建立检测系 

统、数据采集系统、过程监控系统等提供了一个理想 

的软件开发环境。但是,CVI语言本身不带数据库 

引擎,数据库的开发和管理功能不理想。 

Visual Foxpro语言具用良好的用户图形界面, 

简单的对话操作,丰富的开发工具,是优秀的数据库 

开发和管理语言。 

对于数据库系统而言,不论其构建采用何种技 

术,其访问技术是系统的关键…。通用数据访问 

(UDA)是Microsoft公司所采用的一种策略,它提供 

了所用类型的相关和不相关信息的通用程序;为各 

种数据源提供了在各种平台上一致的操作接口,通 

用数据访问协议使得应用程序能够利用一组API类 

库调用访问不同语言开发出来的数据源。开放式数 

据库互连(ODBC)是UDA技术的核心技术之一,是 

最开放的,也是当前数据连接的最成功的标准。 

ODBC是对SQL Access Group的CLI标准的一种实 

收稿日期:2007—05—3O 基金项目:北京市优秀人才项目(20061/)0500600162);北京市教委科技发展计划重点项目(KZ20071 1232016) 作者简介:李改利(1981一),女,陕西渭南人,北京机械工业学院机械工程系硕士研究生,主要从事先进制造技术方面的研究。

 维普资讯 http://www.cqvip.com 第3期 李改利等:LabWindows/CVI平台下数据共享技术研究 2l 

现,它允许应用程序访问范围很广的数据库。 

ODBC主要包括4层结构:最上层是应用程序; 

第2层是驱动程序管理器;第3层是不同的驱动程 

序,对应不同的数据库;最底层是具体的数据源 j。 

ODBC驱动程序可使用微软windows自带驱动 

程序,可以使用安装程序来安装Microsoft SQL Serv— 

er驱动程序。 

在检测系统的软件开发中,应用LabWindows/ 

CVI 5.5开发高效的检测软件,应用Visual Foxpro 

6.0开发检测数据库和决策支持系统,以ODBC为 

数据接口,使用SQL语言实现了检测系统与Visual 

FoxPro数据库间的数据共享。实现数据共享的结构 

图如图1所示。这种方法实现了CVI与Visual Fox— 

Pro语言的优势互补。 

I Labw ind。ws/cVI visual FoxPro 

{ ; 

LabWin dows/CVI Visual FoxPro ODBC接口 ODBC接头 

\ 

ODBC驱动器管理程序 (ODBC32 dl 1) } 

SQL 

图1 检测系统数据共享实现结构罔 

2数据共享的实现 

实现Visual FoxPro数据库和CVI语言环境的 

数据共享的基本思想是:在Windows9x/2000/NT/ 

xp的环境中,通过计算机控制面板的“数据源”加 

载Visual FoxPro编写的数据库,使之成为公用数据 

源;在CVI开发的工程文件中配置使用ODBC所必 

须的数据头文件和库文件,调用相应的SQL语句就 

实现了数据的共享。 

2.1 ODBC静态设置数据源的方法 

ODBC接口以SQL语言连接数据源和存取数 

据。通常在开发ODBC应用程序前,必须手动加入 

所用的数据源。利用位于控制面板中的ODBC管理 

器实现数据源的加载。以WindowsXp系统为例.其 

实现方法是:双击控制面板中的“管理工具”图标, 

再双击“数据源(ODBC)”图标,就会出现ODBC数 

据源管理器对话框,在管理器对话框的User DSN属 

性页中配置所使用的数据库,就把该数据库加载到 

ODBC数据源中。ODBC数据源管理器负责安装驱 

动程序、管理数据源,帮助程序员跟踪ODBC的函数 调用,并将应用程序的SQL语句及其消息传递给驱 

动程序,而驱动程序又将结果集回送给应用程序。 

因此,ODBC的框架如图2所示。 

网 I

据库的I l数据源} 1.............__J 网2 ODBC框架图 另外,ODBC数据源管理器的System DSN和 

File DSN可以使用户把数据库加入到广域系统级的 

数据库中,用户可以根据自己的需要进行设置。 

在CVI的应用程序中调用ODBC函数,必须在 

所编测试程序的工程文件中加人头文件SQL.H 

(SQL语言基本函数原型定义等等)、SQLTXT.H(一 

些高级功能函数定义)、OS.H(数据库接口)和库文 

件ODBC32.LIB、ODBCCI ̄2.LIB。 

2.2数据共享的应用实例 

在进行了必要的配置后,调用SQL语句就可以 

实现检测数据的共享。 

在软件开发中,使用Lab Windows/CVI语言开 

发检测系统,应用Visual FoxPro开发检测数据库和 

决策支持系统,使用ODBC技术实现各种数据及检 

测信息的共享。 

以存取数据为例,说明CVI与Visual FoxPro数 

据库的连接: 

SQLHENV henv=SQL—NULL—HENV; 

SQLHDBC hdbc=SQL—NULL_HDBC; 

SQLHSTMT hstmt=SQL—NULL_HSTMT; SQLRETURN retcode;//sql函数返回值 

//HENV henv; 

//HDBC hdbc; 

//HSTMT hstmt; 

//RETCODE retcode;//版本不同,数据类型定 

义不同 

SQHNTEGER d_buf;//存储区域长度 

SQLDOUBLE d_ZDT;//存储变量定义 

PTR pParmlD;//转换指针 #define INSERT—STRING—IN”INSERT INTO ta. 

blel VALUES(testValue)”; 

#define INSERT—STRING—OUT”SELECT ZDT 

from tablel” 

#define DATAS0URCENAME”test” 

int CVICALLBACK Import(int panel,int con— 

trol,int event,void callbackData,int eventDatal, 

int eventData2) 

{ 

char str: 

switch(event)

 维普资讯 http://www.cqvip.com