А как узнать, что принимающая сторона готова принять новую порцию данных? То, что буфер передачи пустой, ничего не значит.
От задачи зависит. У меня была задача связи - запрос-подтверждение. Т.е. - пихаю пакет в модем, жду ответа с другого конца. Если ответ пришёл - то данные гарантированно отправлены и буфер пуст.
Для потоковой передачи (когда данные на пакеты не бъются и подтвенрждения нет) - такое не подходит.
Я пока рассматриваю RS232 - только как средство коммуникации с PC. В этом случае буфера всегда хватает.
Если умправлять модемом - то либо организовывать разбиение на пакеты и алгоритм "запрос-подверждение" - а так чаще всего и делают, либо - для потока - разбираться с RTS-CTS