Я отправляю / получаю данные по последовательной линии в Linux, и я хотел бы найти задержку между символами.
Modbus использует задержку в 3,5 символа для определения границ кадра сообщения. Если задержка превышает 1,5 символа, кадр сообщения объявляется неполным.
Я пишу быструю программу на C, которая в основном
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
// setup newtio
....
tcsetattr(fd, TCSANOW, &newtio);
for(;;) {
res = read(fs, buf, 1);
if (res > 0) {
// store time in milliseconds?
//do stuff
}
}
Есть ли способ измерения времени здесь? Или мне нужно посмотреть на получение данных из последовательной линии по-другому?
Я также пытался подключиться к SIGIO для получения сигнала всякий раз, когда есть данные, но я, кажется, получаю данные 8 байтов за раз.
(да, я знаю, что существуют некоторые библиотеки Modbus, но я хочу использовать это в других приложениях)