在读取linux之前,获取串口上等待的字节数

我将一个Win32串口类转换成Linux(Ubuntu)这个串口类所要求的function之一就是在串口缓冲区中“偷看”,看看在串口读取串口前有多less字节在串口上等待。

在这种修脚的情况下,我只需要知道端口上是否有任何字节,然后再尝试读取它。

在Windows中,我使用COMSTATS,但我似乎无法在Linux中find类似的function。

我的问题是:

在Linux上如何读取在串口上等待的字节数量而不将它们从串口缓冲区中删除?

Solutions Collecting From Web of "在读取linux之前,获取串口上等待的字节数"

你需要使用一个ioctl

ioctl(serial_fd, FIONREAD, &bytes_avail); 

这个文件是非常值得一读的,对于这个和许多其他问题(规范与原始模式等)

http://www.cmrr.umn.edu/~strupp/serial.html

在C语言中,你可以用一个ioctl来问这个问题:

 int bytes_avaiable; ioctl(serial_file_descriptor, FIONREAD, &bytes_available);