- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
外部程序接口之调用DLL
LabVIEW 与外部程序接口:
LabVIEW 作为一种图形化环境的编程语言,功能已经十分强大。同时,LabVIEW 也是一个软件
平台:在 LabVIEW 环境中,我们可以通过 LabVIEW 提供的丰富接口来调用其他语言的程序。
这些接口包括DLL ,C 语言接口,ActiveX ,.NET,等。
DLL 是一种封装好了的函数库,只要遵守DLL 的开发觃范和编程方法,任何编译器生成的DLL
都具有通用性。并且该函数只有在被调用的时候才会被动态的载入内存,节省的内存的开销。
在LabVIEW 中,我们可以通过“调用库函数节点”(Call Library Function Node ) 我们
可以方便的调用C ,VC ,VB 等文本语言编写好的程序以及Windows 自带的大量的API 函数。
调用C 语言DLL :
如何在 LabVIEW 中调用DLL 呢?我们首先来看一个例子,请运行附件中的 hostname.vi。得到
如图所示的结果:
观察程序框图,我们看到通过调用hostname.dll ,我们得到了当前计算机的用户名。
接下来我们看一下该调用是如何实现的。hostname.dll 函数的源代码如下:
该函数的源代码可以参见hostname.c 文件。根据函数的定义,我们在“调用函数节点”中,配
置相应的参数:
1.在函数面板中,选择该DLL 的路径和具体的函数名。
注:对于不同的DLL 函数,需要选择不同的调用觃范。这里选择C ,表示由调用方(LabVIEW )
清除堆栈。
2.在参数面板中,配置该函数的输入输出参数。
根据函数定义,这里配置了输入“参数 1”,并且定义数据类型为“字符串”。
3.点击确定,完成调用DLL 函数。
4.在程序框图中使用“连接字符串”,在得到的计算机名前添加字符串“LabVIEW is running on”,
如图
参数配置中的数据类型:
在“参数”的配置页面中,我们需要根据函数的定义来为添加的输入输出函数选择合适的数据类
型。LabVIEW 的调用函数节点提供了丰富的数据类型以供选择:
•Numeric
•Array
•String
•Waveform
•Digital Waveform
•Digital Data
•ActiveX
•Adapt to Type
•Instance Data Pointer
在参数的配置过程中,必须根据函数的定义选择LabVIEW 中对应的数据类型,否则调用的过程
中程序会报错,甚至程序崩溃。
关于LabVIEW 中是如何定义不同的数据类型的,可以参考以下的范例,运行附件中的Call Native
Code.vi 中的Call DLL.vi。
这里以单精度浮点型为例。
在Call DLL 的程序中,选择SGL。进入对应的函数面板:
我们看到,该VI 对单精度浮点数做了一个平方的运算。代码如下:
#include extcode.h
#include windows.h
_declspec(dllexport) void WinFLOAT(FLOAT input, FLOAT *output);
_declspec(dllexport) void WinFLOAT(FLOAT input, FLOAT *output)
{
*output = input * input;
}
打开“函数调用节点”我们可以观察该输入输出函数的数据格式配置:
在代码中输入为单精度浮点数,所以配置的数据类型选择如下:
在代码中输出为单精度浮点数的指针,所以配置的数据类型选择如下:
更多的参数配置信息可以参见该范例中的其他数据类型。
调用Windows 的DLL :
Windows 操作系统提供了很多的API 函数,比如User32.dll 中就包含了键盘,鼠标,声音,系
统时间等函数。这里我们通过一个例子来看一下如何使用Windows 提供的函数。
比如我们想通过编程隐藏Windows 的任务栏。需要使用到Windows 中的函数如下:
Function long FindWindowA ( ref string lpszClassName, ref string lpszWindow)
Function long ShowWindow (long hWnd, long nCmdShow )
文档评论(0)