Android 5.1(Bluetooth 4.0)を搭載したアンドロイドデバイスとBluetooth 4.2を搭載したMCUボードを使用しています。Gatt Characteristicを読み込んだ後はどうなりますか?
私のMCU側では、ループ内のGatt Characteristicを更新しています。私が書き込んでいるデータが一貫しているかどうかを確認するためです。私はgattデータベースの中に書いている前に、私はcrcのチェックを使用しています。
私のアンドロイド側では、私はちょうどそのgattデータベースの特性を読み取って、その直後に私は同じcrcがありますが、値の50%が壊れているようです私の側)。 私は自分のgattデータベースに書いているデータが正しいことを知っているので、問題はスレッドで特性を何度も読み取っていると思います。
私はすでにアンドロイド側の通知で特性を読み込もうとしましたが、bluetoothサービスはOnCharacteristicChangedコールバックにジャンプしません。
私の特性の更新は、この
tmpGatt.readCharacteristic(characteristic);
のように見えると特性が
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");
}
}
}
前のuuidによってフィルタリングされたので、私はgattcharacteristicを再読み込みするために特別な何かをする必要がありますか?
私はBLEのサンプルアプリケーションに戻ってきました。確かに、特性の名前を押してもデータがまだ破損している場合は、onCharacteristicReadがトリガされています。あなたは問題がアプリ側かmcu側にあると思いますか? –
データが破損している場合、MCU /送信側では間違いなく問題です。空中では、ペイロードはすでにBLE規格に従ってCRC保護されています。 – Emil
私のコードを再チェックします。もし問題が見つかったら、ここに投稿してください。ありがとう –