Buon giorno ragazzi. ho una domanda da farvi (dato che non ho trovato nulla in libreria).
è possibile, partendo da un int ottenuto tramite Serial.read, accedere a sottoparti del valore? nel senso...ottengo un valore tramite la funzione, e vorrei vedere il carattere ascii di inizio comunicazione. è possibile fare ciò?
grazie 1000
ciao dmitrac
La tua spiegazione é un po criptica.
È possibile selezionare singoli bit di un numero binario facendo un AND (operatore "&") con un numero che corrisponde ai bit che vuoi selezionare.
esempio: vuoi sapere se il bit 3 é 1 o 0. (conto in questo esempio i bit partendo da 0)
(variabile & 8) come risultato hai il numero 0 oppure 8.
Attenzione: non sono sicuro se puoi fare operazioni AND con piú di 8 bit.
Ciao Uwe
già...la possibilità della AND non mi era venuta in mente...
il problema sorge per il fatto che ho 2 arduino che comunicano tra di loro tramite xbee e voglio far si che le informazioni inviate dal master allo slave siano "separabili", dato che il master ha il compito di fare delle misure che lo slave dovrà interpretare. avevo pertanto pensato di far inviare dal master i valori, preceduti da -magari- un'iniziale che lo slave avrebbe interpretato e letto i caratteri successivi:
ad esempio
Master invia A45
Slave riconosce A e preleva 45
ciao dmitrac
Allora trasmetti una stringa.
seguendo il tuo esempio
I caratteri quando arrivano sulla seriale li metterai in un array:
carattere[0] = A;
carattere[1] = 4;
carattere[2] = 5;
if (carattere[0] == A)
{
// conversione:
valore[0] = carattere[1]; // tolgo il primo carattere
valore[1] = carattere[2];
valore[2] = 0; // termina la stringa
valoreint = atof(valore);
esegui le funzioni}
else {fai niente}
Ciao Uwe
quindi mi consigli di trasmettere carattere per carattere?
ciao dmitrac
Non fraintendermi, non Ti ho consiglaito questo;
Non so che valori vuoi trasmettere, ma la seriale a cui attachi XBee trasmette numeri a 8 bit.
Se Ti basta un unico valore tra 0 e 255 allora Ti basta un byte senó devi trasmettere l'informazione in piú byte
Ciao Uwe
ah scusami, non avevo capito allora cosa stessi intendendo
ciao dmitrac,
non puoi usare un carattere di separazione per poi riconoscerlo dove ricevi il dato?
hai fatto l'esempio di dover inviare il valore
A45
e in ricezione poter scomporlo in A e 45...
e se tu inviassi A=45?
in ricezione potresti creare una funzione che riconosce il carattere "=" e ti scomponi il valore...
Ho provato a buttarla li...
no ho ben capito che cosa siano i valori...
alla fine ho risolto in un modo differente, ovvero sfruttando la lettura "immediata" dello stream da seriale. vale a dire in questo modo: il trasmittente trasmette A45, il ricevitore effettua un controllo sulla seriale, e se riceve A, legge tutti i caratteri successivi (mediante un while Serial.available()>0)