Я отправляю / получаю данные по последовательной линии в 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, но я хочу использовать это в других приложениях)