首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
LabVIEW与外部程序间DLL文件的调用
北京泛华恒兴科技有限公司
收藏本文     查看收藏
 
 
图5 设置回调函数
    如果为Reserve选择了一个回调函数,那么当一个新的线程开始调用这个DLL时,这个回调函数首先被调用。可以利用这个函数为新线程使用到的数据做初始化工作。线程在使用完这个DLL之后,它会去调用Unreserve中指定的回调函数。Abort中指定的函数用于VI非正常结束时被调用,也就是让一个程序在运行完前停止。这些回调函数的原型在Prototype for these procedures中列出,必须要由DLL的开发者按照特定的格式实现。如果使用的DLL不是专为LabVIEW设计的,一般不会包含这样的回调函数。
    第四页是错误处理方式,用户可根据需要选择相应的错误检查级别。
    另外还需要注意的是,C语言中的struct在LabVIEW中可以使用cluster来表示,但有时需要作出相应的调整。这是因为在C语言中,struct的字节对齐是可以进行设置的,这就决定了其各元素的存放地址的可变性。C语言中的对字节对齐数可通过#pragma pack指令或在工程属性中进行指定。而在LabVIEW的cluster中,所有元素只能是1字节对齐的,所以如果要和C语言中非1字节对齐的struct对应,需要做出一些调整。比如,对于C语言中2字节对齐的struct,第一个元素如果是I8型的,在LabVIEW的cluster中第一个元素对应不变,但不能紧挨着放第二个元素,必须留一个无意义的空位。C语言的struct其实也是如此,只不过没有表现出来。所以为了方便,如果自己用C语言生成DLL文件供LabVIEW调用最好将struct都设为1字节对齐。C语言的struct中可以嵌套数组,但是这和LabVIEW中含有数组元素的cluster是不一样的,LabVIEW中需要将数组中的元素都拆开放入cluster中。
    如果C语言的struct中含有一个指针,LabVIEW中的cluster只能用一个U32数值(32位系统上,64位系统上使用U64)来表示指针的地址,而不能将指针所指向的内容放到Cluster中去。如果声明的是指向struct的指针,才能在LabVIEW中使用cluster与之对应。CLN节点的配置面板中,没有一个专门命名的“struct”或者“cluster”参数类型,应选择“Adapt to Type”就可以了。如果参数的类型就是结构而非指针,考虑到C函数参数的压栈顺序,把一个结构体作为参数传给函数,相当于把结构中每个元素分别作为参数传递给函数。图6为C语言中struct和LabVIEW中cluster的部分匹配图。
 
图6 struct和cluster匹配
 
 
 
LabVIEW打包DLL文件
我们接下来学习如何使用LabVIEW来打包一个DLL文件。
首先我们编写一个名为Scale.vi的程序,功能很简单就是对输入的数据乘上10,然后再输出(图7)。

图7 scale.vi
必须在任务管理器中才能生成.dll文件。所以我们首先建立一个project,过程如下:
点击File>>New Project:
图8 生成新项目
 
接着弹出是否将该VI添加到新项目的对话框:
 
图9 是否添加VI到新建项目
 
选择Add,生成新的项目管理器,将其保存在需要的路径下:
 
 
图10 项目管理器
 
右键单击项目浏览器窗口中的Build Specifications,在快捷菜单中选择New>>Shared Library(DLL),弹出对DLL文件进行设置的对话框。点击Category>>Information,根据自己需求修改Build specification name和Target filename:
 
 
点击Source Files>>Project Files>> Scale.vi>> ,弹出对话框,直接用默认值,点击OK:
 
 
图12 Define VI Prototype
点击Destination>> Scale.dll,点击 ,可选择需要保存的路径。然后再点击Support Directory,这是指明了DLL支持文件的路径(比如数据文件之类的放在哪个文件夹),选择默认即可:
 
 

状 态: 离线

公司简介
产品目录

公司名称: 北京泛华恒兴科技有限公司
联 系 人: 市场部
电  话: 010-82156688
传  真: 010-82156006
地  址: 北京市海淀区西小口路66号东升科技园·北领地 A-4楼
邮  编: 100192
主  页:
 
该厂商相关技术文摘:
基于XML的模块化分布式软件系统架构设计
电动助力转向系统(EPS)耐久性试验台
基于1553B总线和PXI总线的某型航天动力控制系统关键技术研究
效率与成本是数据采集迎接挑战的关键
基于柔性测试技术的通用卫星电源变换器测试设备设计与实现
X-Designer 3.1,构建型软件平台助力测试测量
自动测试设备(ATE)中的技术融合与应用
引领测试系统创新性思维
基于柔性测试技术的节气门反应时间测试系统设计
基于柔性测试技术的车窗按钮老化测试系统
基于柔性测试技术的位置传感器标定与检测系统平台的设计
基于柔性测试技术在噪声定位分析方面的应用
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved