Because you are typing, there will always be an enter character to terminate the string,
so you only need to fill a buffer, and check each byte for the enter character,
then you have all the time in the world for the program to look at the string
rather than trying to figure out what is going on in-between each byte being sent.
Same with GPS, I prefer to fill a buffer with the entire command, and count two bytes after the * char is received,
then look into the content after the entire sentence is received.
Bookmarks