天天看点

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

前言:

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

一、示例1

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

1.1 生成DLL文件

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

  (1)方法一:

新建一个win32项目:

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

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

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

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

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

  在项目中添加一个新项:

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

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

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

在模块定义文件写入:

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

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

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

(2)方法二:

新建一个win32项目:

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

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

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

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

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

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

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

1.2  编写LabVIEW程序

在前面板上编写程序:

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

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

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

线程设置可以任意,调用规范必须设置为C。

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

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

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

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

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

二、学以致用

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

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

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

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

然后生成目标DLL文件:

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

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

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

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

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

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

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

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

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

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

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

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

继续阅读