我目前有一個問題。我正在嘗試寫一個實時繪圖程序。我從Arduino接收數據。我可以成功打開串口並正確讀取信息並繪製圖表。問題是,如果我沒有指定緩衝區大小,輸入緩衝區被認爲是無限的(現在以300Hz-4800Hz讀取數據,你可以想象你的計算機的內存可能會最終填滿並且一切都崩潰了!)。QSerialPort - setReadBufferSize
現在我已經試過類似:
serial->setReadBufferSize(5000);
現在這併成功地設置緩衝區的大小,我用serial->readBufferSize()
確認是否它的工作與否。
問題是一旦緩衝區已滿,程序停止繪圖。現在,我想我應該做的是:
- 設置緩衝區的大小(僅一次)
- 讀串口
- 圖中的數據
- 清除緩衝區(serial->明確的()) 。
重複步驟2 - 4
但這似乎並沒有工作。
我正在利用QCustomPlot
做實時繪圖。
讀取串行數據將其從緩衝區中刪除。我不明白你的問題。如果您讀取數據的速度比接收數據的速度快,則緩衝區不應該填滿。如果不是,請使用RS232流量控制。你爲什麼要清除緩衝區?這隻會丟棄數據。 – 2014-09-01 03:26:03