NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

关于生产者消费者循环

请教各位!

我现在有个数据采集的应用。要求按一下开始按钮后,开始连续采集数据,按下停止按钮或5秒钟后,自动停止。

我考虑使用生产者消费者循环。在按下开始按钮后,元素开始入队列。在消费者循环中,数据不断添加到一个数组中,然后处理。

现在有这么几个问题。因为消费者循环还附带处理界面,所以消费者循环不能停,而生产者循环也不能停。而这样处理,会产生队列错误,是何原因?

另一个我消费者循环中数据保存是采用移位寄存器的数组,如何在下一次测试开始前,清除这个数组?

0 项奖励
1 条消息(共 3 条)
3,393 次查看

另外我需要在开始测试前发送一次测试指令,并读取测试开始时间。 如何处理是这个发送指令在while循环中只被执行一次。谢谢

0 项奖励
2 条消息(共 3 条)
3,392 次查看

我觉得可以在生产者循环中放一个条件结构,条件结构的输入就是那个开始按钮,当按下开始按钮,进入条件结构的ture状态中,就把数据写入队列,而在条件结构的false状态中则不采集数据。这样的话,就可以不用停止生产者循环了。至于要清除移位寄存器数据很简单,在循环的输入处加一个空数组常量把移位寄存器初始化即可。
测试开始之前不发送测试指令,也可以读取时间啊,当开始按钮的值为true时直接用获取日期时间VI读取一次系统时间就可以了。

0 项奖励
3 条消息(共 3 条)
3,344 次查看