leggere dati ricevuti da xbee

ciao
ho questi codici per trasmettere e ricevere dati con xbee, cerco suggerimenti per ricomporre il dato spezzato durante la trasmissione,
ho cercato di fare un ciclo do/while finche non incontravo il carattere 13 10 usando serialprintln per la trasmissione ma senza risultati come pure cercando di usare serialwrite e verificando la ricezione del dato in binario

grazie
ciao

per TX

/*
modulo trasmettitore per xbee
*/
void setup()
{
  Serial.begin(9600);
}

void loop()
{
 for (int i=0; i <= 10; i++)
   {
 //Serial.write(i);
  Serial.println(i);
  
  delay(1000);
   } 
}

per RX

//#include <LiquidCrystal.h>  // include the library code
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize the library with the numbers of the interface pins
byte incomingByte=0;
//char incomingByte=0;

void setup() 
{
    Serial.begin(9600); // initialize serial communication:
//  lcd.begin(16, 2);  // set up the LCD's number of columns and rows:
//  lcd.clear();
    pinMode(13,OUTPUT);
    delay(500);
  
//    lcd.print("pronto");
//    delay(1000);
//    Serial.println("pronto");
}

void loop() 
{
   if (Serial.available()) // when characters arrive over the serial port... 
   {
       delay(100); // wait a bit for the entire message to arrive
//      lcd.clear();

  while(Serial.available()>0)  // see if there's incoming serial data:
{  

incomingByte=Serial.read();
/*
Serial.print("dec ");
Serial.print("\t");
Serial.print("byte ");
Serial.print("\t");
Serial.println("bin ");


Serial.print(incomingByte,DEC);
Serial.print("\t");
Serial.print(incomingByte,BYTE);
Serial.print("\t");
Serial.println(incomingByte,BIN);

Serial.println("");
*/
Serial.println(incomingByte);
if (incomingByte==53)
{
  digitalWrite(13,HIGH);
  delay(100);
  digitalWrite(13,LOW);
  delay(100);
}
} 
} 
}

ciao
credo di avere risolto in questo modo con numeri interi ovviamente minori di 255, qualche suggerimento su come ricomporre i numeri codificati in ascii
grazie
stefano

TX

/*
modulo trasmettitore per xbee
*/
void setup()
{
  Serial.begin(9600);
}

void loop()
{
 for (int i=0; i <= 255; i++)
   {
 Serial.write(i);
  //Serial.println(i);
  
  delay(1000);
   } 
}

RX

//#include <LiquidCrystal.h>  // include the library code
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize the library with the numbers of the interface pins
byte incomingByte=0;
//char incomingByte=0;

void setup() 
{
    Serial.begin(9600); // initialize serial communication:
//  lcd.begin(16, 2);  // set up the LCD's number of columns and rows:
//  lcd.clear();
    pinMode(13,OUTPUT);
    delay(500);
  
//    lcd.print("pronto");
//    delay(1000);
//    Serial.println("pronto");
}

void loop() 
{
   if (Serial.available()) // when characters arrive over the serial port... 
   {
       delay(100); // wait a bit for the entire message to arrive
//      lcd.clear();

  while(Serial.available()>0)  // see if there's incoming serial data:
{  

incomingByte=Serial.read();
/*
Serial.print("dec ");
Serial.print("\t");
Serial.print("byte ");
Serial.print("\t");
Serial.println("bin ");


Serial.print(incomingByte,DEC);
Serial.print("\t");
Serial.print(incomingByte,BYTE);
Serial.print("\t");
Serial.println(incomingByte,BIN);

Serial.println("");
*/
Serial.println(incomingByte);
if (incomingByte==B1010) //numero 10 in binario
{
  digitalWrite(13,HIGH);
  delay(100);
  digitalWrite(13,LOW);
  delay(100);
}
} 
} 
}

ti salvi ciò che ricevi in una stringa e usi atoi().

in alternativa ci sono alcuni metodi e funzioni di arduino che ti semplificano la vita:

isDigit( byteInArrivo ) : ti dice se il carattere ricevuto è un numero

int variabile = stringaNumero.toInt() fa la stessa cosa che fa atoi()

Un esempio del genere lo trovi nel tuo IDE in Examples > Strings > StringToInt

ciao

immaginavo di dover usare string, qualcosa sto ottenendo, ma tutti questi comandi non li trovo nel reference,

grazie
stefano

ciao
un grazie a federico
ho seguito i suggerimenti funziona adesso devo provare con numeri reali

stefano