LINUX.ORG.RU

non canonical com port read


0

0

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);

...

Как быть-то ? Неужто нет способа ?

Заранее спасибо.
★★
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.