2017-03-01 45 views
0

我們有一些工作代碼使用Boost asio與串口通信。我們一直在觀察的一件事是,這種溝通並不是實時的,並且存在一些明顯的延遲。使用Boost asio實時串行I/O

我們希望收到併發送帶有延遲列表數量的串行端口上的所有數據。這意味着我們希望在讀寫時避免任何緩衝,因爲缺乏明確的清除調用而導致任何批處理,或避免可能使用自己的線程的正常優先級的Boost異步調用增加延遲。

是否有任何示例代碼使用Boost asio進行串行端口通信,延遲時間最短的實時場景?如果示例代碼是TCP/UDP端口,我想我們可能仍然可以適應它...

回答

1

ASIO並不真的提供這樣的東西。你最好直接用串口進行操作,而不是像在CPU上徵稅一樣。

禁用輸入緩衝類似於fcntl(fd, F_SETFL, FNDELAY);,現在讀取總是儘快返回,即使阻塞I/O打開。

強制寫入發送類似於tcdrain()

自從我上次寫了串行I/O代碼已經很多年了,但以上是您的良好開端。

相關問題