Толком, объясните, как обнулять буффер. Контроллер ждёт символ перевода каретки, для того, чтоб обнулить буфер?
Например у нас идёт с ключа бесконечный поток цифр.
1234567890123456789012345... и т.д. Контроллер, поймав например 45678, (строка приёма определена длиной 5 символов) по алгоритму смотрит, что в этой строке последущая цифра больше на 1 предыдущей. Если это так, программа продолжает работать по плану А.
Мы вынимаем ключ, за какой-то надобностью в этой строке по-прежнему остаётся 45678. И через, как nikita сказал, примерно 30 сек строка обнуляется. Программа далее работает, как нам надо, по плану В.
Вставляем в порт ключ, строка уже приобретает вновь, какое-то пойманное в порт значение, например 23456, всё повторяется заново.

Но эти 30 секунд не прибавляют нам настроения!