问题出在我必须通过蓝牙串行端口将数据从一个小机器人发送到我的笔记本电脑,波特率为 115200,机器人每 10 毫秒发送 32 字节数据包(每秒 100 次)。传输只进行几秒钟,然后什么cat
都没有显示。当我将频率降低到每秒 10 次时,它运行顺畅。我猜想蓝牙串行端口 rx 缓冲区溢出了。
通过终端获取串行端口(ttyS*
)的状态很简单:
sudo cat /proc/tty/driver/serial
然后它显示serinfo
所有 uart 的列表以及有关状态和缓冲区的信息。当我调用
sudo cat /proc/tty/drivers
我可以看到有rfcomm
可用的驱动程序:
rfcomm /dev/rfcomm 216 0-255 serial
当然,读取来自配对蓝牙设备(例如通过cat
或管道)的数据不是问题。
问题是:如何获取 rfcomm 串行端口(例如蓝牙 SPP 设备)的状态,尤其是 rx/tx 缓冲区中的数据量?这些信息是否可以在目录中的某个地方找到,/proc
或者ttyS*
我可以使用完全不同的方式吗?