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