Sto lavorando ad una specie di server UDP comandabile tramite un'apposita app da android.
Ho create un protocollo di messaggi. Ho predisposto una richiesta per i dati del server in modo che quando viene diffusa in broadcast sulla rete a cui è connesso lo smartphone con l'app, gli invia una risposta con i propri dati (es. mac e ip). Per quanto riguarda la ricezione della richiesta per i dati non ho trovato problemi ma sto avendo numerosi problemi a creare una funzione per "assemblare" la risposta.
Vorrei creare una funzione che concateni degli array di char separati da ';' per inviarla in risposta. Ho provato ad usare la sprintf ma quando chiamo la funzione arduino va in crash e si riavvia.
Come potrei fare?
Ciao! Il fatto che ti dia questi tipi di problemi con sprintf() mi sembra strano e non saprei il motivo ??
Bisognerebbe vedere il sorgente se non fai casino con puntatori ad esempio....
Comunque sprintf() è utile se si deve ottenere una stringa formattata, esempio inserire numeri all'interno di una stringa ecc..
Se si devono solo concatenare stringhe allora forse è più idonea la funzione apposita strcat().
esempio
strcat(strigaRisultante,";"); //aggiungo prima il ;
strcat(stringaRisultane,mioarray); // aggiungo una stringa array di char
P1ZZ4:
... Ho provato ad usare la sprintf ma quando chiamo la funzione arduino va in crash e si riavvia.
Probabilmente sei al imite con la SRAM e la sprintf(), che è una funzione piuttosto pesante ed ha bisogno di memoria, magari non ne trova e manda il tutto in crash oppure ... hai sbagliato a scrivere la sprintf() e passi qualche puntatore sbagliato con le ovvie conseguenze.
Come ti è stato già detto, per accodare "stringhe" classiche del 'C' NON si usa la sprintf() (specie su una piccola MCU come quella di Arduino) ma le funzione che si trovano in <string.h> della AVR libc.
Guglielmo
P1ZZ4:
Vorrei creare una funzione che concateni degli array di char separati da ';' per inviarla in risposta. Ho provato ad usare la sprintf ma quando chiamo la funzione arduino va in crash e si riavvia.
Come potrei fare?
Se non puoi/vuoi postare il codice, fFarci vedere almeno la funzione che tu hai fatto, diciamo, aiuterebbe un tantino...
E magari dirci anche quanto occupa il compilato (lo vedi dall'output della compilazione).