第10章LabVIEW常用外部接口.PDF

第10章LabVIEW常用外部接口.PDF

10.1 调用库函数  LabVIEW作为一个强大的工具,可以调用其他很多专 业的软件,实现更为复杂的LabVIEW 自身不能够单独 实现的功能,同时,它还可以实现在应用程序之间进 行通信,把LabVIEW运算得到的数据传送给其他程序, 或者用LabVIEW接收其他程序传来的数据。  10.1.1 DLL简介  1.DLL 的概念  由于LabVIEW是以图形化的方式编程,它所提供的对象功能有限,因 此在实际应用的过程中难免会遇到LabVIEW提供的对象不能解决的问 题。所以LabVIEW提供了C语言接口及直接调用动态链接库(DLL)函数 的功能。  DLL是建立在客户端/服务器通信的概念上,包含若干个函数、类或资 源的库文件,函数和数据被存储在一个DLL服务器上,并由一个或多 个客户导出使用,这些客户可以是应用程序,或者是其他的DLL 。 DLL库不同于静态库。在静态库情况下,函数和数据被编译进—个二 进制文件(通常扩展名为“.Lib”),对应Visual C++ 的编译器,它在处 理程序代码时将从静态库中恢复这些函数和数据,并把它们和应用程 序中的其他模块组合在一起,生成可执行文件,这个过程称为“静态 链接”,此时,因为应用程序所需的全部内容都是从库中复制出来的, 所以静态库本身并不需要与可执行文件一起发行。  在动态链接的情况下,有两个文件,一个是引人库( “.Lib”)文件, 一个是DLL文件。引入库文件包含从DLL导出的函数的名称和位置, DLL包含实际的函数和数据。应用程序使用“.hb ”文件链接到所需要 使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此, 在应用程序的可执行文件中,存放的不是被调用的函数代码,而是在 DLL中所要调用的函数的内存地址。这样,当一个或多个应用程序运 行时,再把程序代码和被调用的函数代码链接起来,从而节省了内存 资源。  2.调用DLL  在LabVIEW 中,可通过调用库函数模块调用动态链接 库。在框图程序编辑窗口下,选择功能模板中的互连 接口→库与可执行程序→调用库函数节点,放置在框 图程序编辑窗口中,其图标如图10.1所示。  双击此函数模块,将弹出调用库函数对话框,如图 10.2所示。在此可以对要调用的动态链接库及函数进 行设定。  将节点放置在程序框图中,双击会出现它的配置对话框,共有四页。第一页 用于填写被调用函数的信息Library name or path (库名/路径)需给出DLL文 件名和路径,若引用操作系统路径下的DLL文件,直接输入文件名也可调用, 其它的必须输入全路径。在这里已经给出名字的DLL是被静态加载到程序中的, 也就是说当调用了这个DLL的VI被装入内存时,DLL 同时被装入内存。 LabVIEW也可动态加载DLL,只要勾选上Specify path on diagram(在程序框图 中指定路径)的选项即可。选择了这个选项,在Library name or path (库名/ 路径)中输入的内容就无效了,取而代之的是CLN 节点多出一对输入输出, 用于指明所需要使用的DLL的路径。这样,当VI被打开时,DLL不会被装入内 存,只用程序运行到需要使用这个DLL 中的函数时,才把其装入内存。 Function name是需要调用的函数的名称,LabVIEW会把DLL 中所有的暴露出 来的函数都列出,用户只要在下拉框中选取即可。Thread栏用于设定哪个线 程里运行被调用的函数。用户可以通过CLN 节点的配置面板来指定被调用函 数运行所在的线程。CLN 的线程选项非常简单,只有两项:Run in UI thread 和Run in any thread 。LabVIEW的程序框图上直接可以看出一个CLN节点是 选用的什么线程。如果Run in UI thread ,节点颜色是橙色的; Run in any thread则是浅黄色的。  单击确定按钮后,就可以将该调用库函数节点当做一个具有该动态链接库中 被调函数功能的节点来使用。  对已经编译生成的DLL文件,可以按上述方法直接调用。另外,LabVIEW还 提供了编写动态链接库的C源代码框架,利用此框架编写动态链接库的步骤如

文档评论(0)

1亿VIP精品文档

相关文档