Android BLE(低功耗蓝牙)相关的问题

2023-03-10 16:32:46 +08:00
 McVander

Android BLE 相关问题

前言

最近工作中接到 BLE 相关的需求,遇到一个数据传输的问题,需要各位大佬相助。

场景

1.通过 Android APP 与 USB 内置的 BLE 蓝牙模块,进行通信数据交互,基于 BLE(低功耗) 2.由于蓝牙交互一定涉及到服务端、客户端,所以在调试之前,我本地已经通过两个手机能够完全模拟数据传输,已经调通

问题

当正式联调时,约定先尝试模拟通信( APP 端发一条消息、USB 蓝牙回一条消息)

然后问题就来了

在 Android 端连接时,请求 mtu 为 247 ,也收到成功指令

然后发消息时,目前与 USB 约定是定长式交互,每次固定 128 长度,我发现我发一条,USB 回复的那条一直无法收到

而当发送 3 4 条时,USB 蓝牙才将之前的数据一起返回。

因为之前 BLE 的经验比较少,到这里有点判断不出来,到底是哪方面的问题,我尝试打印 onCharacteristicChanged 也发现确实没收到消息

各位大佬有遇到过相关的情况吗?

2069 次点击
所在节点    程序员
25 条回复
McVander
2023-03-11 00:07:28 +08:00
@string2020 USB 蓝牙模块,为了方便测试(每条间隔是固定的 3s ),手机端是根据原生的低功耗蓝牙的 Gatt 实现的。USB 蓝牙模块在 Linux 上提供对应的读写端口来进行通信
McVander
2023-03-11 00:08:04 +08:00
@sunmker 感谢,目前就是用这一类调试助手测试得到的结果
McVander
2023-03-11 00:10:57 +08:00
最后,我找到了一种方案,根据 9 楼的冷知识,我了解到手机通过“开发者模式”可以捕捉“蓝牙包”的通信,然后根据日志在 Wireshark 上发现,USB 蓝牙模块返回的数据就是存在问题的。下周到时候再和硬件同事沟通下。谢谢各位
Jabin
2023-03-11 07:02:31 +08:00
分包试试,每次不超过 20 字节
McVander
2023-03-11 08:20:48 +08:00
@Jabin 我们使用的场景,交互可能比较频繁,并且数据量一般情况都在 200 字节。分包感觉传输效率太低。最后能抓到蓝牙日志,问题似乎明确了一些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/922930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX