Перейти к содержанию
    

Как получить время от последнего принятного байта по Uart-у

Доброго времени суток!

 

Начал осваивать линукс и программирование под ним. Первым делом потребовалось написать программу, которая бы принимала данные по uart-у и парсила их на строки.

Если выделение строки из массива данных - не проблема, то вот стирание буфера меня озадачило. Идеально было бы, если это происходило по отсутствию данных в течении несколько миллисекунд. В винде есть ReadTimeout, при превышении порога - стираем буфер. В линуксе - только read();

 

Вопрос: можно ли получить в линуксе время от последнего принятого байта?

 

Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос: можно ли получить в линуксе время от последнего принятого байта?

А может стоит попробовать стандартный путь Serial-Programming-HOWTO

Serial-HOWTO serial-programming-guide-for-posix-operating-systems

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собсна, я кое-что из этого читал, и установка

newtio.c_cc[VMIN]

для меня не нова.

Но мне хотелось бы обрабатывать входящие данные на лету, а стирать - после окончания пакета.

 

Я сделал, чтобы функция read вообще не тормозила программу, и по каждому read()>0 - перезаписываю в свой буфер и обрабатываю. А вот сброс буфера - хотелось бы иметь после того, как прошло какое-то время тишины.

 

Конечно, по VMIN - можно выходить из read() после 100 мс. тишины, но мне хотелось бы, чтобы программа не теряла лишнего времени, а обрабатывалась на лету.

 

По одной из ссылок я увидел метод с использованием сигнала SIGIO. Но насколько я понял - мне это тоже не поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...