Я пишу консольное приложение под Ubuntu, которое использует последовательный порт. Нужно читать и писать с последовательного порта на частоте 60 Гц.
Я считаю, что вызов read () часто, но не всегда, медленен. Я установил O_NDELAY, поэтому часто он возвращается сразу (отлично). Иногда это может занять до 50 мс, а это слишком медленно для моего приложения. Перед вызовом read () я проверяю количество доступных символов, поэтому не следует ожидать данных.
Что делает read (), что занимает так много времени? Как я могу ускорить это?
Варианты порта:
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
options.c_iflag &= ~IXON;
options.c_oflag = 0;
edit: я раньше использовал select (), но он оказался ортогональным к вопросу. Обновлено с моей последней информацией.