mat*_*975 9 c++ linux serial-port
我正在用C++编写Ubuntu Linux上的应用程序来从串口读取数据.它通过我的代码调用成功地工作select(),然后ioctl(fd,FIONREAD,&bytes_avail)在最终获得数据之前找出可用的字节数read().
我的问题是:每次select返回数据时,可用的字节数报告为8.我猜这是一个缓冲区大小设置在某处,当这个缓冲区已满时,select会向用户返回通知.
我不熟悉Linux作为开发人员(但不是C++的新手),我试图研究(没有成功)是否可以改变这个缓冲区的大小,或者确实如果我的假设是真的.在我的应用程序中,时序至关重要,只要读缓冲区中有新字节,我就需要发出警报.这可能,而不深入研究内核代码?
您想要使用串行 IOCTL TIOCSSERIAL,它允许更改接收缓冲区深度和发送缓冲区深度(除其他外)。最大值取决于您的硬件,但如果使用 16550A,则最大缓冲区深度为 14。
您可以在此处找到与您想要执行的操作类似的代码
原来的链接坏了:http://www.groupsrv.com/linux/about57282.html 新的链接必须做,直到我写另一个或找到更好的例子。
| 归档时间: |
|
| 查看次数: |
13821 次 |
| 最近记录: |