使用调用节点与通过引用调用节点调用VI时的差别

更新 Aug 28, 2023

适用于

软件

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

问题详述

 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?

解决方案

在通过引用调用VI时,使用调用节点和通过引用调用节点的主要差别在于编程的便捷性以及结构的灵活性。当使用通过引用调用节点时,必须连线严格类型引用。严格类型引用中包括含有数据类型的连线板以及指向VI的引用。因此,当使用通过引用调用节点时,LabVIEW已知数据类型并在节点中创建连线板。通过这个方法,你能够实现动态加载VI,同时获得简单连线的便捷性。
当使用调用节点时,LabVIEW忽略是否使用严格类型引用。因此你能够传递任何VI到调用节点并运行。由于不需要限定类型以及调用具有相同连线板的VI,使用调用节点大大增加了灵活性。但是, 如果要传递值,则需要知道控件及其数据类型的名称 ,这需要额外的编程。如果你想做的只是打开前面板并运行VI,那么调用节点也是一个简单的方法。考虑到你能够传递任何VI路径并且打开加载该VI,这个方法显得更加灵活。

使用调用节点调用VI的另一个好处是它提供了与VI交互的能力。如果VI需要被控制或者输出需要多次读取,调用节点的方法能够与VI交互以实现所需功能。使用通过引用调用节点时,在VI结束执行后连线板会输出结果,但它不提供与运行中VI交互的能力。

相关信息

如果要异步调用目标VI,请使用开始异步调用节点(Start Asynchronous Call Node)而不是通过引用调用节点( Call by Reference Node)。这将允许目标VI在单独的线程上运行。

使用调用节点的方法可能会在UI线程中运行目标VI,如果您希望在调用VI运行时让被调用VI充分执行,则可能会导致一些问题。即使您有一个False常量连接到结束前等待(Wait Until Done)终端,也会发生这种情况。对于单独线程中的完整异步调用,您需要修改目标VI的执行设置,方法是转到文件»VI属性(File»VI Properties,在对话框中选择执行(Execution,然后选择不同于用户界面与调用者相同的执行系统。