es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter adquiere datos de BLE.

Hola, estoy tratando de obtener datos de medición de un dispositivo BLE y mostrarlos en mi aplicación de Flutter. También estoy utilizando flutter_reactive_ble.

Tengo dos características, una para lectura y otra para escritura. Suscribo un listener de eventos a la readCharacteristic y luego escribo una solicitud como se muestra a continuación:

_ble!.writeCharacteristicWithoutResponse(characteristicWrite, value: [0x99, 0x00, 0x19]);

Como parámetro value, estoy enviando una lista de valores hexadecimales. Cada valor tiene su función, como define el manual del dispositivo BLE que se muestra a continuación:
Descripción de las funciones

Estoy utilizando los valores hexadecimales del ejemplo del manual y el dispositivo me envía las primeras 10 mediciones, lo cual es correcto, ya que cada respuesta de solicitud tiene un máximo de 10 mediciones. El problema es que, en el caso de tener 20 mediciones, no puedo obtener las últimas 10. Intenté hacer lo siguiente:

await _ble!.writeCharacteristicWithoutResponse(characteristicWrite, value: [0x99, 0x00, 0x01, 0x99]);

Agregué 0x01 en la lista de valores porque el manual dice:

valor 1: continuar con el siguiente grupo

Pero los datos no se están enviando.

¿Cómo es posible obtener todas las mediciones y, además, obtener, por ejemplo, las últimas 5? ¿Alguien puede ayudarme o darme una pista? Gracias por su tiempo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en la información proporcionada, parece que el problema radica en los valores que se envían en la función writeCharacteristicWithoutResponse. El manual sugiere usar 0x00 para la última solicitud cuando se han recibido todas las mediciones. Sin embargo, en el caso en el que quieras recuperar las últimas 5 mediciones, puedes intentar enviar la siguiente matriz de valores:

    [0x99, 0x00, 0x05, 0x99]

    Esto debería solicitar las últimas 5 mediciones del dispositivo BLE. Alternativamente, puedes intentar usar la función readCharacteristic en lugar de writeCharacteristicWithoutResponse, ya que puede proporcionar resultados más confiables para este caso de uso. Además, asegúrate de manejar los errores y verificar los datos de respuesta en el listener de eventos para asegurarte de que se estén recibiendo correctamente todas las mediciones.

Comments are closed.