我有一个ex1.vi,有2个输入
1).Signal(boolean)
2).Message(String)
有1个输出
Parsed message(String)
现在这个vi有一个while循环,它检测输入的变化,应该给出输出。这个ex1.vi本身位于main.vi中的一个消息循环中,实例化它。此main.vi生成传感器和消息数据并使用Parsed消息。
例如。 main.vi提供Signal = true
和message = "hello"
ex1.vi将提供parsed message = "hi"
。因为ex1.vi在while循环中我将如何给出输出?如果我更新一个局部变量并将其连接到输出main.vi仍然无法使用,因为ex1.vi尚未完成。如何在不使用全局变量的情况下实现这一目标?
答案 0 :(得分:1)
使用队列或用户事件在运行的VI之间共享消息。
我很担心你的ex1.vi设置如何。对于每次调用子VI,您只能有一组输入和一个输出 - 您无法监视输入。如果输入数据是通过队列进入的,那么你就在那里。您只需要一个队列来将消息返回给调用VI。
如您所知,VI的输出与返回功能相同,因此您无法返回并继续运行。
答案 1 :(得分:1)
您可以使用功能全局变量,这可能是更快的解决方案。看这里: Functional Global Variables
消息队列也可以很好地工作,我的选择可能是这两个中的一个取决于应用程序。看这里: Queued Message Handler
哪种更好的解决方案真的取决于应用程序,你应该根据大局来权衡利益。