2015-05-22 42 views
5

Bağlandığımda BLE aygıtının başlangıç ​​durumunu okumaya çalışıyorum. İşte bunu yapmaya çalışmam gereken kod:Android BLE readCharacteristic başarısız oluyor

Ancak her seferinde okuma başarısız oluyor! Daha sonra UI etkileşimine dayalı bir okuma başlatırsam, sadece iyi okur! Burada neler olduğu hakkında bir fikrin var mı?

+0

Belki okumadan önce eşleştirmeli/bağlamanız gerekir? –

cevap

12

Android BLE uygulamasında, bir seferde yalnızca bir işlemin (okuma, yazma vb.) Etkin olması için gatt işlem çağrılarının sıraya alınması gerekir. Örneğin, gatt.readCharacteristic(characteristicX) çağrıldıktan sonra, okunmanın bittiğini belirtmek için gatt geri araması BluetoothGattCallback.onCharacteristicRead()'u beklemeniz gerekir. Bir öncekinin tamamlanmasından önce ikinci bir gatt.readCharacteristic() işlemi başlatırsanız, ikincisi başarısız olur (false döndürerek). Bu, tüm gatt.XXX() işlemleri için geçerlidir.

Bu küçük bir çalışma, ancak en iyi çözüm, tüm gatt işlemleri için bir komut kuyruğu oluşturmak ve bunları bir seferde çalıştırmak olduğunu düşünüyorum. Bunu gerçekleştirmek için komut desenini kullanabilirsiniz.

+0

Tek soru: onCharacteristicChanged için komut desenini uygulamak zorunda mıyım? – aeroxr1

+2

Hayır. Bildirilebilir özellikler için komut/yanıt kalıbı yoktur. Bildirimler (onCharacteristicChanged) eşzamansız olarak gelir ve diğer okuma ve yazmalarda komut kuyruğunu etkilememeli veya etkilememelidir. –

+0

Teşekkürler !!! Ve srtcharacteristicnotofy ve yazma tanımlayıcısı için? :) – aeroxr1

İlgili konular