labviEW一个生产者,多个消费者问题

2019-07-17 15:34发布

大家好,我的程序的出发点是希望实现一个生产者,十六个消费者模块的形式。
即生产者循环中的事件结构有十六个处理分支,对应每一个分支,它产生一个“开始”元素入队列,相应的消费者模块中元素出队列,开始数据采集,而且数据采集部分是比较耗时间的,数据采集部分有相应的跳出循环机制。
问题是我现在一共有16个消费者模块,我需要用16个循环!这样太不合理了,有没有什么更好的实现方式,请大伙给点建议。谢谢大家!
demo.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
黑木耳
2019-07-18 08:31
很有想法的!
我觉得可以这样子,把16数据采集做成相互独立的16个VI,在主VI里通过动态调用把16个DAQ VI运行起来。 主VI里只要用标准的生产者消费者即可。 在主VI用户界面操作开始每一个DAQ时往相应的DAQ VI发开始采集的消息。  每个DAQ VI也可以用生产者消费者形式。 
其实上面这种方法也相当于放16个消费者循环了,不过程序结构看上去会好些。 主VI如下图所示. 只是示意图.  主VI只负责往DAQ VI发消息,他不做实际的数据采集, 因此永远是马上返回的.
temp1.jpg

temp3.jpg
DAQ VI如下, 每个都类似. 用Queue的名字来区分, 比如DAQ One, DAQ Two,。。。 主VI则是通过这个名字来访问这些不同VI的QUeue, 并给他们发DAQ  Start 的消息。  DAQVI收到 DAQ Start之后则可以做数据采集的事情,所有DAQ VI之间互不影响。
temp2.jpg

一周热门 更多>