代码之家  ›  专栏  ›  技术社区  ›  Koushik Shetty

更新while循环内的输出

  •  0
  • Koushik Shetty  · 技术社区  · 11 年前

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

    有1个输出 Parsed message(String)

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

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

    2 回复  |  直到 11 年前
        1
  •  1
  •   crlanglois    11 年前

    您可以使用函数全局变量,这可能是更快的解决方案。请参见此处: Functional Global Variables

    消息队列也可以很好地工作,根据应用程序的不同,我的选择可能是这两种队列之一。请参见此处: Queued Message Handler

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

        2
  •  1
  •   Simon    11 年前

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

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

    正如您已经知道的,VI的输出与返回函数相同,因此您不能返回并继续运行。