Android向蓝牙设备发送文件数据,需要花费的时间问题

山枝子 应用层 2021-02-19 05:10:01
Android App向蓝牙设备发送文件数据,因为我们的蓝牙设备一次接收最大200字节,所以我把文件数据是分成200字节一个包,分包发送。
但是如果连续发送数据,会发生写入数据失败的情况。
网上说两次发送之间需要间隔一点时间。所以我现在隔500毫秒发送一个包,但发现太慢了。
试了把间隔时间减到100毫秒,也会出现写入数据失败的错误。
改到了200毫秒,倒不会出现这种情况了。
不过感觉还是很慢。计算了一下,如果发送一个5M的文件,那大约需要花费87分钟。
因为是首次做向蓝牙设备发送文件数据,所以不清楚这是不是正常的啊。请大佬们帮忙解答一下我的疑惑
...全文
672 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
引用 10 楼 不会写代码的猴子 的回复:
这就应该是设备问题了,接收量太小了吧
哦哦,好的,那我跟硬件沟通一下,感谢
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
引用 5 楼 不会写代码的猴子 的回复:
哈哈哈,你要逗死我了,每次接收200字节肯定有问题啊
啊啥意思,没懂 我没有每次接收200字节啊。硬件工程师告诉我蓝牙设备一次发送的数据不超过247个字节,所以他们规定每200个字节发送一个包,直到把所有数据发送完毕。但是Android系统好像有限制,最多只能发送20个字节吧。然后我设置过mtu也没用,我使用的库本身会把数据直接分成20个字节发送出去
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
引用 9 楼 qq_1113502097 的回复:
是有关系的,蓝牙协议不仅仅要看你发的多少,还要看对方吃多少。串口通信就是这样,双方协议要一致。
哦哦,好的明白了,谢谢。 我之前和硬件工程师沟通过,他说Android有这个20字节的限制,就让我分包按20个字节发送好了 我再跟他沟通看看
不会写代码的猴子 版主 2021-02-19
  • 打赏
  • 举报
回复
引用 7 楼[color=#000000
山枝子 的回复:]是这样的,之前有发送几个指令的,最后一步进入到发送文件数据,就直接发送文件数据了
这就应该是设备问题了,接收量太小了吧
qq_1113502097 2021-02-19
  • 打赏
  • 举报
回复
是有关系的,蓝牙协议不仅仅要看你发的多少,还要看对方吃多少。串口通信就是这样,双方协议要一致。
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
引用 4 楼 qq_1113502097 的回复:
参考https://blog.csdn.net/sinat_19628093/article/details/51890827?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control。 而且蓝牙传输也有速率问题,大概160kb/s的上限。
我使用的库是:com.clj.fastble:FastBleLib:2.3.4,之前也试过修改mtu,修改了mtu为203,想着一次就能发送200个字节,但结果还是一次发送20个字节,不知道是哪里没做对,还是说和蓝牙设备也有关系的呀?
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
引用 2 楼 不会写代码的猴子 的回复:
200个字节,头部这么长可以理解,数据包还200个字节....
是这样的,之前有发送几个指令的,最后一步进入到发送文件数据,就直接发送文件数据了
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
引用 1 楼 不会写代码的猴子 的回复:
你这是上一个包发送并接收成功才发下一个包吗?
啊,没有哎,我直接间隔300毫秒就发送下一个包,是不是应该等上一个包发送成功才发送下一个包啊?
不会写代码的猴子 版主 2021-02-19
  • 打赏
  • 举报
回复
引用 3 楼 山枝子 的回复:
刚发现200毫秒也会出错 现在改成了300毫秒,发送了3.45M的文件在测试。。。 那如果300毫秒可以的话,发送5M的文件就大概需要131分钟了
哈哈哈,你要逗死我了,每次接收200字节肯定有问题啊
qq_1113502097 2021-02-19
  • 打赏
  • 举报
回复
参考https://blog.csdn.net/sinat_19628093/article/details/51890827?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control。 而且蓝牙传输也有速率问题,大概160kb/s的上限。
山枝子 应用层 2021-02-19
  • 打赏
  • 举报
回复
刚发现200毫秒也会出错 现在改成了300毫秒,发送了3.45M的文件在测试。。。 那如果300毫秒可以的话,发送5M的文件就大概需要131分钟了
不会写代码的猴子 版主 2021-02-19
  • 打赏
  • 举报
回复
200个字节,头部这么长可以理解,数据包还200个字节....
不会写代码的猴子 版主 2021-02-19
  • 打赏
  • 举报
回复
你这是上一个包发送并接收成功才发下一个包吗?

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