lots of delays, any other way??

gazz:
we are a little worried that we may be using too many delays, as after every serial read we need a 1millisecond delay, i know that's not much, but worried they may add up and cause problems,

You don't need any delays, but you do need to rework your serial reading.

Your 1 mS delays appear to be helping because it takes 86 uS for one byte to be sent at 115200 baud, and thus waiting 1000 uS gives it time to arrive. But this is not a good way of doing it. For one thing, a delay (like, an interrupt) at the sending end can cause it to take longer than 1 mS.

My link above suggests a couple of ways of doing it, and in your case the state machine method might be better.