我正在尝试使用pyqtgraph进行实时绘图。我正在使用Pyserial从和arduino读取数据。我在使用pyqtgraph之前尝试了matplotlib库,但它没有给我我需要绘制的速度。因此,搜索另一种绘制实时数据的方法,我遇到了PyQtgraph。我阅读了文档和很多例子,我发现了这两个例子:
两者都是作为时间的函数绘制的,这是我需要做的。我已修改它们中的每一个以使用Pyserial从Arduino获取数据。问题是它仍然很慢。
这是我正在使用的代码(来自第二个链接):
web.xml
我可以做些什么来随着时间的推移更快地绘制?似乎我用这段代码丢失了一些数据。
真的希望你能帮帮我。
答案 0 :(得分:0)
在更新功能中,尝试调用
self.curve.clear()
在函数的最开始。
答案 1 :(得分:0)
稍微偏离的是这里发生的事情的时间,而不是pyqtgraph细节。您的更新方法是按照QTimer对象以100ms的间隔轮询串行端口,因此在9600波特率下,您的端口可以生成9600bps * .1sec = 960字节。但是,没有参数的serial.Serial.read()默认为size = 1:http://pyserial.readthedocs.io/en/latest/pyserial_api.html#serial.Serial.read
因此,您似乎在更新调用中每100毫秒只读取1个字节:
line = self.raw.read()
所以我的猜测是你应该在读取大小中加入更合理的东西,1024:
line = self.raw.read(1024)
在serial.Serial实例中指定超时:
self.raw=serial.Serial("com4",9600,timeout=0)
这样,读取不会阻塞,只返回缓冲区中可用的全部数据。