Android BLE(低功耗蓝牙)相关的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
McVander

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

  •  
  •   McVander Mar 10, 2023 3005 views
    This topic created in 1147 days ago, the information mentioned may be changed or developed.

    Android BLE 相关问题

    前言

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

    场景

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

    问题

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

    然后问题就来了

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

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

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

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

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

    Supplement 1    Mar 11, 2023
    最后,我找到了一种方案,根据 9 楼的冷知识,我了解到手机通过“开发者模式”可以捕捉“蓝牙包”的通信,然后根据日志在 Wireshark 上发现,USB 蓝牙模块返回的数据就是存在问题的。下周到时候再和硬件同事沟通下。谢谢各位

    https://it.cha138.com/Javascript/show-81690.html
    25 replies    2023-03-11 08:20:48 +08:00
    McVander
        1
    McVander  
    OP
       Mar 10, 2023
    [Android] 这边 BLE 的实现是基于 Android_BLE_Library 这个框架,目前来看和框架无关
    https://github.com/NordicSemiconductor/Android-BLE-Library
    zhoucan007
        2
    zhoucan007  
       Mar 10, 2023 via iPhone
    先直接抓包啊,看有没有实际发送出去
    McVander
        3
    McVander  
    OP
       Mar 10, 2023
    @zhoucan007 老哥,我经验比较少,我应该如何捕获蓝牙的交互报文。(目前硬件测提供的一个 C 语言写的可执行程序,我执行之后自动捕获 USB 蓝牙的信息,然后通信)
    McVander
        4
    McVander  
    OP
       Mar 10, 2023
    @zhoucan007 目前开发环境是在 Ubuntu 上
    zhoucan007
        5
    zhoucan007  
       Mar 10, 2023 via iPhone
    用 nordic 的开发板子啊
    McVander
        6
    McVander  
    OP
       Mar 10, 2023
    @zhoucan007 是的、蓝牙模块我看是 nrf52840 模块
    codefu
        7
    codefu  
       Mar 10, 2023
    你这个 usb 的 ble 蓝牙是不是要给个回车才行?
    zhoucan007
        8
    zhoucan007  
       Mar 10, 2023 via iPhone
    @McVander 我的意思是用他们的 52840 DK 然后用 Sniffer 之类的,Wireshark
    402645707
        9
    402645707  
       Mar 10, 2023
    冷知识 Wireshark 可以通过 ADB 抓手机收到的蓝牙报文,安装的时候勾上这个支持或者直接选完整安装
    McVander
        10
    McVander  
    OP
       Mar 10, 2023
    @zhoucan007 谢了,老哥,我去和硬件同事沟通一下
    McVander
        11
    McVander  
    OP
       Mar 10, 2023
    @codefu 实际测试,发现发送数据量较小时,是能够发送一条 接收一条的 ,数据量较大时,就一块回来。
    初步怀疑和 mtu 的设置相关
    bruce0
        12
    bruce0  
       Mar 10, 2023
    winshark 我记得就支持抓蓝牙吧
    McVander
        13
    McVander  
    OP
       Mar 10, 2023
    @402645707 我研究研究看看,我刚刚一直在研究怎么捕获 USB 的蓝牙数据模块,从手机这侧的蓝牙入手也可以
    McVander
        14
    McVander  
    OP
       Mar 10, 2023
    @bruce0 USB 模块,提供读写节点那种,插上好像电脑没有蓝牙功能
    bruce0
        15
    bruce0  
       Mar 10, 2023
    @McVander app 能跑在电脑上吗 在电脑上抓
    string2020
        16
    string2020  
       Mar 10, 2023
    这几条之间 间隔多少 ms
    string2020
        17
    string2020  
       Mar 10, 2023
    这几条之间 间隔多少 ms 。所谓发消息手机和 USB 是怎么实现。
    zhoucan007
        18
    zhoucan007  
       Mar 10, 2023 via iPhone
    @402645707 额,还是得空中包吧,怕硬件不认啊……手机抓的是空中包么?
    sunmker
        19
    sunmker  
       Mar 10, 2023
    McVander
        20
    McVander  
    OP
       Mar 11, 2023
    @bruce0 不行,电脑操作不了,不过我后来找到方案了,感谢
    McVander
        21
    McVander  
    OP
       Mar 11, 2023
    @string2020 USB 蓝牙模块,为了方便测试(每条间隔是固定的 3s ),手机端是根据原生的低功耗蓝牙的 Gatt 实现的。USB 蓝牙模块在 Linux 上提供对应的读写端口来进行通信
    McVander
        22
    McVander  
    OP
       Mar 11, 2023
    @sunmker 感谢,目前就是用这一类调试助手测试得到的结果
    McVander
        23
    McVander  
    OP
       Mar 11, 2023
    最后,我找到了一种方案,根据 9 楼的冷知识,我了解到手机通过“开发者模式”可以捕捉“蓝牙包”的通信,然后根据日志在 Wireshark 上发现,USB 蓝牙模块返回的数据就是存在问题的。下周到时候再和硬件同事沟通下。谢谢各位
    Jabin
        24
    Jabin  
       Mar 11, 2023 via Android
    分包试试,每次不超过 20 字节
    McVander
        25
    McVander  
    OP
       Mar 11, 2023
    @Jabin 我们使用的场景,交互可能比较频繁,并且数据量一般情况都在 200 字节。分包感觉传输效率太低。最后能抓到蓝牙日志,问题似乎明确了一些
    About     Help     Advertise     Blog     API     FAQ     Solana     959 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 57ms UTC 18:47 PVG 02:47 LAX 11:47 JFK 14:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86