BLE GATT 上传数据 - Android

Posted

技术标签:

【中文标题】BLE GATT 上传数据 - Android【英文标题】:BLE GATT upload data - Android 【发布时间】:2014-10-01 19:16:22 【问题描述】:

尝试使用三星 Galaxy S4 连接到 BLE 设备(GATT 服务器), 我成功连接到设备并获得了心跳。

现在我需要将 1280 个字节作为 16 个 80 个字节的块发送。接收到这 16​​ 个块后的设备应回复 16 个上传状态,

我得到的只是其中一个块的一种上传状态(不是特定的,随机的)

我尝试通过 (this.wait, Thread.sleep..) 使用许多值更改发送间隔, 没有任何好的结果。

使用 Objective-c (iPhone) 的类似应用程序在设备上运行良好:(

** 我认为这可能与 关于这个问题的任何提示? 或管理传输速率(间隔)的方法**

runOnUiThread(new Runnable() 
        @Override
        public void run() 
            for (int i = 0; i < chunkToUpload; ++i) 
                sendNthModeData(i);
                try    
                    //this.wait(100);
                    Thread.sleep(30,1);
                 catch (InterruptedException e) 
                    e.printStackTrace();
                

            
        
    );

【问题讨论】:

【参考方案1】:

您需要等待onCharacteristicWriteBluetoothGattCallback中被调用,然后才能发送下一位数据,否则其他数据会掉在地上。因此,在您覆盖 onCharacteristicWrite 时,如果您还有更多内容要编写,则为该写入启动一个 Runnable。

【讨论】:

以上是关于BLE GATT 上传数据 - Android的主要内容,如果未能解决你的问题,请参考以下文章

BLE GAP 协议和 GATT 协议

在没有发布 GATT 配置文件的情况下解释来自 BLE 设备的数据

BLE 堆栈 - GATT 与 ATT

GATT特性BLE读取速度慢

BLE GATT 服务器数据格式

BLE开发之GATT