LabVIEW对数据采集卡DLL函数的调用.PDF 3页
优采云 发布时间: 2020-08-10 13:372004 年9 月襄樊学院学报Sept。,2004 第25 卷第5 期Journal of Xiangfan UniversityVol。25 No。5LabVIEW 对数据采集卡DLL 函数的调用刘传清(襄樊学院物理学系,湖北 襄樊 441053)摘要:首先介绍虚拟仪器及其开发环境LabVIEW6的特性,分析并实现了将LabVIEW与外部代码进行联接的中级技术之一—动态链接库(DLL)机制。实践表明,此机制高效、易行,是提高LabVIEW与其它Windows应用程序之间的数据共享能力的一条挺好的途径。关键词:虚拟仪器;LabVIEW;动态链接库;DLL中图分类号:TN311。11文献标志码:A文章编号:1009-2854 (2004 )05-0015-03 0序言*敏*感*词*国家仪器NI 公司的基于G 语言的开发环境LabVIEW 的出现,使得虚拟仪器的思想为工业界所接 受。 所谓虚拟仪器,就是在通用计算机平台上,用户按照自己的需求定义和设计仪器的测试功能,其实质 是将传统仪器硬件和最新计算机软件技术充分结合上去,以模块化软件实现并扩充传统仪器的功能。 与传 统仪器相比,虚拟仪器在智能化程度、处理能力、性能价格比、可操作性等方面均具有显著的技术优势。
LabVIEW (Laboratory Virtual Instrument Engineering Workbench─实验室虚拟仪器工程平台)是目前国 际上首推应用最广的虚拟仪器开发环境之一,主要应用于仪器控制、数据采集、数据剖析、数据显示等领 域,并适用于Windows 9X/XP/2000/ NT、Macintosh 、UNIX 等多种不同的操作系统平台。 与传统程序语言 不同,LabVIEW 采用强悍的图形化语言(G 语言)编程,面向测试工程师而非专业程序员,编程十分便捷, 人机交互界面直观友好,具有强悍的数据可视化剖析和仪器控制能力等特性。使用LabVIEW 开发环境,用户可以创建32 位的编译程序,从而为常规的数据采集、测试、测量等任 务提供了更快的运行速率。 LabVIEW 是真正的编译器,用户可以创建独立的可执行文件,能够脱离开发环 境而单独运行。 对于大多编程任务,LabVIEW 通常能形成高效的代码。 1 LabVIEW调用外部程序代码的途径之一 —— 动态链接库机制 1。1动态链接库机制概述LabVIEW 是一个功能强悍的虚拟仪器开发环境,它完整地集成了与GPIB、VXI、RS-232 、RS-485 和 内插式数据采集卡等硬件的通信。
LabVIEW 还具有外置程序库,提供了大量的联接机制,通过DLLs 、共享 库、ActiveX 等途径实*敏*感*词*项目:湖北省教育厅重点项目(2003A006 ) 作者简介:刘传清(1964- )男,湖北钟祥人,襄樊学院物理学系副教授。
15刘传清:LabVIEW对数据采集卡DLL函数的调用 对几个开发环境都适用的格式标准,故用户可以使用几乎任何开发环境去创建LabVIEW 能够调用的库。 1。2动态链接库机制实现步骤在Windows 9X 下,利用LabVIEW 6。1 (for Windows 95/98/NT) 中的“动态链接库机制”调用一个DLL , 此DLL 返回机器的名称。1)建立 “调用库函数结点”新建LabVIEW 程序“hostname。vi ”,存至新建目录“d:\temp ”下,其前面板如下:图1库函数调用前面板视口图程序如下:图2库函数调用程序框图其中,“Call Library Function ”结点是通过选择功能模板中“Advanced ”子模板里的 “CallLibrary Function ”功能模块而形成的。此LabVIEW 程序通过 “调用库函数结点”调用一个DLL ,此DLL 将返回机器的名称,返回结果存至 字符串指示量“Machine Name ”中,而后将字符串常量“LabVIEW is running on”与“Machine Name ”相 拼接,拼接之结果在字符串指示量“Message ”中显示。
2)配置 “调用库函数结点”双击框图程序窗口的“Call Library Function”结点,在弹出的对话框中对此“调用库函数结点”进行配 置。 其中:在“Library Name or Path ”一项中键入“d:\temp\hostname。dll ”(即,指明此结点所链接的DLL 文件名, 它由C 源代码“hostname。c ”编译而至);在“Function Name ”一项中键入“MachineName ”(即,指明与此结点相链接的DLL 文件中的函数的 名称);参数“return type ”的类型选择“Void”;所降低的另一个参数“arg1”的类型选择“String”、字符串 格式选择“String Handle”;3)编辑C 源文件编辑C 源文件“hostname。c ”(存至目录“d:\temp ”下),其内容如下: /* include extcode。h which contains the prototypes for the LabVIEW functions */ #include #include #include BOOL WINAPI DllMain (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved) {return TRUE; } /* This functions gets the computer name and returns it to LabVIEW */ __declspec (dllexport) void MachineName(void *LVHandle) {char computerName[MAX_COMPUTERNAME_LENGTH+1];int compNameLength = MAX_COMPUTERNAME_LENGTH+1; 16 第25 卷第5 期襄樊学院学报2004 年第5 期/* Get computer name */GetComputerName(computerName, &compNameLength);/* Size LabVIEW handle to the correct size */DSSetHandleSize(LVHandle, compNameLength + 5);/* Copy the string size to the LabVIEW handle */**(int32 **)LVHandle = compNameLength ;/* Copy the string to the LabVIEW handle */sprintf((*(char **)LVHandle)+4,"%s",computerName); }此程序首先了调用Windows 的API 函数“GetComputerName ”获取机器名;然后调用LabVIEW 的函 数“DSSetHandleSize ”来设置LabVIEW 句柄之大小;最后将机器名宽度(32 位整型)、机器名(字符串 型)依次写入句柄中。
4)编译C 源代码将C 源代码“d:\temp\ hostname。c ”编译成一个DLL 文件 “d:\temp\hostname。dll ”。可使用VC++ 6。0 (for Windows 95/98/2000/NT) ,完成此编译工作。5)运行VI运行LabVIEW 程序“hostname。vi ”,结果如下:图3前面板运行结果 2结束语本文注重阐明并实现了将LabVIEW与外部代码进行联接的中级技术之一─动态链接库机制,并给出了 应用实例。由于在LabVIEW 中引入了C 语言的强悍功能,从而提升了LabVIEW 的整体性能。本方式已在LabVIEW 6。1 for Windows 95/98/NT 及Visual C++ 6。0 for Windows 9X/XP/2000/NT环境下 实现。 实践证明,此方式高效、易行,是提高LabVIEW 与其它Windows 应用程序之间的数据共享能力的 一条挺好的途径。 参考文献: [1] LabVIEW User Manual ,National Instruments Corporation ,1998。 [2] G Programming Reference Manual,National Instruments Corporation ,1998。
LabVIEW Data Acquisition Invoke for DLL FunctionsLIU Chuan-qing(Department of Physics, Xiangfan University, Xiangfan 441053, China) Abstract :This paper introduces virtual instrument and the features of its development environment─LabVIEW , analyzes and realizes the advanced technology -Dynamic Link Library(DLL) ,which is one of the general methods for calling external code from LabVIEW。 It has been proved that this method is efficient ,practicable and also a good one to enhance LabVIEW ’s capacity of sharing data with other applications in Windows。 Key words:Virtual instrument; LabVIEW; Dynamic Link Library ; DLL17