LabVIEW与LabWindows CVI的联合编程

您所在的位置:网站首页 dll是c语言写的吗 LabVIEW与LabWindows CVI的联合编程

LabVIEW与LabWindows CVI的联合编程

2024-01-26 14:49| 来源: 网络整理| 查看: 265

前言:

       本文主要介绍NI公司图形化编程语言-虚拟仪器LabVIEW软件如何调用NI公司的‍基于C语言的开发环境-LabWindows CVI开发语言生产的(Dynamic Link Library,缩写为 DLL),实现不同开发环境之间LabVIEW和C语言的接口互连,提高不同开发环境之间的互操作性,极大方便了使用不同开发环境的软件工程师之间实现系统和软件集成;

       LabVIEW是一种图形化编程语言,具有简单易学、形象直观的特点。同时,LabVIEW作为一种通用的、完善的高级编程语言,具有强大的外部接口能力,这些接口包括DLL、C语言接口(CIN)、 ActiveX、NET. DDE、MATLAB等。通过这些接口,用户能够方便地调用C、VC、VB、Labwindows CVI等编程语言编写的程序。可以实现LabVIEW与C、Basic、Matlab、Labwindows CVI等编程语言,甚至与外部应用软件(如Word、Excel等)之间的通信,达到代码复用及提高开发效率的目的。通过动态连接库DLL文件实现LabVIEW中与外部程序的接口技术,是最常用的一种方式,通过这种技术可以编写出功能更加强大的应用软件。

       因此,通过示例来学习如何调用外部dll。动态链接库(Dynamic Link Library,DLL)是一个可以多方共享的程序模块,内部对共享的例程和资源进行了封装。动态链接库文件的扩展名一般是.dll,DLL 和可执行文件(EXE)非常类似,最大的区别在于DLL虽然包含了可执行代码却不能单独执行, 必须由Windows应用程序直接或间接调用。

一、简单实例

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

1.1 生成DLL文件

  首先我们在Labwindows CVI中新建一个项目,写入算法代码并生成目标DLL文件:

  方法如下:

  打开LabWindows CVI 2019,选择 New-project,如下图所示;

选择File-New-Source(*.c)和File-New-Include(*.h),如下图所示;

选择Edit-Insert Construct-Insert Code Snippet DllMain,如下图所示;

       此时,cvi会自动创建主函数DllMain,点击保存命名:保存源文件,头文件以及项目文件,并在源文件和头文件中加入ArrayFloor1d函数,如下图所示;Dll工程的.c代码如下所示:

#include

#include

 int __stdcall DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

{

       switch (fdwReason)

       {

              case DLL_PROCESS_ATTACH:

                     if (InitCVIRTE (hinstDLL, 0, 0) == 0)

                            return 0;   /* out of memory */

                     break;

              case DLL_PROCESS_DETACH:

                     CloseCVIRTE ();

                     break;

       }

       return 1;

}

void __stdcall ArrayFloor1d(double *intput,int length,int *output)

{

       int i ;

       for (i=0;iTarget Settings,2)在弹出的对话框中,在Exports方框中单击Chang. 3)在弹出的对话框中,选择要导出的DLL函数声明的头文件ArrayFloor.h并在Export what选择 Include file and marked symbols。4) 单OK按钮,完成配置。(注意:Labwindows2019只有32位,因此LabVIEW2019也要选择32位)。

1.2  编写LabVIEW程序

在前面板上编写程序:

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

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

      在调用库函数“参数”选项卡中,“ArrayFloor1d”函数本身返回值为“void”,所以,其返回类型设置为空即可。对其它3个参数设置如下:input:该参数为指向“double”的指针类型,对应LabVIEW的一维数组。所以,“类型”设为“数组”;“维数”设为1;“数据类型”设为“8字节双精度”;“数组格式”设为“数组数据指针”;最小尺寸设为“”;length:“类型”设为“数值”;“数据类型”设为“有符号32位整型”选项;“传递”设为“值”; output:该参数为指向“int”的指针类型,对应LabVIEW的一维数组。所以,“类型”设为“数组”;“维数”设为1;“数据类型”设为“有符号32位整型”;“数组格式”设为“数组数据指针”。如下所示:

 

       配置好参数后,就需要要添加输入输出,由于Output用于得到函数汁算结果,因此输入时只需要输入一个常数初始化数组即可。运行程序,可以在前面板看到:

二、学以致用

      上节我们已经介绍了如何利用LabWindows CVI编写DLL文件,以及LabVIEW如何调用DLL文件。本节我们对其学以致用,我们通过仿真信号函数来产生一个带白噪声的正弦信号,然后调用C语言写的一阶简单低通滤波算法来处理该信号。首先仿真信号函数在函数面板中的位置为:

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

void __stdcall Filter(double *intput,int length,float coef,double *output)

 {

        int i;

        for(i=0;i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3