Do you have any ideas or hints?
Yes.
Serial.begin (19200);
Pick up the pace. 115200 is 6 times as fast.
What baud rate are the XBees using?
if (*data == 0x82 && *(data+1) == 0x81 && *(data+2) == 0x80) //Checking for the starting 3 header bytes
Ugh!
if(data[0] == 0x82 && data[1] == 0x81 && data[2] == 0x80)
would be a lot more readable.
Do you really need to send so much useless text? "A,xx.xxx; T,xx.xxx; E,xx.xxx; B,xx.xxx; O,xx.xxx!" would convey the same information in a lot fewer byte. And, the receiver would KNOW when the end of a packet had arrived.