生产者消费者队列模式下,while循环里封装一个子vi,怎么让采集的数据和子VI同步?
采集到的数据有重复,怎么解决这个问题,求高人指点一下,十分感谢~~同一个队列每次循环,两次数据入队列?
用两个同样名字的队列,你想干what。
你如果想分别获取两个封装的子vi的数据需要用两个不同名称的队列。
想要实现的是,两个子VI同时运行,元素一起入队列。前面版来进行选择具体让他们显示的内容,(子VI封装的内容多)
队列中的元素会重复调用么?我设计的是出队列后就销毁元素。
现在的问题是:采集到的数据和我封装的子VI 显示的数据不一致。采集到的数据多,有重复的数据,与while循环有关么?while循环没有设置时间,会不会重复采集数据,比如同一个数据,在while循环中两次入队列。有没有方法可以解决一下这个问题,希望你可以帮我一下~谢谢你啦

因为你两个队列名是相同的,所以数据两次入同一队列。消费者循环里元素出队是一个个的出来,出来了肯定就从队列里删除了。while循环应该也没关系,读取完之后,默认会清空的吧,但是应该还是设置个时间吧,不然太耗CPU。问题好像是你设置的相同的队列的问题,为什么相同呢,究竟是不是就是一个队列?
我设置的不是同一个队列,是两个队列,只不过想让他们同时运行,因为想让我的界面同时显示子vi的两个内容,如图。队列不可以这样设置么?我把队列的名称:两个“数据”改成“数据1","数据2”之后,还是不能解决问题,怎么就能让我的这个LABVIEW显示的数据和子VI 同步了?加延时不知道加多长时间的才能和子VI的出数据的时间一致(我的这个子VI是一个机器自带的程序,机器简单点说,就是用来采集数据的,所以不想丢数)
我把两个子VI去掉一个,变成一个队列以后,同一时间采集的数据,是两个的时候的二倍,这又是怎么回事呀?请指点一下我吧,谢谢你~~

大概明白你的应用了。按理说,好像你的问题比较怪,我也不是高手,建议你单使用一个子VI,用调试工具看看,数据的输入输出过程。
两个子VI去掉一个,数据变多的问题,貌似是因为两个子VI是顺序执行过程,子VI一直采数。两个子VI时,一次进行了两次采数,而一个子VI时,一次循环只进行了一次采数,循环变快,所以入队列数据增多。弄不清楚。
需要一个延时环节
你说的延时环节,是直接加一个延时么?还是设计一个延时的小程序呢?能说的具体一些么?
(如果直接加一个延时,我不确定加多少毫秒可以和子程序产生数据的时间保持一致)
