string e String

Buongiorno ragazzi,
vi illustro il mio problema.
Praticamente ho questi 10 array che dovrei associare a 10 allarmi.

//Dichiarazione messaggi
char messaggio1[42]="A,L,L,.,C,E,N,T,R,A,L,E, ,T,E,R,M,I,C,A,";
char messaggio2[70]="A,L,L,., ,P,O,M,P,E, ,A,N,T,I,C,E,N,D,I,O, ,S,T,A,B,I,L,I,M,E,N,T,O,";
char messaggio3[62]="A,L,L,., ,P,O,M,P,E, ,A,N,T,I,C,E,N,D,I,O, ,D,E,P,O,S,I,T,O,";
char messaggio4[61]="A,L,L,., ,R,I,V,E,L,A,T,O,R,E, , F,U,M,I, ,D,E,P,O,S,I,T,O,";
char messaggio5[38]="A,L,L,., ,A,R,I,A, ,C,O,P,R,E,S,S,A,";
char messaggio6[28]="S,I,L,I, ,A, ,S,C,A,R,T,O,";
char messaggio7[52]="A,N,O,M,A,L,I,A, ,A,S,C,E,N,S,O,R,E, ,U,F,F,I,C,I,";
char messaggio8[52]="A,N,O,M,A,L,I,A, ,A,S,C,E,N,S,O,R,E, ,M,O,L,I,N,O,";
char messaggio9[56]="A,N,O,M,A,L,I,A, ,A,S,C,E,N,S,O,R,E, ,D,E,P,O,S,I,T,O,";
char messaggio10[46]="A,N,T,I,N,T,R,U,S,I,O,N,E, ,D,E,P,O,S,I,T,O,";

Praticamente ho una variabile di tipo unsigned int, quindi composta da 16bit a cui associo ai primi 10bit un'errore.

una volta associati gli errori devo comporre la stringa e inviarla tramite seriale ad una scheda.
la stringa che devo comporre ha la parte iniziale:
ID:1,SETZONE:1,COLOR:1,PARM:(0,0,128,16),DATA:("
più i messaggi dei vari errori.

i valori dei bit situati nella variabile int gli leggo così
if(bitRead(vallettoint, 8) ==1)

Logicamente gli errori possono sommarsi quindi dovrei comporre una stringa con più messaggi.
Come posso fare per semplificarmi la vita e non usare molti cicli for?

Io avevo pensato la classe String, ma ho notato che quando deve sommare gli errori si blocca e noon mi restituisce niente.

PS. vi faccio un esempio
ho nella int ho 2 bit "alti"

quindi devo formare la stringa in questo modo:
ID:1,SETZONE:1,COLOR:1,PARM:(0,0,128,16),DATA:("A,L,L,.,C,E,N,T,R,A,L,E, ,T,E,R,M,I,C,A, ,A,L,L,., ,P,O,M,P,E, ,A,N,T,I,C,E,N,D,I,O, ,S,T,A,B,I,L,I,M,E,N,T,O,)

Grazie a tutti

Lascia stare la classe String ... e se fai un po' di ricerche qui sul forum capisci anche perché ... :grin:

La concatenazione di string (char array) è estremamente semplice ...

... prevedi un buffer della lunghezza massima e con la strcat() (o una delle sue simili) concateni le string. La funzione fa parte della AVR libc che è automaticamente inclusa, comunque, per tua informazione, si trova in <string.h> ... così ti vedi anche la sintassi e le altre funzioni che ti possono essere utili :wink:

Guglielmo

Inutile dirlo, ma l'argomento ha solleticato il mio interesse!

Ma al di la' di scoprire per ogni buon conto le funzioni string, che senso ha sommare i vari messaggi?
Non e' piu' semplice inviarli in modo direttoa blocchi, semplificando la cosa, del tipo:

Serial.print ("ID:1,SETZONE:1,COLOR:1,PARM:(0,0,128,16),DATA:(\34");
Serial.print(messaggio2);
Serial.print( ")" );