LabVIEW中DLL文件的创建及其应用

发布于:2007/4/25 13:57:18 | 1106 次阅读

     摘 要:介绍了动态链接库文件的特点。以LabVIEW和Microsoft Visual C++为编程工具,详细介绍了DLL文件的创建过程。提供了开发自动测量系统时调用D LL文件编写子函数的例子,并给出了编程结果。本文提供的程序创建方法可推广应用于其他DLL文件的开发。
  关键词:动态链接库; LabVIEW; 自动测量; 仪器控制
Building and Application of DLL Files in LabVIEW
LI Gaosheng,ZHOU Dongming,HE Jianguo,BAI Yang
(College of Electronic Science and Engineering, National Univer sity of Defense
Technology, Changsha, 410073, China)
  AbstractFeatures of Dynamic Link Library(DLL) is introduced Detailed procedure s for building DLL file is offered based on LabVIEW and Microsoft Visual C++ Example of writing a SubVI with DLL when developing automatic measuring sys tem is given, as well as its result  Method offered here for programming can be extended to other development of DLL files
  Keywordsdynamic link library;LabVIEW;automatic measu ring;equipment controlling
  在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。动态链接库(Dynamic Link Library,DLL)是基于Windows程序设计的一个非常重要的组成部分。LabVIEW开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。
1动态链接库的特点
  
动态链接是相对于静态而言的。而静态链接是指把要调用的函数或过程链接到可执行文件中,成为该文件的一部分,即可执行文件包含了运行时所需的全部代码。当多个程序都调用相同的函数时,内存中就会存在这个函数的多个copy,造成内存资源的浪费。而动态链接调用的函数代码并没有被复制到应用程序的可执行文件中,而仅在其中加入了调用函数的描述信息。只有当应用程序被装入内存并开始运行时,才与相应的DLL建立链接关系。当执行到DLL中的函数时,根据链接产生重定位信息,Windows转去执行DLL中相应的函数代码。DLL是可共享和重载的,其代码执行速度很快。
  DLL具有如下特点:DLL的编制与具体的编程语言及编译器无关,只要遵守其开发规范并安排正确的调用接口,无论使用何种语言编制的DLL都具有通用性;使用DLL不是将其库代码拷贝,而只在程序中记录函数的入口点和接口,程序执行时才将代码载入内存。多个程序使用相同的DLL时,内存中只需装载,可以高效经济地使用内存;DLL是基于Windows的程序模块,他不仅包含可执行代码,还可以包含数据和各种资源,扩大了库文件的使用范围;DLL中封装了一些可以被共享的资源,是W indows最重要的组成要素和Windows API函数的封装形式,Windows最基本的3大组成模块Ke rnel,GDI和User都是dll文件,他的许多新功能也是通过DLL来实现的。
  LabVIEW中动态链接库的调用是通过CLF(Call Library Function) 节点实现的,如图1所示。CLF可被用来调用32位的Windows DLL,Macintosh系统的Code Fragment或Unix中的S hared Library。
2创建共享库文件
  
创建LabVIEW可以调用的外部代码库,需要完成下面3项任务:在LabVIEW中建立函数原型;完成c文件;在外部IDE中创建Library Project。
2
.1在LabVIEW中构造DLL函数原型
  首先新建一个VI并命名为“dlldemo.vi”。然后通过执行Functions→Advanced→Call Library Function在Diagram中放置CLF节点,点击右键选择“Configure”进行配置。Funct ion Name输入“avg_num”,Calling Conventions选择“C”;将Parameter项中的Return Type改为“Error”,其中Type选择为Numeric,Data Type为Signed 32b Integer。通过点击“Add Parameter after”按钮增加其他参数,各自的配置如表1所示。
  经过上述设置之后,Function Prototype指示框中应出现如下信息:long avg_num(float*a, long size, float *avg); 至此,CLF节点设置完毕,返回Diagram将会发现CLF节点下面增加了4个选项,分别对应于刚才设置的4个参数。在CLF图标的右键中选择“Create. c File”,保存为“dlldemo.c”.
2.2完成.c文件

  打开dlldemo.c,可见其代码如下:
  
  
这个简单的例子不需要头文件,当创建更复杂的共享库文件时,必须包含所有相关的头文件。例如,当需要使用LabVIEW管理函数时,必须包含Labview.lib,该文件位于LabVIEW安装目录下的cintools文件夹中。
2.3在外部集成开发环境(Integrated Development Environment,IDE)中完成DLL文件的创建

  
以Microsoft Visual C++ 6.0为例。打开“dlldemo.c”,在avg_num的声明前增加_declspec(dllexport):
  
  点击File→New并在随后出现的对话框中选择“Win32 Dynamic Link Library”,Project Name取为“dlldemo”;点击“OK”之后,选择“An empty DLL project”。然后执行Proje cte→Add to Projecte→Files并将“dlldemo.c”程序加入。接下来设置Projecte→Setti ngs的C/C++选项,其设置如图2所示。
  执行Builde→Build dlldemo.dll,Microsoft Visual C++将创建.dll文件并将其放入Debug文件夹中。至此,就完成了可供其他程序调用的.dll文件的创建。
3LabVIEW中DLL文件的应用举例
  
DLL文件在多种领域被广泛应用,自动化测量中的仪器控制就是很有潜力的市场。越来越多的仪器厂商在推出新型智能仪器的同时,会提供针对性很强的动态链接库文件,其中包含可以分别实现该仪器多种测量功能的子函数,供用户开发测量控制程序时调用,这可以大大加速用户开发基于计算机的自动测量系统的进程。
  Tektronix公司提供了针对其高性能数字取样示波器TDS 8000B的tktds8k_32dll文件,通过调用该文件,可以方便地生成测量模块,进而组建更为复杂的系统。下面给出调用tktds8 k_32dll创建“设置水平轴参数”子VI的例子。其框图程序如图3所示。用到的函数是该dll文件中的tktds8k_SetHorizontalParameters,设置的参数包括status, Instrument hand le, timebase selector, horizontal position, record length等。由于DLL的代码封装,整个程序非常简洁。因为有了这个DLL文件,用户在开发时不需考虑底层问题,各参数的设置通过“Create Control”即可生成,减小了设计测量系统的工作量。在大型系统的开发过程中,根据需要创建实现某些功能的DLL文件,自己或其他开发者在今后的开发工作中都可以很方便地调用。
4结语
  
介绍了动态链接库文件的特点后,以LabVIEW和Microsoft Visual C++为编程工 具,详细 介绍了DLL文件的创建过程。提供了开发自动测量系统时调用DLL文件编写子函数的例子 ,并给出了编程结果。文中提供的编程方法可推广到其他动态链接库程序的编写。 通过编写和调用DLL文件,可以显著提高工作效率,在资源共享及继承性方面有着尤为突 出的优势。
参考文献
[1]杨乐平.LabVIEW程序设计[M].北京:清华大学出版社,2003.
[2]National Instruments,LabVIEW Functions and VI Re-ference[Z]2000.
[3]Tektronix,Inc.Tektronix CSA/TDS 8000B Programmer Guide[Z ]2002.
参与讨论
后参与讨论

//评论区

推荐阅读

智能网联汽车国际标准法规协调专家组(HEAG)召开工作会议

近年来智能网联汽车快速发展,新技术不断涌现,与相关产业融合度持续提升,正在推动全球汽车产业发生深刻变革。为应对此种形势,欧、美、日等汽车工业发达国家和地区都加大了智能网联汽车的国际标准法规协调的参与力度,在联合国世界车辆法规论坛(UN/WP.29)和国际标准化组织(ISO)层面,智能网联汽车相关国际标准法规协调活动正快速推进。 为更有效地支撑上述组织的国际标准法规协调活动,2017年全国汽车标准

0215jiejie | 发布于:2022-12-01 0评论 0赞

苹果推出搭载M2芯片的新款iPad Pro 799美元起售

据苹果官网,苹果推出搭载M2芯片的新款iPadPro。 11英寸wifi版起售价为799美元,wifi+蜂窝网络版起售价为999美元;12.9英寸wifi版起售价为1099美元,wifi+蜂窝网络版起售价为1299美元。

0215jiejie | 发布于:2022-10-19 0评论 0赞

新能源汽车领衔 “中国智造”加速登陆欧洲市场

全球五大车展之一巴黎车展时隔四年再度启幕。在这场被视为“全球汽车行业风向标”的盛会上,国内外汽车品牌云集,长城汽车、比亚迪等再次领衔中国汽车出海。 长城汽车欧洲区域总裁孟祥军表示:“欧洲是长城汽车最重要的海外市场之一,巴黎车展是长城汽车向欧洲市场展示GWM品牌和产品的最佳机会。长城汽车正在研究汽车行业碳排放的整个生命周期,到2025年,将推出50多款新能源产品,全力支持可再生能源使用,为全球用户

0215jiejie | 发布于:2022-10-19 0评论 0赞

严监管时代来临,电子烟“通配”大战走向何方?

