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);
...
Как быть-то ? Неужто нет способа ?
Заранее спасибо.
Форум —
Development