LABVIEW的DLL与API调用

合集下载

LabVIEW编程调用DLL时遇见的问题

LabVIEW编程调用DLL时遇见的问题

LabVIEW编程调用DLL时遇见的问题对于使用LabVIEW编程的人来说,都知道LabVIEW功能强大,但也会发现似乎缺少某些功能,而像其他编程语言的DLL、ActiveX组件则能提供。

在使用DLL(动态链接库)时,最大的困难就是把函数参数的数据类型映射为相应的LabVIEW中的数据类型。

LabVIEW 提示:未定义符号可能会造成函数和参数无法被识别。

如要解决该问题,检查头文件并确定是否必须添加预定义符号。

单击上一步按钮返回至向导的前一页并添加预定义符号(例如,"NIAPI_stdcall = __stdcall"或"NIAPIDefined = 1")在一次进行串口调试软件的编写过程中,要求使用动态链接库(其实使用VISA同样可以实现),使用导入共享库工具以自动生成配置CLN(Call Library Function)节点,工具在“工具—导入—共享库(.dll)”菜单项下,专门用于将DLL 中函数包装成VI。

下一步下一步点击解析头文件后,依然遇见(如下图)extern UINT Recv(UCHAR *pRecvBytes,UINT unRecvLength);(函数原型)未定义符号可能会造成函数和参数无法被识别。

如要解决该问题,检查头文件并确定是否必须添加预定义符号。

单击上一步按钮返回至向导的前一页并添加预定义符号(例如,"NIAPI_stdcall = __stdcall"或"NIAPIDefined = 1")归咎原因就是头文件中的一些类型定义不符合标准C语法,而使解析器无法获得正确的的mPWIN32_COMMAND定义。

DLL函数的头文件中可能使用了某个系统定义的数据类型,数据类型的定义在windows.h中,(windows.h是Windows SDK的一个文件,VC等开发环境中常常带有Windows SDK),要正确解析必须得到这些数据类型,也就是找到windows.h 这个头文件,用户须把windows.h文件的全路径加在“包括路径”中。

关于LabVIEW产生的DLL被C调用的问题

关于LabVIEW产生的DLL被C调用的问题

关于LabVIEW产生的DLL被C调用的问题1 LabVIEW的工作1.1 工程项目从LV8.0开始,想要生成exe、安装程序或DLL就必须首先创建1个工程,然后把所有有关的VI全部添加到工程中,如图1:图1 LV项目为了使目录结构清晰,最好把最后需要输出的VI放置在一起,把子VI放置在一起,如图1中,虚拟目录Top Level Vis用来存放3个输出的VI(可以把它想像成DLL中的函数)、虚拟目录Dynamic Vis存放子VI、虚拟目录Support Files存放支持文件(位图、光标等)。

1.2 VI设置如同在LV中一样,有些VI完全是作为计算模块使用的(调用时不会弹出界面,如图1中的acquire.vi、analyze.vi),而有些是用来显示界面的(调用时弹出对话框,如图1中的present.vi)。

那么如何设置1个输出VI是否显示界面呢?想要产生界面调用的函数,请配置Window Appearance(如图2),然后确保红线圈住的地方必须被选中:图2 VI界面设置1.3 输出配置(Build Specification)右击Build Specification选择New->DLL,弹出DLL输出配置对话框,其有以下对话框需要配置:1.3.1 基本信息(Information)图3∙Build specification name—指定唯一的生成模板名称(出现在项目管理页面中),用以和其他模板相区别∙Target filename—指定输出的DLL名称∙Destination directory—指定生成文件的输出路径∙Build specification description—描述该生成模板的相关信息。

1.3.2 输出源指定(Source Files)图4∙Project Files窗口—显示项目窗口My Computer下列举的项目(如图1),使用图4中的左/右箭头可将My Computer下列举的项目移入/移出Exported VIs和Always Included窗口。

