Frame fragmentation

Trying to understand the general practice for reading buffered output from the XBee in API mode(1),

I’m currently using C# and SerialPort which has an event that fires every time data is received. I’m sending the ID AT command and it comes back with an 11 byte frame with all the correct bytes.

Sometimes it’s only part of the frame. I believe this is because the event fires faster than the bytes are read by the SerialPort class.

  1. Is all the information being sent at one time or multiple packets to complete 1 frame or does this sound like its reading it before it done?
    If so, should I just keep reading until I find a checksum or another start delimiter?

  2. Just to test, I’m sending command as fast as I can. I expect data to come back from different frames in different orders, from what I’ve read this is what the FrameId byte is for but if I set the AT command frame (0x08) to anything other than 0x52 it’s ignored. I don’t see anything in the docs that say why?