打印

求助:程序问题

[复制链接]
1437|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zwxhehe2012|  楼主 | 2013-5-22 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序问题:请教一下,现在传感器每隔1ms就采样一次数据,一次采样得到4个数据,但是我发送数据一次需要80ms,为了保证数据可靠,我需要连续发4次,原来程序是等4次发送数据完成后,传感器才会重新采集数据然后发送第二次数据,这样等于320ms采样一次数据发送一个数据,这样造成,我的接收端接收的数据不连续,我想就是把采集的数据放进队列了,然后定时50ms采样一次数据,然后发送从队列里取数据,以前没用过队列,现在需要每50ms采集的数据放进队列尾部,增加一个数据,然后发送数据从队列头部取走一个数据,队列去掉一个数据,而且在队列数据满了以后,将最早的数据更新为现在最新采集的数据,还有什么时候队列的数据已经全部发送完成,有没有范例程序?或者有什么好的编程写法?麻烦指导一下,非常感谢!

相关帖子

沙发
南宫云明| | 2013-5-22 11:37 | 只看该作者
思路,做个参考:
定义: 队列容量-->A(常量)
       实际队列中有效个数-->B
       队列头-->C
       队列尾-->D

刚开始,B=0,C=0,D=0;

如果有数据扔进队列,B++,C++;
定时扫描队列,如果C!=D,说明有数据,则处理队列中数组下标为D的成员,处理完成后,D++,B--。

这样就可以进行队列处理了。。。。以上只是一种方法,不是很全面,实际编程中还要加一些队列如果满了的处理方法等

使用特权

评论回复
板凳
hgjinwei| | 2013-5-22 16:12 | 只看该作者
是80ms发送一次数据,数据量可能大于一次采集的4个数据,还是80ms发送一次采集的4个数据?

使用特权

评论回复
地板
dirtwillfly| | 2013-5-22 20:41 | 只看该作者
为啥要发四遍数据?怕出错可以加上校验啊

使用特权

评论回复
5
zwxhehe2012|  楼主 | 2013-5-23 09:52 | 只看该作者
hgjinwei 发表于 2013-5-22 16:12
是80ms发送一次数据,数据量可能大于一次采集的4个数据,还是80ms发送一次采集的4个数据? ...

是80ms发送一次采集的4个数据,然后连着发4次,因为是无线传输,怕第一次发送的数据受到干扰,造成接收错误,所以连续发送4次,接收端连续收到两次相同的数据才会执行控制,所以连续发送4次

使用特权

评论回复
6
hgjinwei| | 2013-5-24 09:04 | 只看该作者
传感器1ms采集一次数据,你80ms才发送一次采集的数据?到要发送时,传感器都采集了80次数据,那不是要丢失掉79次数据?

我觉得可以这样处理:
你可以在数据采集端设一个FIFO缓存,并作为通信从端。接收到主机端指令时,才将采集到的数据发出去(当然,数据通信过程要有协议,校验等措施)。
如果N久主机都没来读数据,而导致FIFO满时,就丢弃早先采集到的数据。
FIFO深度及采集频率要考虑通信速率及主机读取频率。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

48

帖子

1

粉丝