arduinoxbee

Xbee Serial.read is not clearing buffer


I wrote a example program to test Serial read from xbee. I was expecting a message passed from transmitter to receiver every 5 sec's but in serial monitor of receiver I am observing a continuous stream of repeat messages. Can anyone what I am missing. FYI: Also attached link to serial monitor screenshot. [1]: https://i.sstatic.net/Lgxx5.png

/*  ~ Simple Arduino - xBee Transmitter sketch ~ Router
*/

int count = 0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    //Send the message:
    count ++;
    Serial.println(String("Hello World : " + String(count)));
  delay(5000);
}
/*  ~ Simple Arduino - xBee Receiver sketch ~ Coordinator
*/

void setup() {
    Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0){
    Serial.write(Serial.read());
  }
}

Solution

  • Figured out a work around to address the issue. Here are the details:

    https://i.sstatic.net/3qZMi.png

    Circuit connections from Arduino to XBEE Shield: 
    D0/RX to TX
    D1/TX to RX 
    5V to 5V 
    GND to GND 
    
    /*  ~ Simple Arduino - xBee Transmitter sketch ~ Router
     */
    
    void setup() {
        Serial.begin(9600);
    }
    
    void loop() {
      //Send the message:
      Serial.print('<');
      Serial.print("Hello World");
      Serial.println('>');
      delay(1000);
    }
    
    /*  ~ Simple Arduino - xBee Receiver sketch ~ Coordinator
    */
    
    bool started = false; //True: Message is strated
    bool ended = false;   //True: Message is finished
    byte index;           //Index of array
    
    char character; //Variable to store the incoming byte
    char msg[13];   //Message - array
    
    void setup()
    {
      Serial.begin(9600);
    }
    
    void loop()
    {
    
      while (Serial.available())
      {
        character = Serial.read();
        if (character == '<')
        {
          started = true;
          index = 0;
          msg[index] = '\0'; // Throw away any incomplete packet
        }
    
        //End the message when the '>' symbol is received
        else if (character == '>')
        {
          ended = true;
          break; // Done reading - exit from while loop!
        }
    
        //Read the message!
        else
        {
          if (index < 11)
          {                         // Make sure there is room
            msg[index] = character; // Add char to array
            index++;
            msg[index] = '\0'; // Add NULL to end
          }
        }
      }
    
      if (started && ended)
      {
        Serial.print("Message: ");
        Serial.println(msg);
    
        index = 0;
        msg[index] = '\0';
        started = false;
        ended = false;
      }
    }