如何动态加载和运行VIs?



主要软件: LabVIEW Development Systems>>Full Development System
主要软件版本: 1.0
主要软件修正版本: N/A
次要软件: N/A

问题:
如何动态加载和运行VIs?

解答:
如果在一个VI的程序框图中调用了另外一个子VI,那么当主VI被加载进内存的同时,子VI也被加载了。出于对内存使用的考虑,你可能希望在程序执行的过程中动态的加载和卸载VI,这可以通过VI服务器来实现。参考VI 服务器工具向导(见如下链接)获得更多关于VI服务器的信息。

(Macintosh) 除了使用平台独立的VI服务器,你可以使用苹果事件在Macintosh上来动态的加载和运行VI. 这些VI位于 Functions»Communication»AppleEvent 面板或者它的子面板 LabVIEW Specific Apple Events. 这些VI包括如下:
  • AESend Finder Open
  • AESend Open, Run, Close VI
  • AESend Run VI
  • AESend Close VI
(LabVIEW 4.x) 你可以使用VI控制VIs 来动态加载应用程序的不同部分。 由于这些部分是被动态加载的,所以他们不是在创建应用程序时使用的的顶层VI的层次结构的一部分,结果应用程序生成器似乎不会将这些部分嵌入到应用程序的文件中。如果你想创建一个单独执行的应用程序,并且想获得进一步的关于如何去做的指导,请继续往下读。

Y你可以使用如下的两种方式来创建使用了VI控制VIs的LabVIEW 应用程序:
  • 最简单的将所有动态加载的VIs保存保存到一个LLB库的方式是创建一个关键VI,这个VI的程序框图中包含了顶层VI和所有动态调用的VIs,当你保存了这个VI用于程序的发布,所有的必需的VI也就被保存了。然后从应用LLB库中删除关键VI.注意,在这个操作的过程中,动态VI的相对路径可能被修改,所以你有可能需要修改你的代码来对应这个变化.

    保存所有动态VIs到一个LLB库中的另外一个方法是选择File»Save With Options»Application Distribution 到一个新的LLB (和经常操作一样). 然后,对于每一个动态调用的VI,重复这个动作,但是要保存到和主应用程序的同样一个LLB中.这样就包含了动态调用的应用程序的结构.

    这种方式可能创建一个很大的可执行文件. 从内存的角度考虑, 你仍然可以从动态加载中获利; 换句话说, 整个可执行文件并不是必须都加载到内存中的. 从文件管理的角度考虑, 你将处理一个较大的.exe 文件.

  • 当然,你也可以只将主应用程序嵌入到可执行文件中,然后动态调用外部的独立文件(VIs和/或LLBs).当使用VI控制VIs, 你必须使用当前VI路径来指定动态调研的VI,同时还要跟上剥离路径的函数.


相关链接:

附件:





报告日期: 04/15/1997
最近更新: 12/12/2007
文档编号: 0WE7IMSG