I am sending data from one endpoint to the coordinator continuously (I checked this by reading out the UART directly), but I receive the data in blocks (of typically around 300bytes). I want to use the modules in a real-time environment, but due to this delay, it would not be real time. Any idea as to what causes this?
See https://www.digi.com/resources/documentation/digidocs/90002002/default.htm#Reference/r_cmd_RO.htm
For efficiency the XBee accumulates serial bytes to send in one packet controlled by ATRO. You can disable that accumulation for a real-time system but may run into issues if the RF network isn’t able to keep up now that it is sending data frames much more frequently. You’ll have to test and that depends on the exact application.
If you set RO to 0 it will packetize on every byte which might be too much. But if you leave RO > 0 but insert explict breaks to trigger RO you can exercise finer control and make better tradeoffs between latency and RF throughput.