完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
看了一个别人做的QR二维码的调用,然后自己试着调用,发现根本无从下手。
每次到参数配置,就不知道怎么弄了,查了一堆资料,搬运过来给大家看看。 输入简体字,点下面繁体字按钮进行在我要如何使用 labview 来呼叫动态连接函式库 (Dynamic Link Library DLL)? 问题: 我要如何使用 LabVIEW 来呼叫DLL? 解答: 如要在 LabVIEW 底下呼叫 DLL, 您必须先了解它的型态是什么. 基本上DLL会有两种型态; C/C++ DLL 和 Microsoft .NET Assembly. 製造C/C++型态的DLL可用 C, C++ 或其他语言 (.NET 语言除外) 像是 Java, Fortran 或 Visual Basic 6.0. .NET的DLL可被称为 .NET Assembly 或 Assembly. 对于以上这两种型态与不同名称的DLL来说, 不同的地方是, .NET 的 DLL与其它的DLL不太一样. .NET DLL 使用的是 Common Language Runtime (CLR) 和 .NET Framework 来管理DLL内的功能. 如果使用的是 C/C++ 的 DLL 1. 找到它的标头档 (header file *.h) 或它的函数原型定义. 2. 决定您想要使用的函数. 请注意这些函数的参数是否是最基本的型态像是 int, char, double 或者它们是比较複杂的型态像是 structs, arrays 或 vectors. 3. 如果您的函数没有任何複杂的参数而且您也有它的标头档, 那您就可以使用 LabVIEW 裡一个很方便的工具来做引进 ( 引进后它还可以把DLL裡的函数做成一个函式库). 此工具可在 Tool>>Import>> Shared Library (.dll) 开启. 开启后您就可以按照它的使用精灵来进行引进. 4. 如果您的函数没有任何複杂的参数但您没有它的标头档. 那您可以先确认他是否是C/C++类型的DLL, 因为C/C++类型的DLL通常在他们的开发环境下都会产生标头档. 但如果找不到, 您就必须研究此DLL的文件来了解函数裡参数的定义. 接著, 您就可以使用 Call Library Function Node 功能来手动式的呼叫您的函数. 5. 如果您的函数需要呼叫到複杂的参数, 那您就必须使用LabVIEW 裡的 Call Library Function Node 功能来呼叫此DLL并用它来定义DLL内的原型参数 (如果您的DLL是用Type Library来编辑的, 那它的参数与回传型态就会自动的被定义). 如果您複杂的函数型态是一个包含很多基本型态 (如: int, double, char) 的 struct, 那最单纯的方式就是製造一个 C 语言底层的包装档 (wrapper DLL). 由于C/C++的参数不一定跟LabVIEW 的参数对的上, 包装档DLL可以把複杂的参数转换成比较基本的参数. 比如说, 如果您有一个 C 写的struct 裡面包著一个char* (文字或文字阵列) 的参数, 那您可以製造一的包装档功能来让 LabVIEW 直接吃进char* 并把它放进一个 structure裡, 最后再来呼叫原本的DLL. 如果您有此DLL的原始程式码, 您也可以直接把struct型态改成char* 的型态. 注意: 在LabVIEW Example Finder 裡有一个很有用的范例档可以告诉您如何利用 Call Library Function Node 来应付不同型态的资料. 这个范例档叫做 Call DLL.vi. 当您遇到比较複杂的型态像是 array 或 struct 时, 您就可以来参考此范例. 您可以在LabVIEW Example Finder ( Help>>Find Examples) 裡选 Directory Structure. 在中间的资料夹清单内选择 dll>>data passing>>Call Native Code.llb. 您可在此找到 Call DLL.vi. 如果要在范例程式内观看某一个资料型态, 先在 Data Type 底下做选择. 接著按下 Open Example VI for Current Data 按键. 这时一个新的程式视窗就会打开并显示 Call Library Function Node 的应用范例. 如果使用的是 .NET assembly 的 DLL 1. 如要在 LabVIEW 下使用 .NET assembly, 请打开 .NET 的托盘 (程式区点右键在 Connectivity>>.NET裡) 并使用裡面的功能. 2. 首先使用 Constructor node 来开启您想用的 .NET assembly 功能. 3. 接著使用属性与呼叫节点 (Property / Invoke Node) 来控制或呼叫您功能的属性与动作. 您只需要把 Constructor node 的参考点连接到属性或呼叫节点即可.
|
|
相关推荐
1个回答
|
|
哈哈哈哈
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
559 浏览 0 评论
793 浏览 0 评论
1732 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2603 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1913 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 09:42 , Processed in 0.659143 second(s), Total 75, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号