Hi, all.
Имею следующую проблему.
Допустим, на /dev/ttyS0 приходят блоки данных с частотой 20 герц.
Ни преамбулы, ничего... знаю только длину.
Если мы уже ожидали данных, то все хорошо, а вот если "вклинились" посреди пакета то прочитаем белиберду.
Единственный способ "поймать" начало пакете - по временной задержке между посылками.
Но вот засада, задается она в децисекундах целым числом! (т.е. мне бы потребовалась задержка меньше 0.5... а число-то целое... обломс :( )
fd[0] = open("/dev/ttyS0", O_RDWR | O_NOCTTY);
if (fd[0] <0) {perror("/dev/ttyS0"); exit(-1); }
...тыр-пыр...прочие настройки...
newtio.c_cc[VMIN]=длина в байтах;
newtio.c_cc[VTIME]=время в децисекундах;
tcflush(fd[1], TCIFLUSH);
tcsetattr(fd[1],TCSANOW,&newtio);
...
Как быть-то ? Неужто нет способа ?
Заранее спасибо.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Com-port настройка (2023)
- Форум Как узнать сколько байт пришло на /dev/ttyS0 ? (2003)
- Форум Serial port programming (2008)
- Форум [C] Com Port (2007)
- Форум Работа с com портом (2007)
- Форум tcsetattr повторный вызов (2011)
- Форум RS232 (2004)
- Форум Не получается читать с порта (2013)
- Форум Функция read() (СИ) в openwrt (2016)
- Форум [ttyUSB0] вызов read() (2010)