使用labview队列传递数据时造成数据丢失? 30

抱歉还是我,调整数据流速率的问题依然没有得到解决,所以新开一个,希望您不要介意。经过多次尝试,轮询周期在15ms时比较合适。在LabVIEW自带的队列范例(见队列基础.v... 抱歉还是我,调整数据流速率的问题依然没有得到解决,所以新开一个,希望您不要介意。经过多次尝试,轮询周期在15ms时比较合适。在LabVIEW自带的队列范例(见队列基础.vi)中,分别调整进队列和出队列的循环等待时间,将产生的随机数依据先入先出的原则进行处理,可实现"快存慢取"的功能。而现在我是在此基础上通过dll接收VC的连续数据流,经队列调整后送还给vc处理。现在有两个问题:
1.对接收的每50ms1kb的图像数据(大小为226kb),将进队和出队循环时间设为相同且都在20ms以下时,可实现完整接收,而设为不同(如下图所示进队15ms,出队16ms)或者虽相同但大于20ms时都会丢失数据。而我发现采用队列传递数据时,就算没有实际的数据进入队列,只要出队列循环时间大于进队列循环时间,也即出队比入队慢的话,队列里面的数值仍然会涨(可将队列基础.vi的随机数设为空字符尝试)。我觉得这种空的数据对正常的图像数据造成了干扰,造成丢包。您如何认为呢?
2.是否可找到其他替代队列的方法,即构造一个较大的fifo,调整循环写入和循环读出的速度,以实现数据流降速和解决数据丢失的问题
盼望您的回复!
展开
 我来答
feilixisi1
2012-01-10 · TA获得超过581个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:199万
展开全部
所有的问题主要在于 基本概念理解/基础,以及时间(轮询周期)的应用。

队列或者(生产者消费者结构)等等,都是基于基础而来,换言之,如果你的程序在不加任何架构的情况下可以跑通,那么才是完全理解原理。 直接进入到现成架子中,很多东西会混淆。

当入队和出队循环时间均为15ms时数据可无差错传输 -- 表示已经能正常工作
那么如何 实现你说的逻辑? 写数据 -- 10ms, 读数据--20ms, 将写的数据保存到一个地方
然后,以2倍的时间读取这些数据。
查基础 --- 移位寄存器使用。
来自:求助得到的回答
泡沫蓝泗
2013-03-28 · 超过16用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:32.1万
展开全部
我觉得你应该在上面销毁队列前添加一个对当前队列状态的查询,当队列中剩余对象为零时再销毁队列,否则你一旦点击stop,队列就销毁了,消费者循环进入有错误状态,也停止了,队列中的东西也就都没了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式