从子VI

时间:2015-07-30 09:36:58

标签: labview

我正在编写一个程序来控制Labview中的两个类似设备。为了避免复制代码,我使用了子VI。但我有一段代码,我在一个while循环中更新GUI上的一些值。我想知道是否有可能以某种方式在我的子VI中包含这个循环并让子VI在每次迭代后发送一个输出参数。

1 个答案:

答案 0 :(得分:7)

要从子VI中更新GUI,您可以执行以下操作之一:

  • 在您的顶级VI中创建队列通知程序,并将引用传递给您的子VI。在子VI中,将数据发送到队列或通知程序。在顶级VI中,有一个等待队列或通知程序上的数据的循环,并将其写入前面板指示器。
  • 在顶层VI的前面板指示器中创建控制参考,并将参考传递给子VI。在子VI中,使用属性节点来编写指标的Value属性。

如果您查看LabVIEW帮助以获取粗体条款,您将找到有关如何使用它们的文档和示例。

在这些选项中,我会使用一个队列来获取任何数据,其中顶级VI接收每个数据点(例如,如果数据正在图表上绘制或记录到文件中)或通知者只有用户必须看到最新值。为此目的使用控件引用有点“快速而肮脏”,可能会导致性能问题。

如果您需要更新多个这样的指标,您可能需要构建一个群集,其中包含您发送到队列/通知程序或包含控件引用的数据。将您的群集另存为 typedef ,以便您可以在不破坏代码的情况下修改其内容。