Serial command handler Improvements Help.

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.