che usi char o unit_8t è la stessa cosa, son 1byte di grandezza(perchè la seriale scrive un baud alla volta, composto da 1byte di payload, ovvero i tuoi dati, e nel caso di arduino 2 bit di controllo)
tu sai che la funzione write prende in input un array di unit_8t (o char) e la dimensiuone dell'array. Invece tu vuoi inviare un int, composto da 2byte se lo mantieni in int, 1byte per cifra se lo converti in stringa, a cui però poi dovrai aggiungere un carattere di fine stringa (la sprintf in automatico mette lo '\0', carattere standar di fine stringa, ma non so se viene trasmesso), altrimenti non saprai dove finisce un numero e inizia l'altro.
il codice che usio te trasforma il numero in stringa, mentre il codice seguente divide l'intero (2byte) a metà e poi li invia. In questo modo risparmi, per numeri a più cifre, un byte per cifra, che sembra poco ma a 9600baud può fare la differenza.
unit_8t messaggio[2];
messaggio[0] = (unit_8t)intero; //vengono copiati i primi 8 bit, i restanti, che non ci stanno, vengono scartati.
messaggio[1] = (unit_8t)(intero << 8); //i bit prima scartati vengono fatti "scivolare" al posto di quelli che abbiamo già copiato, e quindi si può eseguire la stessa operazione di prima
vw_send( messaggio, 2);
xome puoi vedere, un array e un puntatore sono la stessa cosa! in realtà l'array è una semplificazione dei puntatori nata per risparmiare un sacco di tempo, se non ci fossero gli array il codice sarebbe stato:
unit_8t *messaggio;//puntatore a uint8
messaggio = (unit_8t)malloc ( sizeof (unit_8t)*2 ); //do al puntatore 2 spazi di memoria
*messaggio = (unit_8t)intero; //il valore è salvato nella prima cella di memoria
*(messaggio+sizeof (unit_8t)) = (unit_8t)(intero << 8); //il valore è salvato nella seconda cella di memoria.
vw_send( messaggio, 2);
Nota come volendo, potrei scrivere:
messaggio+sizeof (unit_8t)*i
al variare di i vario la cella di memoria in cui voglio scrivere: se è 0 scrivo nella prima cella, se 1 nella seconda e così via... ed ecco spioegato come mai gli array iniziano a contare da 0. 