Now it is clear your sitiation, you are doing a lot of things within interrupt vector.
You should just handle flags and/or increment/decrement counters;
Code:
readIt() {
...
printToArduino(buffer);
...
}
This is a function that once executed, keeps the program at a local loop while the last byte of the buffer string has not been sent.