图解LABVIEW调用DLL

图解LABVIEW调用DLL

前言:LABVIEW是一个强大的图形编程语言,使用很简单,就是你没有任何编程经验也可以LABVIEW编程,对于需要快速上手图形编程的人是一个不错的选择。

在很多时候我们会用C语言写一些计算机的底层驱动,比如USB数据传输或者串口数据传输,如何把我们自己写的驱动程序集成到LABVIEW中呢?下面我就用图和简单说明的方式给大家说说,由于我也是初学,所以有的地方可能会有错误或不准确的地方,欢迎大家指正,废话不多说了,下面开始正式的教程。

目的:通过一个现成的I2C适配器控制I2C接口的AM2311温湿度传感器,将测得的温度和湿度用LABVIEW显示出来,最终效果如图所示。

准备:1、安装LABVIEW2010。

2、I2C适配器1台。

3、I2C适配器上位机驱动函数库,和函数库头文件。

4、AM2311传感器模块一台。

第一步:打开LABVIEW2010,按下图导入我们需要使用的DLL文件。

得到如下界面,点击下一步。

打开DLL和头文件,点击下一步。

到这里我们的库就基本上导入完毕,但是还有一件事情要做,因为在Ginkgo_Driver.dll里面用到了vt214x.dll里面的一些函数,所以要把这个文件拷贝到刚刚生成库的目录下,否则在运行程序的时候会出现找不到这个DLL的错误提示,而且程序也不能正常工作。

我生成的库目录是:D:\Program Files (x86)\National Instruments\LabVIEW 2010\user.lib\Ginkgo_Driver。

你可以根据自己的实际情况处理,拷贝这个文件后在这个目录下的文件如下图所示:到这里库基本上就导入完毕,下面我们就可以在VI程序里面使用这些库函数了。

第二步:打开LABVIEW软件,新建一个VI文件,另存名字为AM2311.vi。

我们在前面板设计为如下界面。

切换到程序款图界面,因为我们程序需要顺序执行,最后需要在一个循环里面循环读取数据,所以我们可以通过平铺顺序结构来设计程序,在平铺顺序结构的第一帧调用刚刚导入的VTIF_I2C_SelectDevice()函数选择设备,在第二帧调用VTIF_I2C_Init()初始化函数初始化I2C适配器,然后就可以循环的读取数据了,最好将数据解析出来并显示出来。

LabVIEW与外部程序间DLL文件的调用

LabVIEW与外部程序间DLL文件的调用

LabVIEW与外部程序间DLL文件的调用什么是DLL文件DLL(动态链接库)文件是Dynamic Link Library的缩写形式,是一种允许程序共享执行特殊任务所必需的代码和其他资源的可执行文件。

其多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。

Windows提供的DLL文件中包含了允许基于Windows 的程序在Windows环境下操作的许多函数和资源。

动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。

这些函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。

DLL还有助于共享数据和资源,多个应用程序可同时访问内存中单DLL副本的内容。

总之,DLL是一个包含可由多个程序同时使用的代码和数据的库。

动态链接是相对于静态链接而言的。

所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。

换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。

当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。

而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。

仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。

当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。

由于向运行于Windows操作系统下的程序提供代码、数据或函数,程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。

在Windows操作系统中,DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。

而有些DLL文件可以被许多程序共用,因此程序设计人员可以利用DLL文件, 使程序不至于太过巨大。

第13章 LabVIEW常用外部接口

第13章 LabVIEW常用外部接口

