有没有办法查询串口可用的数据量?

时间:2016-10-19 20:35:03

标签: c linux arduino serial-port usb

我刚开始研究串行数据采集,并想知道是否有办法检查,如果数据在给定端口可用,如果有,那么多少?

更具体一点:如果有人曾经研究过Arduino上的编程,可以通过调用(来自Arduino API)轻松检查数据是否可以从USB串行接口读取:

if(Serial.available() > 0) { ... }

这样可以避免可能阻塞的read() - 在必要或需要时调用并简单地读取数据。

然而,考虑到相反的情况:"一个程序正在检查从Arduino发送的序列号",我到目前为止看到的唯一方法是在C中实现类似的东西,就是引导通过将termios属性VMINVTIME设置为特定值来实现read()的行为。但这并不是我想要的......我不想要一个非阻塞的read() - 调用或read() - 只在数据可用时才会阻塞。我想知道 IF 在读取之前有数据需要读取,如果是这样的话,那么 HOW MUCH 数据可以从串口读取(当前)。

1 个答案:

答案 0 :(得分:2)

使用FIONREAD ioctl。

int nread;
ioctl(Serial, FIONREAD, &nread);
if (nread > 0) {
    ...
}