完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-21 16:20 编辑
我在做一个高速采集系统,遇到了如下问题: 串口采集,每帧数据21字节,串口每次读取21字节,然后解析数据并显示保存,在低速时,比如采集频率为100Hz,连续测试几天,没有出现问题。但是在高速时,比如采集频率为2KHz时,开始几分钟正常,但随后发现读取的21字节就不对了,帧头移位,发生了错位(可能是串口传输时,有一帧数据丢失了一个),以后每次读取的21字节数据都发生了移位。求大神给点指导意见。 我的想法是这样的,把串口读取的数据不断装入一个“管子”里,在管子的出口处朝着入口方向开始查找帧头,找到之后把帧头以后的X字节数据(数据长度正常是21字节,但如果发生异常,也可能是20字节或22字节)取出来,管子内剩下的数据统一朝管子出口方向移动X位,如此反复,这样就可以避免某一帧数据丢失一位或增加一位的影响,大不了把这一帧数据扔掉。 但是不知道如何实现这个想法。跪求大神指导。 |
|
相关推荐
4个回答
|
|
串口通讯这个速度相比TCP要低很多,如果单纯是怕数据丢失可以考虑用队列的方式来保存数据,读取一个数据就入队列,然后再出队列时保存数据 不过最好入队列之前先判断数据是否完整,如果不完整就丢掉重新读 至于怎么判断这个就要看你的硬件协议规定的帧头帧尾是如何定义的了
|
|
|
|
串口通讯这个速度相比TCP要低很多,如果单纯是怕数据丢失可以考虑用队列的方式来保存数据,读取一个数据就入队列,然后再出队列时保存数据 不过最好入队列之前先判断数据是否完整,如果不完整就丢掉重新读 至于怎么判断这个就要看你的硬件协议规定的帧头帧尾是如何定义的了
|
|
|
|
串口通讯这个速度相比TCP要低很多,如果单纯是怕数据丢失可以考虑用队列的方式来保存数据,读取一个数据就入队列,然后再出队列时保存数据 不过最好入队列之前先判断数据是否完整,如果不完整就丢掉重新读 至于怎么判断这个就要看你的硬件协议规定的帧头帧尾是如何定义的了
|
|
|
|
采集数据的标准架构:生产者-消费者模式了解一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
542 浏览 1 评论
NI Vision有个图片打不开其他图都能打开(用NI Vision Assistant也打开不了)
1005 浏览 1 评论
labview2015使用Excel报表程序打包生成后打开程序要选一个vi才能使用,否则软件就会报错,这是什么问题?
1580 浏览 2 评论
LabVIEW与单片机无法串口通信 提示串口打开错误 端口设置有问题吗?
1514 浏览 3 评论
1791 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 19:16 , Processed in 0.743851 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号