VB Comms Failure During Long Jobs

String inStr = "";              // Hold incoming data
  inStr.reserve(40);          // easily enough for longest command (ie.x7000y7000z1404o13s0c19g6i270o14)

If you KNOW that maximum size, then a static char array is perfectly suited.

char inStr[40];
byte index = 0;
  Serial.begin(9600);         // was 38400, but froze
  Serial.println("OK?");
  Serial.flush();
  delay(100);

If you are using 1.0 or later, the flush() function blocks until the 5 bytes have been sent. Then, you sit on your thumbs for 10 times as long as it took to shift those 5 bytes out. Was blocking really useful?

If you are using 0023 or earlier, the flush function dumps random amounts of unread data. Is that useful?

99% of the time, Serial.flush() is used incorrectly. You code appears to not be a 1%-er.

void serialEvent() {
  while (Serial.available()) { // get new byte
    char inChar = (char)Serial.read(); 
    inStr += inChar;           // add to the inStr
    if (inChar == '\n') {      // Flag if char is vbcrlf
      stringComplete = true;
    } 
  }
}

should be

void serialEvent()
{
  while (Serial.available())
  {
    char inChar = Serial.read(); 
    inStr[index++] = inChar;           // add to the inStr
    inStr[index] = '\0'; // NULL terminate the array
    if (inChar == '\n')
    {      // Flag if char is vbcrlf
      stringComplete = true;
    } 
  }
}

That leaves only determining, in loop, what is in inStr. The strcspn() function will find a character, like 'x', in a string. It returns the position of the character in the string. The strchr() function is similar, except that it returns a pointer to the character. You can increment that pointer to point to the next character.

Pass that pointer to strncpy() to extract a substring into another char array. Null terminate that array, and pass it to atoi() to get an int.

Of course, if you have any control over the sender, sending something like "x=7000,y=7000,z=1404,o=13,s=0,c=19,g=6,i=270,o=14" instead of "x7000y7000z1404o13s0c19g6i270o14" would allow you to use strtok() in a while loop, with a series of if/else if statements to extract the numeric values and associate them with the correct variables.