我在 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 库,但我想在其他应用程序中使用它)