labview只有一个vi是不是比多个子vi需要很少的资源
labview吧
全部回复
仅看楼主
level 3
卷毛酱😘
楼主
之前做一个项目,不同场景下用不同的通讯。本来想的事把通讯做成子vi调用,然后主vi切换就好了,结果调用的时候各种卡顿闪退。
大佬们有什么好的办法吗。
还是说这种情况就只能每个通讯单独写。
2022年06月17日 08点06分
1
level 3
卷毛酱😘
楼主
更少的资源
2022年06月17日 08点06分
2
level 5
HaiBaoo海宝
注意同一个子VI被不同程序调用的问题,比如,如果子VI会保持输出数据的话,输入变化可以及时把输出刷新掉是没问题的,如果输入不一定100%改变输出值,或者有判断是否执行计算的话,在输入是否的情况下,有可能把上一次调用的之后保持在子VI中的老数据直接传给后面而导致出错……
这种VI要复制一份单独流程调用
2022年06月28日 14点06分
5
卷毛酱😘
如果是有移位寄存器的子vi,多次调用的话,是不是要复制成多个vi文件
2022年08月27日 07点08分
level 5
HaiBaoo海宝
主程序写的太大容易出现实时编译卡顿的问题,比如拖动一个控件都会卡很久,导致无法继续写,所以必要的情况下还是得用子程序写。
2022年06月28日 14点06分
6
level 5
HaiBaoo海宝
超字数了,单独写一楼吧,通过移位寄存器保持数据的话,比如里面有个IF,输入不符合刷新要求的时候,输出是始终保持的话,多个循环都调用这个函数的话,很有可能第一个调用完,数据存在里面了,第二个函数调用的时候,如果输入不符合刷新要求就直接输出上次调用保持的老数据,这种情况应该要复制一份子VI,单独调用
2022年08月27日 08点08分
7
level 5
HaiBaoo海宝
7楼这个情况,某个步骤用一个这种子VI,另一个步骤还要用这个子VI的话,要复制一份,不能用同一个,似乎子VI和C语言子程序调用有区别,它不是把这段代码重新执行一遍,执行以后会保持执行后的状态,再次调用会就这当前状态继续用
2022年08月27日 08点08分
8
卷毛酱😘
OK懂了,多谢啦
2022年08月28日 10点08分
HaiBaoo海宝
@卷毛酱😘
不用谢,都是泪呀……目前我没发现除了复制有什么别的好方法解决这个问题,曾经尝试过同步和异步调用,但是似乎和这个问题没关系
2022年08月28日 11点08分
傅里叶与牛顿
所以,注意清空输出就好了,不用复制多份
2022年09月01日 08点09分
HaiBaoo海宝
@傅里叶与牛顿
是这样,及时清空,或者输出随输入及时改变的都不会有问题,但是用于保持数据的子VI如何清空输出?
就是输入不符合要求,输出保持上一次结果的这种VI,不是很好清空输出
2022年09月01日 09点09分
1