... ok ... quindi, per stare tranquilli al 100%, ho si inserisce a manina un ultimo valore 0x00 alla fine o si modifica la routine per accettare un parametro in più ... il numero di caratteri (così inoltre diventa congrua con le altre due) ... ]
]
]
]
Guglielmo
La precedente versione di quella routine funzionava proprio così, ossia passando 2 parametri: il vettore e la sua lunghezza.
Però giorni fa mi era venuta in mente questa cosa del byte/unsigned char, l'ho voluta provare e pare che funzioni alla perfezione 
non può funzinare alla perfezione: se io ho un array di byte in cui chessò, ho inviato il gezzo dell'intero 126, avrò inviato 2 byte: 0x00 0x7E però con questo "trucco" il valore 0x7E NON verrà mai controllato. In pratica state dando per scontato che il valore 0x00 NON sia mai contenuto nell'array di byte, cosa che non è assolutamente vera.
Un trucco che si può usare è usare 2 0x00 di fila, e se la stringa di byte contiene due 0x00 di fila nel suo contenuto allora dividerli con un valore noto; in pratica come fa il C con i caratteri di escape. (ha un nome questo sistema, si usa per le comunicazioni, ma non ricordo)
A me pare che sui vettori con dimensione fissa
se ti riferisci a me, sappi che la funzione prende un PUNTATORE all'array di dimensione fissa. quindi un test veritiero deve tenerne conto.
In oltre, lato ricezione, spesso si usa un array a dimensione fissa bello grosso, e lo si riempie finchè ci sono dati; con il sistema dimensione dell'array automatico con sizeof, sei costretto a ridimensionare l'array (o usare un array mallocato sul momento), antrambi i sistemi giocano col l'allocazioe dinamica, che come disse anche astro più volte, è spesso pura follia su un micro come gli atmega.