Может, есть какой-то другой способ работы с сом-портами?
Есть элементарный способ. Практически без программирования.
Немного теории для профита.
В лине все является файлами и порты тоже.
Ряд соображений.
1. Использование непосредственно прерываний - это плохо по ряду причин. Разговор на эту тему длинный, если не поймете суть, то можно к нему возвратиться.
Вместо этого универсальнее использовать отдельный процесс (на чтение допустим).
2. Принимать по 1 байту - это прошлый век. Все порты имеют FIFO. Отказываться от его использования - это значит двигаться в прошлый век. Работать надо с пакетами.
3. Факт получения пакета устаканился как отсутствие принятой информации в течении какого-то времени.
ЗЫ. Если все это понять, то проблем уже не будет.