labview中使用队列完成子VI向主VI循环发送数据

时间:2024-03-13 11:54:09

labview中使用队列完成子VI向主VI循环发送数据

菜鸡笔记(2)

背景介绍:
labview中使用子VI读取下位机数据,并在子VI中使用while循环读取(当然更加常用的方法是在主VI中循环调用子VI)

出现的问题
因为labview是数据流驱动的,子vi不运行完,它是不会输出到主VI的。如果你在子VI中使用了循环,就会出现,主VI虽然在运行,但始终没有数据输出。

解决办法

1)之前说到的,将循环拿出子vi,把子VI放在主VI循环中,每次循环都调用一次子VI,给出出一次数据给主VI。
2) 全局变量,主VI在主循环中通过全局变量获取子VI的数据,这个可能要用到并行循环,全局变量破坏可读性,不适合大数据。3)使用引用、通知、队列等。

这里介绍使用labview中的队列。
labview中使用队列完成子VI向主VI循环发送数据
下图是一个通过队列将元素输入至队列的测试例子。
labview中使用队列完成子VI向主VI循环发送数据

下图是一个从队列读取之前输入的元素测试例子,通过毫秒倍数控件保证队列输出和输入速度一致,保证实时性。

labview中使用队列完成子VI向主VI循环发送数据