ActiveX组件包括如下几类。 (1)自动化服务器 (2)自动化控制器 (3)控件 (4)文档 (5)容器
13.4.2 ActiveX控件
ActiveX控件是ActiveX最常用的,它 是存放于ActiveX容器的一个可嵌入的组件。 LabVIEW中ActiveX容器函数位于“控件” 选板下“新式→容器”子选板中,如图1314所示。利用“ActiveX容器”函数,用户 可以调用第三方提供的各种ActiveX控件。
图13-7
CIN节点函数接线端子 图13-8 CIN节点函数接线端子与控件的连接
图13-9
创建DLL工程对话框
图13-10 将cintools路径
DLL工程编译命令
图13-13 CIN节点示例程序框图和运行界面
13.4 ActiveX
13.1 调用库函数
13.1.1 DLL简介
DLL是Dynamic Link Library 的缩写 形式,中文译为动态链接库。它是作为共 享函数库的可执行文件。 可以把动态链接库理解为一个函数库。
DLL在编程中的广泛应用主要缘于它的 一些优点。 (1)使用较少的资源 (2)推广模块式体系结构 (3)简化部署和安装 Windows操作系统中一些作为DLL实 现的文件有:ActiveX 控件(.ocx)文件、 控制面板(.cpl)文件和设备驱动程序 (.drv)文件。
图13-1
“调用库函数节点”函数位置
图13-2
“调用库函数”函数配置属性对话框
13.1.4 调用库函数示例
图13-3
调用库函数示例程序框图
13.2 Matlab接口
13.2.1 Matlab Script节点
Matlab是由数值分析、矩阵分析、信 号处理和图形绘制等组成的一个高性能的 数值计算和图形显示的计算软件环境。为 了结合两者以充分利用LabVIEW和Matlab 各自的优点,LabVIEW通过提供的Matlab Script节点可以导入和编辑Matlab程序。

LABVIEW的DLL与API调用

LABVIEW的DLL与API调用

LABVIEW的DLL与API调用LABVIEW的DLL与API调用一.实验目的1.熟悉LabVIEW调用动态链接库的过程2.学会编写用LabVIEW调用WINDOWS的API函数二.实验器材1.计算机(带有声卡)2.LABVIEW8.20软件三.实验原理在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。

为了在LabVIEW中能够充分利用其他编程语言的优势,LabVIEW提供了外部程序接口能力,包括动态链接库(DLL)、C语言接口(CIN)、ActiveX和Matlab等。

动态链接库是基于Windows程序设计的一个非常重要的组成部分。

LabVIEW 开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。

而windows平台包含有大量的API函数,这些API函数提供了大量在Windows环境下可操作的功能,它们位于Windows系统目录下的多个DLL文件中,因此在LabView中调用API 函数和DLL的方法是一致的。

在LabVIEW中,利用库函数节点可以较容易地实现对DLL的调用,从而提高了程序的开发效率。

使用调用库函数节点,可以调用Windows标准的动态连接库,也可以调用用户自己编制的DLL。

LabView中动态链接库的调用可在程序框图的函数选板中选取“调用库函数节点”来完成,该节点位于:互连接口->库和可执行程序->调用库函数节点。

将选择好的调用库函数节点图标放在程序框图中,然后通过对它的节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。

在调用DLL时,首先要找到找到头文件(*.h)或者函数原型声明,确定你需要调用的函数,注意函数的参数是否包含了原始数据类型参数比如int,char, double,等等或者是否包含了复杂数据类型比如clusters。

LabVIEW常用外部接口

LabVIEW常用外部接口
程。
图13-7 CIN节点函数接线端子 图13-8 CIN节点函数接线端子与控件的连接
图13-9 创建DLL工程对话框
图13-10 将cintools路径添加到DLL工程中
图13-11 代码生成的设置
图13-12 DLL工程编译命令
图13-13 CIN节点示例程序框图和运行界面
13.4 ActiveX
图13-14 “ActiveX容器”函数位置
图13-15 选择ActiveX对象对话框
图13-17 调用Windows Media Player控件程序框图 图13-16 ActiveX日历控件对象
图13-18 调用Windows Media Player控件前面板
13.4.3 ActiveX自动化
ActiveX自动化是ActiveX的一个重要 组成部分,通过ActiveX自动化,可以实现 一个程序对另外一个程序的调用。
LabVIEW作为ActiveX自动化客户端 时,同样可以访问ActiveX对象。ActiveX 相关的操作函数位于“函数”选板下“互 连接口→ActiveX”子选板中,如图13-19所 示。
13.1.3 库函数的调用
“调用库函数节点”函数支持众多数据 类型和调用规范。
图13-1 “调用库函数节点”函数位置
图13-2 “调用库函数”函数配置属性对话框
13.1.4 调用库函数示例
图13-3 调用库函数示例程序框图
13.2 Matlab接口
13.2.1 Matlab Script节点
在LabVIEW5.1及其以后版本中, LabVIEW既可作为ActiveX的服务器端, 也可以作为一个客户端。
ActiveX组件包括如下几类。 (1)自动化服务器 (2)自动化控制器 (3)控件 (4)文档 (5)容器

labview调用dll方法+

labview调用dll方法+

0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
unsigned char i;
unsigned char RH = 0xff;
unsigned char RL = 0xff;
unsigned char *buf=(unsigned char *)pbuf;
do
{
i = *buf ^ RL;
buf ++;
RL = RH ^ CRC_TABLE_H[i];
RH = CRC_TABLE_L[i];
}while(--len);
return(RH * 256 + RL);
}
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
};
/*******************************************************************************
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LABVIEW的DLL与API调用
一.实验目的
1.熟悉LabVIEW调用动态链接库的过程
2.学会编写用LabVIEW调用WINDOWS的API函数
二.实验器材
1.计算机(带有声卡)
2.LABVIEW8.20软件
三.实验原理
在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。

为了在LabVIEW中能够充分利用其他编程语言的优势,LabVIEW提供了外部程序接口能力,包括动态链接库(DLL)、C语言接口(CIN)、ActiveX和Matlab等。

动态链接库是基于Windows程序设计的一个非常重要的组成部分。

LabVIEW 开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。

而windows平台包含有大量的API函数,这些API函数提供了大量在Windows环境下可操作的功能,它们位于Windows系统目录下的多个DLL文件中,因此在LabView中调用API
函数和DLL的方法是一致的。

在LabVIEW中,利用库函数节点可以较容易地实现对DLL的调用,从而提高了程序的开发效率。

使用调用库函数节点,可以调用Windows标准的动态连接库,也可以调用用户自己编制的DLL。

LabView中动态链接库的调用可在程序框图的函数选板中选取“调用库函数节点”来完成,该节点位于:互连接口->库和可执行程序->调用库函数节点。

将选择好的调用库函数节点图标放在程序框图中,然后通过对它的节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。

在调用DLL时,首先要找到找到头文件(*.h)或者函数原型声明,确定你需要调用的函数,注意函数的参数是否包含了原始数据类型参数比如int,char, double,等等或者是否包含了复杂数据类型比如clusters。

如果函数没有包含复杂数据类型并且你有头文件(*.h),该DLL在数据类型的定义上与LabView一致,那么LabVIEW中一个很好的工具可以帮你简单地导入DLL(并且会帮助你创建DLL的整个库)。

你可以在工具—>导入—>共享库(.dll)...中找到该工具,按照向导进行下去。

如果函数不含有复杂数据类型但是没有头文件(*.h),或者由于DLL编写不够规范,在数据类型的定义上与LabView并不完全一致,你需要确定那些在DLL 中被调用的函数的参数,一旦参数被确定,使调用库函数节点中的函数手动调用该函数。

这是你需要对调用的函数进行手工配置。

在调用DLL库中函数时,必须知道以下信息:函数返回的数据类型、函数调用的方式、函数的参数及类型、DLL库文件的位置等。

右键单击调用库函数图标,在弹出的菜单选项中选择配置...选项,可得到下图所示的配置对话框。

对函数和参数选项卡进行适当的配置就可以完成对DLL的调用。

相关文档
最新文档