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?
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.