GPS not letting me do anything else.

Spot on!

Yes that's exactly whats going on. The delay causes the buffer to fill up and when my statement is looking for the next $ to determine the start of the new line, nothing happens.

When I remove that if statement, the gps will rudely begin to write in the middle of the other readings.

So I have to somehow figure out how to pause the gps and start it up again.

According to the spec sheet for the Copernicus II by Trimble, if I pause using the XSTANDBY pin, the unit takes 3 seconds to pause and 3 seconds to start up again. That's not going to work, considering my write statement last only half a second.

My other option would be sending it a command to pause and a command to start, which also has a delay of approximately 1 second. So that's also not an option for me.

That leaves me with the only option left of writing some clever code to dump the buffer as it gets full and keep looking for the start of the next reading. But, being an absolute novice at this, it's not going well.

My question to you good people, how can I dump the buffer before I start the actual read? That way my code doesn't hang looking for "$".

Or am I completely off in my assessment?

Thank you.