2015-06-14 23 views
2

我知道使用帶有FIONREAD的ioctl可以獲得串口輸入緩衝區中的字節數,例如在「POSIX操作系統串行編程指南」(鏈接:http://www.cmrr.umn.edu/~strupp/serial.html#5_1_3)中所示。有沒有辦法爲輸出緩衝區做同樣的事情?Unix串口編程:如何獲取輸出緩衝區中的字節數?

我問,因爲我想知道何時傳輸了所有字節。

在Windows上,這可以通過查看COMSTAT結構中的cbOutQue來完成,但是我仍然沒有找到在基於Unix的系統中這樣做的方法。

回答

0

如果操作系統支持它,你可以考慮ioctl TIOCOUTQ。

像TIOCINQ/FIONREAD它不是POSIX。

+0

謝謝。讀取ioctl的TIOCOUTQ始終返回0。這是因爲Mac OS X不支持它嗎?我無法在Internet上找到關於TIOCOUTQ的許多信息... – pvh1987

+0

基於此[man-page](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man4/tty .4.html)看起來像Mac OS X至少支持v10.9的TIOCOUTQ。 爲確保您獲得非零輸出緩衝區隊列大小,您可能需要啓用硬件流控制(RTS/CTS)並斷開物理串行電纜連接,然後我認爲在寫入串行端口。 – d99kris

+0

謝謝:-)好主意用RTS/CTS流量控制進行測試。經過一些測試後我會回來的。 – pvh1987