Make check a bool, then you can set its value to true or false. Much better for readability, and it saves a byte of memory. Can't comment further on your snippet due to lack of context.
I've never tried the readString() function. It's blocking and therefore unsafe. I'd rather have my code check for new characters, process them as they come in, and do other things in the meantime. So you'd get something like this:
void loop() {
if (Serial.available()) {
// Read and handle this one character as needed.
}
// do the rest of the loop() functions.
}
Another thing to make your code (and life) MUCH simpler: use single-character commands. You have 255 codes available in a single byte, it's hard to believe you have that many commands. Probably not even 26 (the letters of the alphabet).
If you must have multi-character commands (e.g. s for start, followed by a number on what to start - if you really can't compress that in a single byte) you have to add start/stop tokens as well, so your code has at least a basic idea of when a command starts.