如何根据数据流位置显示状态
How to display a status depending on the data flow position
例如考虑这个修改后的简单 TCP 示例程序:
如何像
一样显示程序的当前状态
- 等待连接
- 已连接
- 连接终止
在前面板上,取决于 "data flow" 当前所在的位置。
最简单的方法是在前面板上放置一个 字符串指示器 并将消息写入此的 局部变量 您希望看到状态更新的每个点的指示器。
您需要牢记 LabVIEW 数据流的工作原理:代码将在其依赖的数据可用时立即执行。有时您可以使用现有结构来强制执行此操作 - 例如,如果您将一个字符串常量放入循环内并将其连接到循环外的局部变量终端,则写入只会在循环退出后发生。有时您可能需要人为地强制执行该数据流,例如将您的操作放在 序列框架 中并将电线连接到序列的边界:那么序列中的内容只会在之后发生数据到达那条电线。 (这是您唯一应该使用序列的事情!)
不保证此方法是确定性的,但通常足以向用户提供简单的状态指示。
上述的更好版本是在您阅读的 queue 或 notifier 上发送状态消息,并更新状态指示器,在一个单独的循环中。队列和通知程序写入函数具有错误终端,可以帮助您强制执行顺序。通知程序就像局部变量一样,您只会看到最近的更新;队列以正确的顺序保存您写入的所有数据,因此如果您想将所有更新记录到滚动列表或日志文件中,它会更合适。使用此解决方案,您可以添加更多功能:例如,读取循环可以在每条消息前添加一个时间戳,这样您就可以看到它是最近的。
解决这个普遍问题的一个很好的方法是使用基于状态机的设计模式。现在你的程序流被清楚地组织成不同的状态,并且很容易添加功能,比如从每个状态发送不同的消息。最新版本的 LabVIEW 中包含这些设计模式的良好示例和项目模板。
您应该能够在 LabVIEW 帮助或 NI 网站上找到关于任何粗体术语的更多信息。
例如考虑这个修改后的简单 TCP 示例程序:
如何像
一样显示程序的当前状态- 等待连接
- 已连接
- 连接终止
在前面板上,取决于 "data flow" 当前所在的位置。
最简单的方法是在前面板上放置一个 字符串指示器 并将消息写入此的 局部变量 您希望看到状态更新的每个点的指示器。
您需要牢记 LabVIEW 数据流的工作原理:代码将在其依赖的数据可用时立即执行。有时您可以使用现有结构来强制执行此操作 - 例如,如果您将一个字符串常量放入循环内并将其连接到循环外的局部变量终端,则写入只会在循环退出后发生。有时您可能需要人为地强制执行该数据流,例如将您的操作放在 序列框架 中并将电线连接到序列的边界:那么序列中的内容只会在之后发生数据到达那条电线。 (这是您唯一应该使用序列的事情!)
不保证此方法是确定性的,但通常足以向用户提供简单的状态指示。
上述的更好版本是在您阅读的 queue 或 notifier 上发送状态消息,并更新状态指示器,在一个单独的循环中。队列和通知程序写入函数具有错误终端,可以帮助您强制执行顺序。通知程序就像局部变量一样,您只会看到最近的更新;队列以正确的顺序保存您写入的所有数据,因此如果您想将所有更新记录到滚动列表或日志文件中,它会更合适。使用此解决方案,您可以添加更多功能:例如,读取循环可以在每条消息前添加一个时间戳,这样您就可以看到它是最近的。
解决这个普遍问题的一个很好的方法是使用基于状态机的设计模式。现在你的程序流被清楚地组织成不同的状态,并且很容易添加功能,比如从每个状态发送不同的消息。最新版本的 LabVIEW 中包含这些设计模式的良好示例和项目模板。
您应该能够在 LabVIEW 帮助或 NI 网站上找到关于任何粗体术语的更多信息。