Android ble, lectura y escritura características.
-
20-12-2019 - |
Pregunta
Actualmente estoy desarrollando Android ble, y encuentra muchos problemas con las pilas ble de Android.
Mi herramienta de desarrollo es Samsung Galaxy J con Android 4.3.
Quiero saber cómo puedo leer las características de la BLE y la escritura de las características (es como verifico qué datos he recibido, y luego envío otros datos usando BLE)
y tengo un problema serio que entiende cómo funciona las devoluciones de llamada de Android, No entiendo estas 5 funciones ... y el manual no está claro, ¿puede alguien un buen alma explicar en forma simple?
onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
Mi situación actual es, logré leer los datos en devolución de llamada OnCarractersChanged () y luego verifiqué los datos recibidos para enviar los datos usando
characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
Pero, la pila Ble Android no está llamando a OnCharacteristicsWrite () y, de hecho, Android simplemente cuelga allí ...
Intento a Google sobre Android SP, no hay mucha información y solo un montón de quejas sobre qué tan inestable son las pilas BLE ......
Solución
Cada una de las devoluciones de llamada de Android ble tiene sus funciones;
OnDescriptorread y OnDescriptorWrite
Esto se usa para escribir / leer los ajustes de configuración para el dispositivo ble, algunos fabricantes pueden requerir que envíe algunos datos al dispositivo ble y lo confirmen leyendo, antes de poder conectarse al dispositivo ble.
OnCarracteristicWrite
Esto se utiliza para enviar datos al dispositivo BLE, generalmente en modo de datos para el dispositivo BLE. Esta devolución de llamada se llama cuando escribe
gatt.writeCharacteristic(characteristics);
onCharacteristicread
Esto se utiliza para leer datos del dispositivo ble La devolución de llamada se llama cuando escribe este código
gatt.readCharacteristic(characteristics);
OnCarracteristicsChanged
Esta devolución de llamada se llama cuando intenta enviar datos usando WritTecharacistic (características) y el dispositivo BLE responde con algún valor.
Generalmente un dispositivo BLE tiene pocas características, para simplificarlo, nomeome algunas características
- escribir - Características de escritura
- Leer - Lea las características
Para dejarlo claro, cuando envíe datos, deberá usar las características de escritura y luego, cuando el dispositivo ble responda la aplicación de Android, llame a las características >
Un punto muy importante a la nota es Android Ble Stack le permite escribir características de una sola vez!
Ejemplo: Si intenta llamar a las características de escritura dos veces al mismo tiempo
gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);
¡La pila BLE Android no emitirá las características de la segunda escritura!
Otros consejos
Antes de setValue:characteristics.setValue(data)
, debe usar gatt.setCharacteristicNotification(Char,true)
a setNotification
.