微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > 虚拟仪器 > 子VI数据实时显示问题

子VI数据实时显示问题

时间:12-13 整理:3721RD 点击:
我想在主VI里面实时显示子VI循环中的一些数据
用了好几种方法,最后主VI只显示子VI循环处理结束后的数据
而我想显示循环处理过程中的数据变化
咋整?

把主vi的显示控件的reference传给子vi
放到子vi的循环内

全局变量啦啦啦

刚学这个,详细点?
在主VI里面建立了显示控件的reference
怎么传给子VI呢?
我是在面板里拖过去的
好像不行的说

你会给子vi传参数不?不会找本书看看……
reference也是一种参数而已

按书上做的
结果只显示执行前的当前值
不随循环动态更新
用Global也是一样

怀疑你把reference放循环外面了……
把框图截个图贴上来看看

百度了一下
好像说是LV执行程序时
一般都是先执行完子VI的循环再把结果返回给主VI的
我想子VI循环过程中的数,而不单单是最后结果
用Control Reference好像也只显示循环结束的值

囧,你得让主程序的循环和子程序一起运行阿,别用线给串起来了

循环是在子程序里的
这么说吧,实例一下
子VI是一个1 to N的循环,延时一秒
也就是每秒钟显示0,1,2,3,4,5,.....N
子VI单独执行实现这个效果是没问题的
现在用一个主VI调用这个子VI,要在主VI里面也实现每秒显示0,1,2,3,4,..N
用全局变量的话主VI只显示循环的最后结果N
好像用Control References也是这个结果

我知道……我说的循环是指主程序里的循环……

那我说的这种有办法实现么?

好像用数值改变的事件来处理也不行

改子vi的调用方式,子vi打开后立刻返回,不要让主vi等待

调用方式怎么改?
我是直接在框图里加的子VI
还有就是不是很明白
子VI打开后立刻返回是啥意思?
子VI是个循环,返回的结果应该是持续的
按照上面的例子来说就是一秒钟返回一个结果才是我想要的结果

百度了一个
############################################
为什么子VI节点的输出端口没有数据传递出来?
回答:这类问题的主要原因是子VI中存在着循环。如果子VI中的循环不退出,子VI节点
就一直在运行。对于LabVIEW的数据流编程机制来讲,一个节点没有执行完,它的所有输
出端口就不会有有效数据输出。解决方法:一是把子VI中的循环提出到主VI里来。二是
使用全局变量,并在主VI中使用并行循环来控制子VI的结束。
############################################
“二是使用全局变量,并在主VI中使用并行循环来控制子VI的结束。”
这里面的并行循环控制不懂

不改调用方式也行
见附件
8.0版本写的

 main.vi

 sub.vi

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top