XBEE S2 Broadcastübertragung

Hi habe zurzeit einen ZigBee - Netzwerk über Arduino Fio's laufen und dazu die XBee S2 module.
EIner davon ist als Master(Koordinator) tätig und die anderen zwei als Endgeräte, die je nach ankommenden Steuerzeichen vom Koordinator Sensordaten an Ihm senden müssen.

Habe nun folgendes Problem, dass die Daten zwar von den Endgeräten gesendet werden, doch der Koordinator empfängt diese nicht bzw. nur teilstücke davon.
D.h. je nach Steuerzeichen(=,! und $),welches vom Koordinator sendet, müssen diese entweder 30 datensätze oder 10 datensätze pro sensor senden und diese werden vom Coordinator in Arrays gepsichert. Damit der Koordinator weiß, von welchem Knoten die Daten sind habe ich mir folgendes Übertragunsformat ausgedacht: AWert1;Wert2 für den ersten Knoten und für den zweiten Knoten BWert1;Wert2. Die werte sind Fließkommazahlen deshalb habe ich parseploat genutzt.

Diese Daten müssen beim Erhalt vom Koordinator gesplittet werden in Wert1 & Wert2 und in das jeweilige Array gespeichert werden, das nicht klappt, da nur vereinzelt Wert ankommen. Habe auch versucht eine Testausgabe mir ausgeben zu lassen, um zu sehen ob er in die empfangsbafrage(Koordinator) hineingeht , was nicht der Fall ist. Kann mir jemand eventuell helfen bzw einen Tipp geben, woran es liegen kann?

Im Anhang einen Teilstück des Codes vom Koordinator und von einem ENddevice, da beide identisch sind (nur das Übetragungsformat fängt bei dem einen mit A und beim anderen mit B an).

Teilstück Koordinator:

State INITIAL()
{
  //Sende kontrollzeichen ! an Enddevice, damit 40 datensätze 
  // gesendet werden
  Serial.println('=');
  while(Serial.available())
  {
    if(Serial.read() == 'A')
    {
      Serial.print(F("empfange von Brustkorb"));
      A_B = Serial.parseFloat();
      G_B = Serial.parseFloat();
      //Nur Debug-Mode
      Serial.print(F("A_B: "));
      Serial.println(A_B);
      Serial.print(F("G_B: "));
      Serial.println(G_B);
      delay(1000);
      if(Serial.read() == '\n')
      {
        if(Init_IndexB < 40)
        {
          MagA_B[Init_IndexB] = A_B;
          MagG_B[Init_IndexB] = G_B;
          Serial.print(F("Inhalt MagAccel_B "));
          Serial.print(Init_IndexB);
          Serial.print(F(": "));
          Serial.println(MagA_B[Init_IndexB]);
          Serial.print(F("\r\n"));
          Serial.print(F("Inhalt MagG_B "));
          Serial.print(Init_IndexB);
          Serial.print(F(": "));
          Serial.println(MagG_B[Init_IndexB]);
          Serial.print(F("\r\n"));
          Init_IndexB = Init_IndexB +1;
          delay(10);
          if(Init_IndexB == 40)
          {
            break;
          }
        }//end if <40
      }//end if '\n'
    }//end if B
    if(Serial.read() == 'B')
    {
      A_O = Serial.parseFloat();
      G_O = Serial.parseFloat();
      Serial.print(F("Accel_O: "));
      Serial.println(Accel_O);
      Serial.print(F("Gyro_O: "));
      Serial.println(Gyro_O);
      //delay(1000);
      if(Serial.read() == '\n')
      {
        if(Init_IndexO < 40)
        {
          MagA_O[Init_IndexO] = A_O;
          MagG_O[Init_IndexO] = G_O;
          Serial.print(F("Inhalt MagAccel_O "));
          Serial.print(Init_IndexO);
          Serial.print(F(": "));
          Serial.println(MagA_O[Init_IndexO]);
          Serial.print(F("Inhalt MagGyro_O "));
          Serial.print(Init_IndexO);
          Serial.print(F(": "));
          Serial.println(MagG_O[Init_IndexO]);
          Serial.print(F("\r\n"));
          Init_IndexO = Init_IndexO + 1;
        }//end if <40
      }//end if \n
    }//end if
 }//end while
 StateMachine.Set(POS); //Zustandswechsel zu POS
}//end State INIT

