上犹电脑信息网我们一直在努力
您的位置:上犹电脑信息网 > 文件问题 > LabVIEW调用动态连接库DLL文件的方法-DLL文件

LabVIEW调用动态连接库DLL文件的方法-DLL文件

作者:上犹日期:

返回目录:文件问题

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

相对于其它编程语言,在LabVIEW中调用DLL文件是比较简单的。下面通过一个例子说明在LabVIEW平台中调用DLL文件的编程方法。

调用DLL例子

本例调用C语言编写的DLL文件“MyDll.dll”里的函数“MyFunc”,其函数声明原型如图1所示:

LabVIEW调用动态连接库DLL文件的方法

图1 “MyFunc”函数的原型声明

该函数实现的功能为,产生一个初始值为x0、间隔为deltx、长度为length的一维数组y,并给出该数组的最后一个值lastData和函数的运行状态信息status。从函数的声明中可以看出,该函数中数据类型涉及到了“double”类型、“int”类型和“char”类型(对应LabVIEW的字符串型),在参数传递中也涉及到了值传递(x0、deltx、length)和指针(y、lastData、status)传递方式,较为复杂。为便于理解,图2给出了该函数的C语言实现代码。

LabVIEW调用动态连接库DLL文件的方法

图2 “MyFunc”函数的实现代码

该例调用DLL函数后程序运行前面板如图3所示,在前面板上放置了3个输入型控件和3个显示型控件,分别对应“MyFunc”函数的6个参数。当改变参数x0、deltx或length的值时,程序实时显示出y、lastData、status的值。

LabVIEW调用动态连接库DLL文件的方法

图3 调用DLL的参数传递测试的前面板

程序框图如图4所示,在参数x0、deltx或length的值改变事件中调用DLL文件“MyDll.dll”里的“MyFunc”函数计算y、lastData、status的值。

LabVIEW调用动态连接库DLL文件的方法

图4 调用DLL的参数传递测试的程序框图

该例能否正确运行,关键在于在调用库函数的配置对话框中,对该函数的输入输出参数进行正确配置。从该函数的原型声明中可以看出,该函数的调用规范上,本例需设置为“C”调用方式,如图5所示。

LabVIEW调用动态连接库DLL文件的方法

图5 “MyFunc”函数调用规范设置为“C”方式

在调用库函数“参数”选项卡中,“MyFunc”函数本身返回值为“void”,所以,其返回类型设置为空即可。对其它6个参数设置如下:

  • x0:“类型”设为“数值”;“数据类型”设为“8字节双精度”选项;“传递”设为“值”;
  • deltx:同x0设置;
  • length:“类型”设为“数值”;“数据类型”设为“有符号32位整型”选项;“传递”设为“值”;
  • y:该参数为指向“double”的指针类型,对应LabVIEW的一维数组。所以,“类型”设为“数组”;“维数”设为1;“数据类型”设为“8字节双精度”;“数组格式”设为“数组数据指针”;最小尺寸设为“<None>”;
  • lastData:该参数在C语言中声明为“double &lastData”,为引用传递方式,对应LabVIEW中指向“double”类型的指针方式。所以,“类型”设为“数值”;“数据类型”设为“8字节双精度”;“传递”设为“指针”;
  • status:该参数在C语言中声明为“Char* status”,即指向字符的指针,实际对应LabVIEW的字符串方式。所以,“类型”设为“字符串”;“字符串格式”设为“C字符串指针”;最小尺寸设为“<None>”。

参数正确配置后,在图4程序框图中,需要说明的是,对于参数y和status,由于在本质上都是一维数组,且参数设置的最小尺寸本例都设为了“<None>”,所以需在程序框图中显式的预先分配一段不小于函数中需要的内存大小的空间。另外,从“MyFunc”函数的C语言实现代码中也可以看出,对于这两个参数,“MyFunc”函数中并没有分配新的内存空间,而是直接利用了外部传入的参数地址来进行对这两个参数的读或写操作。本例中,y参数使用了“初始化数组”函数生成了一个初始值为0、长度为“length”的双精度一维数组连接到该参数作为内存的初始化,status参数使用了字符串常量连接到该参数作为内存的初始化。当然,对这两个参数,也可以在库函数的配置对话框中直接指明其需要的大小,如对于y参数,最小尺寸可以设为“length”的值,对于status参数,最小尺寸可以设为具体的值,如512,这样设置以后,在程序框图中就可以不必对这两个参数作代码的初始化了。

结论

由上面的例子可以看出,LabVIEW中调用动态连接库DLL文件中函数的编程并不复杂,关键是要知道被调用函数的名称,并且保证输入、输出参数的顺序及数据类型要配置正确即可。

备注

大家如果有兴趣的话可以加关注并私信回复:LabVIEW001,则可获得该文章的DLL文件及LabVIEW原程序下载链接。欢迎加关注,共同交流。

相关阅读

关键词不能为空
极力推荐

电脑蓝屏_电脑怎么了_win7问题_win10问题_设置问题_文件问题_上犹电脑信息网

关于我们