LabVIEW - 如何保持内部状态并在 X Control 中重用它
LabVIEW - How do I keep internal states and reuse it in X Control
当然,我可以通过使用函数式全局变量 (FGV) 来实现。在代码的最开始,我从 FGV 读取状态(布尔值、nemeric 值等)并将数据连接到 Facade.vi 中的移位寄存器。 while 循环终止后,我将数据写入 FGV,下次可以重用。
但是当我在 VI 中使用 多个 个 X Control 实例而不是单个实例时出现问题。 X Control 的不同实例使用的 不可重入 FGV 共享公共状态。
有没有一种方法可以使内部状态独立于 X Control 的实例?
感谢您的帮助。
您可以使用 State ability and/or Custom Properties 来存储用于控制 X 控件的外观 and/or 行为的任何变量。
在这两种情况下,X 控件的每个实例都将具有不同的状态值。
我遇到了同样的问题,使用 DVRs 解决了。
在代码启动时,您应该启动 DVR 并将引用存储在全局变量中。通过这样做,您可以将 "FGV"s 设置为可重入,但仍能正常运行。
这是我同事的回答。他实际上保持内部状态独立于 XControl 的实例。
他使用 FGV,但一个移位寄存器包含 VI 克隆名称,另一个分别包含 XControl 实例的簇(状态)数组。 FGV 仍然是不可重入的,多个实例使用一个共同的 FGV。当其中一个实例想要读取自己的状态时,它只需将其 VI 克隆名称传递给 FGV,然后 FGV 根据 VI 克隆名称为其提供状态。另一方面,如果其中一个实例完成工作,它会在 while 循环终止后将其 VI 克隆名称和状态传递给 FGV。 FGV 将 VI 克隆名称和相应的状态分别堆叠到移位寄存器中。此方法将使内部状态独立于 XControl 的实例。
只需让 FGV 完全可重入即可。
当然,我可以通过使用函数式全局变量 (FGV) 来实现。在代码的最开始,我从 FGV 读取状态(布尔值、nemeric 值等)并将数据连接到 Facade.vi 中的移位寄存器。 while 循环终止后,我将数据写入 FGV,下次可以重用。
但是当我在 VI 中使用 多个 个 X Control 实例而不是单个实例时出现问题。 X Control 的不同实例使用的 不可重入 FGV 共享公共状态。
有没有一种方法可以使内部状态独立于 X Control 的实例?
感谢您的帮助。
您可以使用 State ability and/or Custom Properties 来存储用于控制 X 控件的外观 and/or 行为的任何变量。
在这两种情况下,X 控件的每个实例都将具有不同的状态值。
我遇到了同样的问题,使用 DVRs 解决了。
在代码启动时,您应该启动 DVR 并将引用存储在全局变量中。通过这样做,您可以将 "FGV"s 设置为可重入,但仍能正常运行。
这是我同事的回答。他实际上保持内部状态独立于 XControl 的实例。
他使用 FGV,但一个移位寄存器包含 VI 克隆名称,另一个分别包含 XControl 实例的簇(状态)数组。 FGV 仍然是不可重入的,多个实例使用一个共同的 FGV。当其中一个实例想要读取自己的状态时,它只需将其 VI 克隆名称传递给 FGV,然后 FGV 根据 VI 克隆名称为其提供状态。另一方面,如果其中一个实例完成工作,它会在 while 循环终止后将其 VI 克隆名称和状态传递给 FGV。 FGV 将 VI 克隆名称和相应的状态分别堆叠到移位寄存器中。此方法将使内部状态独立于 XControl 的实例。
只需让 FGV 完全可重入即可。