如何根据数据流位置

时间:2017-11-30 00:24:55

标签: labview

考虑这个修改过的简单TCP示例程序: enter image description here

如何显示程序的当前状态,如

  1. 等待连接
  2. 连接
  3. 终止连接
  4. 前面板上的

    ,取决于"数据流的位置"目前是。

1 个答案:

答案 0 :(得分:1)

最简单的方法是在前面板上放置一个字符串指示符,并在您希望的每个位置将消息写入此指标的本地变量查看状态更新。

您需要记住LabVIEW数据流的工作原理:代码将在其所依赖的数据可用时立即执行。有时您可以使用现有结构来强制执行此操作 - 例如,如果您将一个字符串常量放入循环中并将其连接到循环外部的局部变量终端,则写入将仅在循环退出后发生。有时您可能需要人为地强制执行该数据流,例如将操作置于序列框架中并将线连接到序列的边界:然后序列内部的内容只会在数据到达后发生那根电线。 (这是你应该使用序列的唯一内容!)

此方法不保证是确定性的,但通常足以为用户提供简单的状态指示。

上述更好的版本是在您阅读的队列通知程序上发送状态消息,并在单独的循环中更新状态指示器。队列和通知程序写入函数具有错误终端,可以帮助您强制执行序列。通知程序就像本地变量一样,您只能看到最新的更新;队列以正确的顺序保存您写入的所有数据,因此如果要将所有更新记录到滚动列表或日志文件中,则更合适。使用此解决方案,您可以添加更多功能:例如,读取循环可以在每条消息前添加时间戳,以便您可以看到它的最新状态。

这个一般问题的一个非常好的解决方案是使用基于状态机的设计模式。现在您的程序流明确地组织成不同的状态,并且很容易添加诸如从每个州发送不同消息的功能。最新版本的LabVIEW中包含了这些设计模式的优秀示例和项目模板。

您应该能够在LabVIEW帮助或NI网站上找到有关粗体任何术语的更多信息。

相关问题