На то он и приемник, чтобы принимать. Выбирайте из буфера (в фоновом процессе, конечно же) все еще не вычитанные вами символы до интересующего вас символа. Дело обработчика - положить их туда. Все. Дальше - разбор буфера, а для этого используется фоновый процесс. Обработчик должен максимально быстро вычитать символ из регистра приемника, положить его в приемный буфер и завершить свою работу, передав управление прерванному фоновому процессу. Что дальше будет с символом - не его дело. Это дело фонового процесса ...