char c = mySerial.read(); //get one byte from buffer
readString += c;
if(c== '*'){
So, the '*' is appended to the String instance, too.
String response = "L,16392";
if(readString == response){
Of course they don't match.
In the char array version, the readString array is NOT NULL terminated. Life will be a lot more pleasant when you NULL terminate it.
for(int j = 0; j <= 20; j++){
readString[j] = ' '; //clears variable for new input
}
Wrong.
readString[0] = '\0';
is all that is needed.
When you concatenate a character onto the end of your array, the strcat() function looks for the NULL, and replaces it with the new character(s), and then puts the NULL in the next empty spot. No NULL means that strcat() is going to write outside the bounds of your array.