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