Code Enddevice:

/*----------------------Libraries------------------------------------------*/
#include <SPI.h> //If  you want to controlthe LSM9DSO via SPI
#include <Wire.h> // To control the LSM9DSO via I2C
#include <Adafruit_Sensor.h> //Driver and Helper function for the LSM9DSO
#include <Adafruit_LSM9DS0.h>//Driver and Helper function for the LSM9DSO
/*-------------------------------------------------------------------------*/
//preprocessor instruction
/* Assign a unique base ID for this sensor for I2C*/   
Adafruit_LSM9DS0 lsm = Adafruit_LSM9DS0(100);  // Use I2C, ID #1
/*--------------------------------------------------------------*/
int i=0;
int count=0;
float AMag;
float GMag;

void SensorConfig(void)
{

    //Setup the accelerometer range
  //lsm.setupAccel(lsm.LSM9DS0_ACCELRANGE_2G);
  //lsm.setupAccel(lsm.LSM9DS0_ACCELRANGE_4G);
  //lsm.setupAccel(lsm.LSM9DS0_ACCELRANGE_6G);
  //lsm.setupAccel(lsm.LSM9DS0_ACCELRANGE_8G);
  //lsm.setupAccel(lsm.LSM9DS0_ACCELRANGE_16G);
  
  //Setup the magnetometer sensitivity
  lsm.setupMag(lsm.LSM9DS0_MAGGAIN_2GAUSS);
  //lsm.setupMag(lsm.LSM9DS0_MAGGAIN_4GAUSS);
  //lsm.setupMag(lsm.LSM9DS0_MAGGAIN_8GAUSS);
  //lsm.setupMag(lsm.LSM9DS0_MAGGAIN_12GAUSS);

  //Setup the gyroscope
  lsm.setupGyro(lsm.LSM9DS0_GYROSCALE_245DPS);
  //lsm.setupGyro(lsm.LSM9DS0_GYROSCALE_500DPS);
  //lsm.setupGyro(lsm.LSM9DS0_GYROSCALE_2000DPS);
}

void setup() 
{
  Serial.begin(9600);
  //while (!Serial);  // wait for flora/leonardo
  
  pinMode(13,OUTPUT); //set pin13 as an output(integrated LED)
  
  //If LSM9DSO isn't initialized( is not found)
  if(!lsm.begin())
  {

    digitalWrite(13,HIGH);
    while(1); 
  }
  //falls Sensor erkannt, led soll blinken
  else
  {
    digitalWrite(13,LOW);
    //Aufruf der function sensor zu konfiguieren
    SensorConfig();
  }  
}

void loop() 
{
  /*Horchen, ob Kontrollzeichen von Coordinator ankommt*/
  while(Serial.available())
  {
    //Frage einkommendes Zeichen ab
    char incomingSign = (char)Serial.read();
    //Falls Kontorllzeichen = ! von Coordinator gesendet wird--> Signal 40 Datensätze senden
    if(incomingSign == '=')
    { 
      for(i=0; i<40; i++)
      {
        /* Neues Sensorevent aufrufen, um aktuelle Werte zu erhalten*/ 
        sensors_event_t accel, mag, gyro, temp;
        lsm.getEvent(&accel, &mag, &gyro, &temp);
          
        /*Berechne Accel-Magnitude*/
        AMag= sqrt(pow(accel.acceleration.x,2)+pow(accel.acceleration.y,2)+pow(accel.acceleration.z,2));

        /*Berechne Gyro-Magnitude*/
        GMag = sqrt(pow(gyro.gyro.x,2)+pow(gyro.gyro.y,2)+pow(gyro.gyro.z,2));

        Serial.print('B');
        /*Senden der Daten an Corrdinator*/
        Serial.print(AMag);
        Serial.print(';');
        Serial.print(GMag);
        /*Terminator senden, um Coordinator Ende des Datensatzes zu signalisieren*/
        Serial.print('\n');
        delay(100);
     }//end for

  }//end if !