[RISOLTO] - Da Byte Array a Stringa -Bluetooth BLE

Ciao, ho necessità di inviare dati con un modulo bluetooth ble, però a velocità ragionevole, dovrei inviare 16 byte, che visto il limite per singolo pacchetto di 20 byte si può fare.

Ho provato a trasmettere con la UART bluetooth una cosa tipo:

BLEuart.write("0123456789abcdef");

ed effettivamente funziona, ed ottengo cosi circa 200 trasmissioni al secondo.

Il problema è che se devo inviare dati da un array devo fare un ciclo, inviando ogni volta una voce dell’array, però questo rallenta notevomente il trasferimento perchè ad ogni pezzetto viene invocata una trasmissione di un solo byte e credo che questo sia un problema del ble.

Tanto è vero che sul ricevitore, se vado a capo ad ogni trasmissione ricevuta, nel primo caso ottengo una riga completa (fino a 20 caratteri/byte), nel secondo caso ottengo tutti i valori uno sotto l’altro a testimonianza che sono pacchetti diversi.

Ora è facile capire che se devo dividere per 16 (il numero dey byte) la velocità di trasmissione questo è un problema.

Ho risolto da solo.

Soluzione:

bleuart.write(buf, 11);

Credo che dovresti dirci quale Bluetooth BLE hai (magari proprio il link all'articolo che hai acquistato) uale libreria BLE usi, e magari anche farci vedere almeno uno spezzone di codice per capire com'è fatto questo array e come cerchi di mandarlo.

Anche perché non ho capito perché dici "ad ogni pezzetto viene invocata una trasmissione di un solo byte" e perché parli di convertire "bytearray in String"...
Se usi la libreria che vedo sul sito Adafruit ha il metodo write() per inviare proprio un byte array:
write ( const uint8_t *content, size_t len );

EDIT: ecco, appunto, era quello il problema :wink: