Labview对我之前使用过C / Java感到非常沮丧。
我有一个简单的问题,我不知道如何解决。
我的程序在循环中执行一些操作并更新循环内的指示符。我想把这个循环(以及它需要的输入)放到VI中,但我不知道如何使指标成为VI的输出。
我希望能够重用这个VI,连接一个指示器,让它自动更新,而不会在VI之外创建任何循环。
在C中我可以通过返回指针或通过引用传递给函数来做到这一点。
答案 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循环,但是您必须提供将在循环外传输值的机制,例如queues或local variables
答案 2 :(得分:2)
您也可以为labview指标创建一个参考,但是您需要将其作为全局变量或从调用vi传入引用。
至于你的挫折感,你应该知道你可以在Labview中做任何可以用C做的事。
答案 3 :(得分:1)