Robin's code does not contain the first line in the below
if (Serial.available() > 0) {
while (Serial.available() > 0 && newData == false) { // <<== NEW - get all bytes from buffer
Maybe you did not show us your latest code but I based my conclusion on
void showNewData() {
if (newData == true) {
if (Commands[6] == 87) {
//Serial.print("This just in ... ");
//Serial.println(receivedChars);
parseData();
showParsedData();
newData = false;
}
}
}
As commands[6] is set by the parser, it's highly unlikely that if (Commands[6] == 87) will evaluate to true before the parser is called.
And looking a bit more at your code, don't use delay to simulate in doOtherStuff(). At 115200 baud you have roughly 10 characters per millisecond. 20ms delay is basically 200 - 64 characters lost. The software buffer used by HardWare Serial is only 64 bytes; once that's full, other data is lost.
Your other long duration process needs to be chopped into smaller chunks.