从循环

时间:2015-10-22 17:58:16

标签: labview

Labview对我之前使用过C / Java感到非常沮丧。

我有一个简单的问题,我不知道如何解决。

我的程序在循环中执行一些操作并更新循环内的指示符。我想把这个循环(以及它需要的输入)放到VI中,但我不知道如何使指标成为VI的输出。

我希望能够重用这个VI,连接一个指示器,让它自动更新,而不会在VI之外创建任何循环。

在C中我可以通过返回指针或通过引用传递给函数来做到这一点。

4 个答案:

答案 0 :(得分:3)

使用队列在程序框图中的循环之间移动数据。

producer/consumer模式使用队列在相同的图上的两个循环之间移动数据,但是队列是VI层次结构的全局,而naming it when you create it是第二个VI可以使用相同的名称获得对它的引用。

NB:队列是1:1且无损;如果您需要1:N数据传输,请使用notifier(最新值有损)。

答案 1 :(得分:3)

在LabVIEW中,while循环具有简单的条件。只有当我们满足条件时,该值才能超出循环。循环的右下角有一个条件终端。

一般情况下:

1)当在那里设置true标志时(如果为true则停止)然后该值将在循环外传递。

2)当在那里设置false标志时(如果为true则继续),则该值将在循环外传递。

3)你总是可以在循环内部使用带有条件终端的错误连线,当出现错误时,循环就会停止。

在您的情况下: 由于最优化原因,始终尽量使用最少量的while循环。

1)您可以在主VI中使用while循环,而所有SubVI都将在此循环中,并且所有值(指示符)都将更新。

2)您可以尝试在子VI中使用while循环,但是您必须提供将在循环外传输值的机制,例如queueslocal variables

答案 2 :(得分:2)

您也可以为labview指标创建一个参考,但是您需要将其作为全局变量或从调用vi传入引用。

至于你的挫折感,你应该知道你可以在Labview中做任何可以用C做的事。

答案 3 :(得分:1)

A)下图显示了如何执行此操作。 B)这种编程风格适用于小型应用程序,但随着应用程序变得越来越大,我鼓励您探索一种实际的体系结构,用于在一个层次结构中生成数据并在另一个层次结构中使用它(正如此问题的其他答案所暗示的那样)。特别是,做文件>>创建项目并选择生产者/消费者模板,以探索此类体系结构的良好起点。有更复杂的,但这是一个很好的开始。 Diagram transformations from original that updates a front panel terminal in a loop to the final that is a reusable subVI using a reference

相关问题