我刚开始研究串行数据采集,想知道是否有一种方法可以检查给定端口上是否有数据可用,如果有的话有多少?
更具体一点:如果有人曾经研究过 Arduino 上的编程,那么可以通过调用(从 Arduino API)轻松检查是否可以从 USB 串行接口(interface)读取数据:
if(Serial.available() > 0) { ... }
这样一来,就可以避免可能阻塞的 read() 调用,并在必要或需要时简单地读取数据。
但是考虑到相反的情况:“程序正在检查从 Arduino 发送的串行”,到目前为止,我所看到的在 C 中实现类似功能的唯一方法是通过引导 read() 的行为将 termios
属性 VMIN
和 VTIME
设置为特定值。但这并不是我真正想要的……我不想要一个非阻塞的 read()-调用或一个只在数据可用时才阻塞的 read()-调用。我想知道如果有数据要开始读取,甚至在尝试读取之前,如果是这样,可以(当前)从串行读取多少数据。
最佳答案
使用 FIONREAD
读写控制。
int nread;
ioctl(Serial, FIONREAD, &nread);
if (nread > 0) {
...
}
关于c - 有没有办法查询串口可用的数据量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141047/