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-10 16:34:39 +08:00
[Android] 这边 BLE 的实现是基于 Android_BLE_Library 这个框架,目前来看和框架无关
https://github.com/NordicSemiconductor/Android-BLE-Library
zhoucan007
2023-03-10 16:42:48 +08:00
先直接抓包啊,看有没有实际发送出去
McVander
2023-03-10 17:02:55 +08:00
@zhoucan007 老哥,我经验比较少,我应该如何捕获蓝牙的交互报文。(目前硬件测提供的一个 C 语言写的可执行程序,我执行之后自动捕获 USB 蓝牙的信息,然后通信)
McVander
2023-03-10 17:03:41 +08:00
@zhoucan007 目前开发环境是在 Ubuntu 上
zhoucan007
2023-03-10 17:16:04 +08:00
用 nordic 的开发板子啊
McVander
2023-03-10 17:22:05 +08:00
@zhoucan007 是的、蓝牙模块我看是 nrf52840 模块
codefu
2023-03-10 17:23:38 +08:00
你这个 usb 的 ble 蓝牙是不是要给个回车才行?
zhoucan007
2023-03-10 17:24:25 +08:00
@McVander 我的意思是用他们的 52840 DK 然后用 Sniffer 之类的,Wireshark
402645707
2023-03-10 17:28:05 +08:00
冷知识 Wireshark 可以通过 ADB 抓手机收到的蓝牙报文,安装的时候勾上这个支持或者直接选完整安装
McVander
2023-03-10 17:32:41 +08:00
@zhoucan007 谢了,老哥,我去和硬件同事沟通一下
McVander
2023-03-10 17:33:50 +08:00
@codefu 实际测试,发现发送数据量较小时,是能够发送一条 接收一条的 ,数据量较大时,就一块回来。
初步怀疑和 mtu 的设置相关
bruce0
2023-03-10 17:34:16 +08:00
winshark 我记得就支持抓蓝牙吧
McVander
2023-03-10 17:34:43 +08:00
@402645707 我研究研究看看,我刚刚一直在研究怎么捕获 USB 的蓝牙数据模块,从手机这侧的蓝牙入手也可以
McVander
2023-03-10 17:36:28 +08:00
@bruce0 USB 模块,提供读写节点那种,插上好像电脑没有蓝牙功能
bruce0
2023-03-10 18:07:38 +08:00
@McVander app 能跑在电脑上吗 在电脑上抓
string2020
2023-03-10 18:18:08 +08:00
这几条之间 间隔多少 ms
string2020
2023-03-10 18:21:15 +08:00
这几条之间 间隔多少 ms 。所谓发消息手机和 USB 是怎么实现。
zhoucan007
2023-03-10 19:25:39 +08:00
@402645707 额,还是得空中包吧,怕硬件不认啊……手机抓的是空中包么?
sunmker
2023-03-10 19:40:44 +08:00
McVander
2023-03-11 00:05:41 +08:00
@bruce0 不行,电脑操作不了,不过我后来找到方案了,感谢

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

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

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

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

© 2021 V2EX