LabVIEW学习笔记(九)——调用外部DLL

前言:

        为了在LabVIEW中能够调用其他语言编写的程序,提供了强大的外部程序接口能力,这些接口包括DLL、C语言接口(CIN)、 ActiveX、NET. DDE、MATLAB等。通过DLL,用户能够方便地调用C、VC、VB等编程语言编写的程序。因此,本章通过示例来学习如何调用外部dll。动态链接库(Dynamic Link Library,DLL)是一个可以多方共享的程序模块,内部对共享的例程和资源进行了封装。动态链接库文件的扩展名一般是.dllDLL 和可执行文件(EXE)非常类似,最大的区别在于DLL虽然包含了可执行代码却不能单独执行, 必须由Windows应用程序直接或间接调用。

 

一、示例1

       本节我们通过调用外部链接库的方式,来实现:输入一个 Double 型数组数组及其长度,输出一个整型数组。该整型数组中每个元素对应输入数组中每个元素求平方后的基数。

1.1 生成DLL文件

     首先我们在VS2015中新建一个项目,写入算法代码并生成目标DLL文件,生成DLL文件有两种方法:

  (1)方法一:

新建一个win32项目:

LabVIEW学习笔记(九)——调用外部DLL_第1张图片

在应用程序向导中将应用程序类型选择为DLL:

LabVIEW学习笔记(九)——调用外部DLL_第2张图片

在源文件中的ArrayFloor1d中编写代码:

LabVIEW学习笔记(九)——调用外部DLL_第3张图片

  在项目中添加一个新项:

LabVIEW学习笔记(九)——调用外部DLL_第4张图片

    选择添加一个模块定义文件:

LabVIEW学习笔记(九)——调用外部DLL_第5张图片

在模块定义文件写入:

LabVIEW学习笔记(九)——调用外部DLL_第6张图片

选择重新生成解决方案,就可以在项目文件中得到DLL文件:

LabVIEW学习笔记(九)——调用外部DLL_第7张图片

 

(2)方法二:

新建一个win32项目:

LabVIEW学习笔记(九)——调用外部DLL_第8张图片

在应用程序向导中将应用程序类型选择为DLL:

LabVIEW学习笔记(九)——调用外部DLL_第9张图片

    在ArrayFloor1d中直接写入如下代码,无需在新建模块定义文件:

LabVIEW学习笔记(九)——调用外部DLL_第10张图片

重新生成解决方案,即可在项目文件中找到DLL文件:

LabVIEW学习笔记(九)——调用外部DLL_第11张图片

 

1.2  编写LabVIEW程序

在前面板上编写程序:

LabVIEW学习笔记(九)——调用外部DLL_第12张图片

        通过外部编译器(例如Visual C++)将代码编译为动态链接库DLL文件后,在调用库函数对话框中指定该动态链接库的地址,选择函数名:

LabVIEW学习笔记(九)——调用外部DLL_第13张图片线程设置可以任意,调用规范必须设置为C

      在参数页中设置函数返回值类型为Void添加input参数为 —维双精度浮点型数组,数组格式为数组数据指针添加input length为整型传值参数, 添加output参数为一维32位整型数组,如下所示:

LabVIEW学习笔记(九)——调用外部DLL_第14张图片

LabVIEW学习笔记(九)——调用外部DLL_第15张图片

LabVIEW学习笔记(九)——调用外部DLL_第16张图片

        配置好参数后,就需要要添加输入输出,由于Output用于得到函数汁算结果,因此输入时只需要输入一个常数初始化数组即可。

       运行程序,可以在前面板看到:

LabVIEW学习笔记(九)——调用外部DLL_第17张图片

 

 

二、学以致用

         本节我们通过仿真信号函数来产生一个带白噪声的正弦信号,然后调用C语言写的一阶简单低通滤波算法来处理该信号。首先仿真信号函数在函数面板中的位置为:

LabVIEW学习笔记(九)——调用外部DLL_第18张图片

我们在VS2015中新建一个项目,编写一阶简单低通滤波算法的代码:

LabVIEW学习笔记(九)——调用外部DLL_第19张图片

然后生成目标DLL文件:

LabVIEW学习笔记(九)——调用外部DLL_第20张图片

然后在labVIEW中新建一个空白 VI,编写如下代码:

LabVIEW学习笔记(九)——调用外部DLL_第21张图片

然后在调用库函数对话框进行参数的配置:

LabVIEW学习笔记(九)——调用外部DLL_第22张图片

LabVIEW学习笔记(九)——调用外部DLL_第23张图片

LabVIEW学习笔记(九)——调用外部DLL_第24张图片

LabVIEW学习笔记(九)——调用外部DLL_第25张图片

LabVIEW学习笔记(九)——调用外部DLL_第26张图片

这里需要格外注意:我在C语言的程序中对形参使用了double,int,float等类型的数据类型:

LabVIEW学习笔记(九)——调用外部DLL_第27张图片

它们在labVIEW中有对应的数据类型:

LabVIEW学习笔记(九)——调用外部DLL_第28张图片

这个数据类型一定要配置正确,否则程序就会出错。

配置完成以后,我们就可以运行程序,在前面板观察:

LabVIEW学习笔记(九)——调用外部DLL_第29张图片

你可能感兴趣的:(LabVIEW)