0

我有一个 ex1.vi,它有 2 个输入 1).Signal(boolean) 2).Message(String)

有 1 个输出 Parsed message(String)

现在这个vi有一个while循环,它检测输入的变化并应该给出输出。这个 ex1.vi 本身位于实例化它的 main.vi 中的消息循环中。这个 main.vi 生成 Sensor 和消息数据并使用 Parsed 消息。

例如。main.vi 给出Signal = truemessage = "hello"ex1.vi 给出parsed message = "hi"。由于 ex1.vi 在 while 循环中,我将如何给出输出?如果我更新一个局部变量并将其连接到输出 main.vi 仍然无法使用,因为 ex1.vi 尚未完成。在不使用全局变量的情况下如何实现这一点?

4

2 回答 2

1

使用队列或用户事件在运行的 VI 之间共享消息。

我很困惑你是如何设置 ex1.vi 的。对于子VI的每次调用,您只能有一组输入和一个输出——您不能监控输入。如果输入数据是通过队列进入的,那么您已经完成了一半。您只需要一个队列即可将消息返回给调用 VI。

如您所知,VI 的输出与返回函数相同,因此您无法返回并继续运行。

于 2013-03-14T14:49:40.620 回答
1

您可以使用功能性全局变量,这可能是更快的解决方案。见这里: 功能性全局变量

消息队列也可以很好地工作,我的选择可能是这两个中的一个,具体取决于应用程序。请参阅此处: 排队消息处理程序

哪个更好的解决方案实际上取决于应用程序,您应该根据大局权衡好处。

于 2013-03-15T13:26:50.087 回答