0
我有一些需要從串口設備讀取的代碼。這是一個輪詢功能,被調用率爲r
。使用boost asio從串口讀取最新數據
該設備吐出數據輸出線由\r\n
分開,其快速,在100Hz左右。每當我輪詢時,我想讀取整個串行緩衝區。我發現這很難用boost :: asio做,因爲它似乎沒有爲我提供available()
函數。
我試過的方法之一是使用read_until()
,但它不能解決我的問題,因爲在\r\n
^停止在緩衝區後可能有更新的數據。
我在讀取緩衝區後嘗試使用consume()
,但直到我知道我已經從設備讀取最新數據後,仍然是黑客作業。
任何人都有關於此問題的建議?
這是你必須照顧好自己的事情,boost :: asio不認爲'\ r \ n'是所有特別的東西。使用緩衝區。 –
@HansPassant當然,我也考慮過這個問題,並使用read_until()函數來處理它。但是我在想的是,如果我使用read_until(),它將從緩衝棧頂部讀取數據。我想要的數據是最新的,因此將在堆棧的底部。我如何反轉緩衝區? – Nopestradamus
只是不補充緩衝區,直到它是空的。串口驅動程序已經有一個接收緩衝區。 –