搜索
bottom↓
回复: 7

NRF51822如何确保在大量数据传输时不丢包

[复制链接]

出0入0汤圆

发表于 2017-2-22 10:20:02 | 显示全部楼层 |阅读模式
安卓手机端打开一个文件,然后每20个字节组成一包,通过蓝牙发送给nrf51822,再通过与之连接的单片机写入sd卡。

实验发现,数据包发送间隔为20ms时,会丢几十个包,间隔为30ms时会丢十个包左右,间隔40ms时基本可以不丢包,但是也不是完全可靠。

虽然可以通过延长发送间隔减少丢包,但是整个文件得发送时间就太长了。

如果采用每一包都应答的方式,单片机端的应答包也存在丢包的可能,导致手机端不知道是否发送成功。

请问做过这方面的大神有没有比较好的思路。

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2017-2-22 11:18:44 | 显示全部楼层
你可以参考OTA 过程,也是发送OTA文件

出5入0汤圆

发表于 2017-2-22 11:24:35 | 显示全部楼层
看波形,应该是重叠了,也就是数据尚未发出去,你又调用,然后覆盖了,,

出0入0汤圆

发表于 2017-2-22 11:41:09 | 显示全部楼层
分组发送。每个几十包需要确认没丢包再进行下一组。
丢包的原因很多android本身,空气中,接收端等等,所以加可靠性的确认和重传是比较好的办法。
否则无法保证完全不丢包。

出0入0汤圆

发表于 2017-2-22 12:08:51 | 显示全部楼层
传输速度有多少?手机端发给底层使用response 基本不会丢的,在仔细找找安卓端或者底层的代码逻辑  为了确保传输稳定的话可以制定传输协议 分包发送加上ACK和重传 可以确保不会出问题

出0入0汤圆

 楼主| 发表于 2017-2-22 12:31:09 | 显示全部楼层
xckhmf 发表于 2017-2-22 12:08
传输速度有多少?手机端发给底层使用response 基本不会丢的,在仔细找找安卓端或者底层的代码逻辑  为了确 ...

波特率115200,现在尝试把每个包编号,然后下位机应答,丢包重发

出0入0汤圆

发表于 2017-2-22 15:08:53 | 显示全部楼层
丢包应该是安卓本身,两片CC2640通讯,interval 7.5ms, 1.38MB的文件90s发完,基本不丢包

出0入0汤圆

发表于 2017-2-22 15:12:04 | 显示全部楼层
一次发四个包,蓝牙协议一般不会丢包,你40ms 主要看你的蓝牙 配置参数是什么
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 05:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表