【问题标题】:BLE how to downlaod all data from device?BLE如何从设备下载所有数据?
【发布时间】:2018-02-22 09:04:35
【问题描述】:

我正在构建一个从 BLE 设备下载所有信息的应用。此 BLE 设备有两个特征可供读取。

我应该读取这些特性,直到 BLE 设备有数据存储。所以我创建了一个循环,等到BLE设备有数据,我调用方法readCharacteristic。

所以我创建了一个具有我特征的队列来阅读。这是代码:

if(ReadQueue!= null && ReadQueue.size()>0){
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                int index =0;
                                for(index=0; index < ReadQueue.size(); index++){
                                    mGatt.readCharacteristic(ReadQueue.get(index));
                                }

                            }
                        }).start();
                    }

但是使用这段代码,我只能读取第一个特征,如果我在这行之后调用 sleep,我可以读取所有特征。

 mGatt.readCharacteristic(ReadQueue.get(index));

现在,有没有办法循环下载所有特征???

【问题讨论】:

    标签: android bluetooth-lowenergy


    【解决方案1】:

    按顺序(无延迟)调用 readCharacteristic 将不起作用。

    您必须等待onCharacteristicRead 才能拨打第二个电话。

    当您使用 connectGatt 连接到 BLE 设备时,您必须提供 BluetoothGattCallback。在该 BluetoothGattCallback 对象中实现 onCharacteristicRead,它将在每个 readCharacteristic 实际完成后调用。在该函数中,您应该读取队列中的下一个特征,直到没有。

    【讨论】:

    • 我怎么能等到 onCharacteristicRead 在启动第二个代码之前完成你的代码???
    • @bircastri 编辑以添加更多描述。如果您可以展示如何维护 ReadQueue 对象,也许我可以写一个简短的示例。
    猜你喜欢
    • 2013-11-24
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多