А кто сказал, что байты должны идти "ноздря в ноздрю"? Может, между ними по 2-4 свободных фрейма? И окончанием передачи считать, скажем, паузу дольше 100мс после последнего байта…
Я таймауты вообще на терминале тестировал, у меня был выставлен таймаут в 3 секунды (уж за три-то секунды я успею следующий символ набрать =D)
Что до переполнения буфера: а как он переполнится, когда прием идет посредством DMA? По заполнению буфера идет прерывание, и коль не было '\n' в процессе, считаем строку бажной и сбрасываем нафиг с выставлением флага ошибки (т.е. следующий пакет тоже нужно будет выбросить).
Я на гитхабе, в ЖЖ