针对通配烟弹厂商的一系列诉讼的结果,将对生产通配烟弹的品牌未来在电子烟行业的发展产生深远影响。 10月1日,《电子烟强制性国家标准》正式实施,中国电子烟监管全面生效。而在电子烟行业进入规范化、法治化阶段前夕,一场围绕着通配烟弹的争论在行业里发酵。 “通配”是电子烟从业者约定俗成的概念。换弹式电子烟由烟杆和烟弹组成,“通配”烟弹指的是非品牌商生产、可与品牌烟杆匹配使用的烟弹。多位业内人士表示,被

0215jiejie | 发布于:2022-10-19 0评论 0赞

Bourns 全新大功率分流电阻器

采用金属感应引脚,专用于大电流应用中进行精确测量 全新分流电阻器专为电池管理系统、大电流工业控制和电动汽车充电站 提供高可靠性、高成本效益的解决方案 美国柏恩Bourns全球知名电子组件领导制造供货商,宣布新增12款CSM2F系列功率分流电阻器,扩展其产品组合。全新系列采用铆接通孔金属传感引脚,可满足大电流应用中对电压测试点精确定位日益增长的需求。最新型Bourns?CSM2F系列分流电阻器

0215jiejie | 发布于:2022-10-18 0评论 0赞

请尊重元宇宙“这个筐”

元宇宙是个筐,啥都往里装,但区别在于有的像聚宝盆,有的像垃圾桶。国庆假期刚结束,中青宝“90后”董事长李逸伦便亲自上阵,玩起了元宇宙婚礼。靠着老板首秀和代言,中青宝顺势推出“MetaLove元囍”App,正式进军元宇宙婚礼赛道。 就产品而言,如同其他元宇宙产品,李逸伦的元宇宙婚礼“新奇与吐槽齐飞”:有人说是有趣的尝试,有人则认为像QQ炫舞结婚系统。要知道,QQ炫舞是一款推出了十余年的老游戏。

0215jiejie | 发布于:2022-10-13 0评论 0赞

边缘计算:突围商业模式痛点

截至8月末,中国5G基站总数达210.2万个,中国5G发展已经进入下半场。随着5G加速融入千行百业,互动直播、vCDN、安防监控等场景率先大规模落地,车联网、云游戏、工业互联网、智慧园区、智慧物流等场景也快速走向成熟,这些更大流量、更低时延、更高性能的场景涌现,对边缘计算的刚性需求势必爆发。 GrandViewResearch预测,即使在新型冠状病毒肺炎疫情肆虐全球的背景下,边缘计算和5G网络市

0215jiejie | 发布于:2022-10-13 0评论 0赞

商务部回应美商务部升级半导体等领域对华出口管制并调整出口管制“未经验证清单”

商务部新闻发言人10日就美商务部升级半导体等领域对华出口管制并调整出口管制“未经验证清单”应询答记者问。 有记者问:近日,美国商务部在半导体制造和先进计算等领域对华升级出口管制措施。同时,在将9家中国实体移出“未经验证清单”过程中,又将31家中国实体列入,请问中方对此有何回应? 对此,商务部新闻发言人回应称,中方注意到相关情况。首先,通过中美双方前一阶段共同努力,9家中国实体zui终

0215jiejie | 发布于:2022-10-13 0评论 0赞

TCL华星官宣与奔驰合作:推出全球首款横贯A柱的车载显示屏

今年1月,奔驰带来了VISIONEQSS概念车,其中控台采用了一块完全无缝的47.5英寸曲面显示屏,横贯整个A柱,令人印象深刻。今天,TCL华星正式官宣与奔驰达成合作,并认领了VISIONEQSS上这块全球首款横贯整个A柱曲面的车载显示屏。 根据TCL介绍,这款显示屏采用了完全无缝的超薄一体化设计,将仪表盘、中控与副驾娱乐显示融为一体,并能够与3D实时导航系统相辅相成。 同时,这块显示屏还采用

0215jiejie | 发布于:2022-10-12 0评论 0赞

半导体板块暴跌 谁最受伤

国庆假期后首日开盘,上证综指时隔5个月再次失守3000点,与此同时,半导体板块也再度走低,其中,北方华创、雅克科技等个股跌停。10月11日早盘期间,半导体板块持续下挫,北方华创、雅克科技再度跌停。截至下午收盘,北方华创、雅克科技维持跌停状态,华海清科、拓荆科技-U、盛美上海、清溢光电、海光信息的跌幅则超10%。同日,半导体板块中的119只个股中超五成呈现下跌趋势。 在半导体板块遭遇下挫的同时,北

0215jiejie | 发布于:2022-10-12 0评论 0赞