bz26:
With both sensors continuously running in the background, I found that I have to do recursion in the loop to make the Arduino read and write continuously. If not, only one pair of data values gets printed to the Serial Monitor, and after that, nothing until the next reset of the Arduino board.
Then there's something you haven't told us, or you had some other code in the sketch. Extra prints statements, perhaps?
Emptying the Serial1 input buffer would happen very quickly, much more quickly than receiving another character from the Serial1 device. Then loop would return and get called again, almost immediately. This starts the accumulation process again, in the same state as the first execution. The honeySerial input buffer might have a few characters waiting to be read, but they are easily handled by the next loop iteration.
Like MorganS' signature, "The problem is in the code you didn't post."
And in case you thought recursion was a good idea, just consider it a "learning moment". If you need the loop function to be called again, just return from loop; don't call loop.
MorganS:
I would change this to discard the additional characters while newParaoData is true.
That should also work, but it is equivalent to reading all the characters in the caller. EDIT: It would empty the input buffer after each character, instead of empying it after both messages have been received. It should have the same behavior.
I am suspicious of this:
char honeyStartMarker = '?';
char honeyEndMarker = '?';
You haven't told us what the sensor is, so we don't really know the message format. Does it really start and end with the same character? Is there no CR/LF ending?
Watching for the same start and end character can leave you "stuck" between two message.