Инициализация вашего последовательного терминала практически эквивалентна cfmakeraw () плюс установка скорости передачи.
Однако этого недостаточно для полной инициализации последовательного терминала.
По крайней мере, приемник также должен быть включен:
mTermios_p.c_cflag |= CREAD;
Чтобы устранить любые проблемы рукопожатия модема (особенно когда модема нет):
mTermios_p.c_cflag |= CLOCAL;
Чтобы устранить любые проблемы аппаратного рукопожатия:
mTermios_p.c_cflag &= ~CRTSCTS;
BTW
mTermios_p.c_cc[VMIN] = 0U;
mTermios_p.c_cc[VTIME] = 0U;
Установка обоих VMIN и VTIME на ноль равна необдуманная конфигурация.
В этом руководстве эта конфигурация описывается как конфигурация, которую следует использовать только в том случае, если «вы действительно, действительно знаете, что делаете».
Код, который вы опубликовали для чтения, не способен (эффективно) обрабатывать последствия установки на ноль VMIN и VTIME . Если ваша программа не синхронизирована с передающей программой, ваш код чтения, скорее всего, «успешно» прочитает ноль байтов, т.е. не будет данных.