【发布时间】:2017-02-12 09:13:09
【问题描述】:
我正在使用具有 Android 5.1(蓝牙 4.0)的 Android 设备和具有蓝牙 4.2 的 MCU 板。
在我的 MCU 方面,我正在循环更新我的 Gatt 特性,以确保我知道我在里面写入的数据是否一致。在我将其写入 gatt 数据库之前,我正在使用 crc 检查。
在我的 android 端,我只有一个线程,它从该 gatt 数据库中读取特征,之后直接我有相同的 crc,但似乎 50% 的值已损坏(这从我的边)。 我知道我在 gatt 数据库中写入的数据是正确的,所以我想问题在于在一个线程中多次读取特征。
我已经尝试通过我的 android 端的通知读取特征,但蓝牙服务永远不会跳入 OnCharacteristicChanged 回调。
我的特征更新是这样的
tmpGatt.readCharacteristic(characteristic);
并且特征被之前的uuid过滤
for(int i = 0; i<Services.size(); i++){
Characteristics = Services.get(i).getCharacteristics();
for(int c=0;c < Characteristics.size();c++){
UUID myUUID = Characteristics.get(c).getUuid();
if(myUUID.toString().equals("354a1b8e-7597-11e6-8b77-86f30ca893d3")){
characteristic = Characteristics.get(c);
//refExternalData.getRefBluetoothGatt().readCharacteristic(characteristic);
descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
Log.i("BLE", "Characteristic " + myUUID.toString() + " found");
}
}
}
所以我需要做一些特别的事情来重新阅读 gattcharacteristic 吗?
【问题讨论】:
标签: android bluetooth-lowenergy gatt