LabVIEW对数据采集卡DLL函数的调用

优采云 发布时间: 2020-08-25 09:29

  LabVIEW对数据采集卡DLL函数的调用

  襄樊学院学报Sept。,2004 第25 XiangfanUniversity Vol。25 No。5 LabVIEW对数据采集卡DLL 函数的调用 摘要:首先介绍虚拟仪器及其开发环境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一般能形成高效的代码。 1LabVIEW调用外部程序代码的途径之一——动态链接库机制 1.1动态链接库机制概述 LabVIEW是一个功能强悍的虚拟仪器开发环境,它完整地集成了与GPIB、VXI、RS-232、RS-485 内插式数据采集卡等硬件的通信。LabVIEW还具有外置程序库,提供了大量的联接机制,通过DLLs、共享 库、ActiveX 等途径实现与外部程序代码或软件系统的联接。 LabVIEW提供了4 种调用外部程序代码的途径,其中动态链接库(Dynamic Link LibraryDLL)机制 是从LabVIEW调用标准共享库和用户自定义库函数的通用方式。

   具体实*敏*感*词*项目:湖北省教育厅重点项目(2003A006) 作者简介:刘传清(1964- )男,湖北钟祥人,襄樊学院物理学系副教授。 15 刘传清:LabVIEW对数据采集卡DLL函数的调用 16 对几个开发环境都适用的格式标准,故用户可以使用几乎任何开发环境去创建LabVIEW才能调用的库。

   1.2动态链接库机制实现步骤 在Windows 9X 下,利用LabVIEW 6。1 Windows95/98/NT)中的“动态链接库机制”调用一个DLL, 此DLL 返回机器的名称。 1)建立“调用库函数结点” 新建LabVIEW程序“hostname。vi”,存至新建目录“d:\temp”下,其前面板如下: 图1库函数调用前面板视口图程序如下: 图2库函数调用程序框图其中,“Call Library Function”结点是通过选择功能模板中“Advanced”子模板里的 “Call Library Function”功能模块而形成的。 此LabVIEW程序通过“调用库函数结点”调用一个DLL,此DLL 将返回机器的名称,返回结果存至 字符串指示量“Machine Name”中,而后将字符串常量“LabVIEW ”与“MachineName”相 拼接,拼接之结果在字符串指示量“Message”中显示。 2)配置“调用库函数结点” 双击框图程序窗口的“Call Library Function”结点,在弹出的对话框中对此“调用库函数结点”进行配 其中:在“Library Name Path”一项中键入“d:\temp\hostname。

  dll”(即,指明此结点所链接的DLL文件名, 源代码“hostname。c”编译而至);在“Function Name”一项中键入“MachineName”(即,指明与此结点相链接的DLL 文件中的函数的 名称); 参数“return type”的类型选择“Void”;所降低的另一个参数“arg1”的类型选择“String”、字符串 格式选择“String Handle”; 3)编辑C 源文件 编辑C 源文件“hostname。c”(存至目录“d:\temp”下),其内容如下: includeextcode。h which contains LabVIEWfunctions #include #include #include BOOL WINAPI DllMain (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved) returnTRUE; functionsgets computername __declspec(dllexport) void MachineName(void *LVHandle) charcomputerName[MAX_COMPUTERNAME_LENGTH+1]; int compNameLength MAX_COMPUTERNAME_LENGTH+1;第25 襄樊学院学报2004 Getcomputer name GetComputerName(computerName,&compNameLength); SizeLabVIEW handle correctsize DSSetHandleSize(LVHandle,compNameLength stringsize LabVIEWhandle **(int32**)LVHandle LabVIEWhandle sprintf((*(char**)LVHandle)+4,"%s",computerName); 此程序首先了调用Windows的API 函数“GetComputerName”获取机器名;然后调用LabVIEW的函 数“DSSetHandleSize”来设置 LabVIEW 句柄之大小;最后将机器名宽度(32 位整型)、机器名(字符串 型)依次写入句柄中。

   4)编译C 源代码 源代码“d:\temp\hostname。c”编译成一个DLL 文件“d:\temp\hostname。dll”。 可使用VC++ 6。0 Windows95/98/2000/NT),完成此编译工作。 5)运行VI 运行LabVIEW程序“hostname。vi”,结果如下: 图3前面板运行结果 2结束语 本文注重阐明并实现了将LabVIEW与外部代码进行联接的中级技术之一动态链接库机制,并给出了 应用实例。 由于在LabVIEW中引入了C 语言的强悍功能,从而提升了LabVIEW的整体性能。 本方式已在LabVIEW 6。1 Windows95/98/NT 及Visual Windows9X/XP/2000/NT 环境下 实现。 实践证明,此方式高效、易行,是提高 LabVIEW 与其它Windows 应用程序之间的数据共享能力的 一条挺好的途径。 参考文献: LabVIEWUser Manual,National Instruments Corporation,1998。 ProgrammingReference Manual,National Instruments Corporation,1998。

   LabVIEW Data Acquisition Invoke DLLFunctions LIU Chuan-qing (Department Physics,Xiangfan University, Xiangfan 441053, China) Abstract paperintroduces virtual instrument itsdevelopment environmentLabVIEW, analyzes advancedtechnology-Dynamic Link Library(DLL) ,which generalmethods callingexternal code from LabVIEW。 hasbeen proved goodone enhanceLabVIEW’ sharingdata otherapplications Windows。Key words:Virtual instrument; LabVIEW; Dynamic Link Library

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线