我目前有一个问题。我正在尝试写一个实时绘图程序。我从Arduino接收数据。我可以成功打开串口并正确读取信息并绘制图表。问题是,如果我没有指定缓冲区大小,输入缓冲区被认为是无限的(现在以300Hz-4800Hz读取数据,你可以想象你的计算机的内存可能会最终填满并且一切都崩溃了!)。QSerialPort - setReadBufferSize
现在我已经试过类似:
serial->setReadBufferSize(5000);
现在这并成功地设置缓冲区的大小,我用serial->readBufferSize()
确认是否它的工作与否。
问题是一旦缓冲区已满,程序停止绘图。现在,我想我应该做的是:
- 设置缓冲区的大小(仅一次)
- 读串口
- 图中的数据
- 清除缓冲区(serial->明确的()) 。
重复步骤2 - 4
但这似乎并没有工作。
我正在利用QCustomPlot
做实时绘图。
读取串行数据将其从缓冲区中删除。我不明白你的问题。如果您读取数据的速度比接收数据的速度快,则缓冲区不应该填满。如果不是,请使用RS232流量控制。你为什么要清除缓冲区?这只会丢弃数据。 – 2014-09-01 03:26:03