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.

Android BLE Recibiendo sólo 20 caracteres

Tengo que leer 512 bytes (cada segundo) desde ble (esp32). Pero solo estoy recibiendo 20 bytes en mi listener onCharacteristicChanged. No sé qué hacer con gatt.requestMtu(512). También lo intenté, pero no sirvió para nada. ¿Alguna solución?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución para recibir 512 bytes desde BLE en el listener onCharacteristicChanged

    Si solo está recibiendo 20 bytes en su listener onCharacteristicChanged mientras espera 512 bytes, entonces necesita aumentar el tamaño de unidad máxima de transmisión (MTU) para los paquetes de datos BLE.

    Puede intentar usar gatt.requestMtu(512) para establecer el tamaño MTU en 512 bytes, pero esto puede no funcionar si el dispositivo BLE o el dispositivo Android no soporta este tamaño. Sin embargo, aún puede intentarlo para ver si ayuda.

    Si el método anterior no funciona, puede intentar dividir los datos de 512 bytes en fragmentos más pequeños y enviarlos individualmente utilizando el dispositivo periférico BLE. Luego puede volver a ensamblar los fragmentos recibidos en el dispositivo Android para obtener los 512 bytes completos.

    Otra opción es usar BluetoothGatt.writeCharacteristic() para enviar los datos en fragmentos más pequeños y llevar un registro del número de bytes enviados y recibidos. Una vez que haya recibido todos los fragmentos, puede volver a ensamblarlos para obtener los 512 bytes completos.

    En resumen, aumentar el tamaño de MTU usando gatt.requestMtu(512) o dividir los datos en fragmentos más pequeños y enviarlos individualmente puede ayudarlo a recibir los 512 bytes completos de BLE en su listener onCharacteristicChanged.

Comments are closed.