大家好!在我的程序中会不断用call by reference node调用一个子VI来更新结果,此时我需要在这个子VI中调用另外一个子VI显示某些计算数据,最初我直接用子VI的形式来调用,可是这个子VI的前面板会不停的闪烁,请问一下如果解决这个问题呢?(在子VI运行的时候不能影响主VI的工作)谢谢!
这个子VI是需要显示它的前板么?如果不需要的话,可以在它的windows appearance (CTRL+I)中把 "Show front panel when called" 和 "shwo front panel when loaded" 勾掉。
如果你需要这个子 VI 显示它的前板的话,那它是会闪烁的,因为你调用它时,它的前板打开了,但很快用过之后前板就会关掉,然后你马上又调用它,这样它就处在一个不停的开关的状态下。一个办法是让这个子程序一直运行,然后用全局变量或其它方法来控制它。或者把它的计算结果输出到住 VI 里,由主 VI 显示,这样它本身就没有必要显示了。
"...个办法是让这个子程序一直运行,然后用全局变量或其它方法来控制它...", 在调用这个子VI的时侯 (要用call by reference),先检查它是否已在运行,如果已经运行,就不必要再调用了,可以用全局变量来控制。当然如果主程序退出的时候,要告诉这个调用的子VI也要退出。
有几种方法了,例如使用全局变量,或使用以下两个:
这个属性 给出所有已经调用的 VI 名字,你可以检查一下子 VI 的名字。
这个 VI 属性 给出当前 VI 的状态,你可以检查它是否已经在运行。