我目前正在使用 pyserial 和 pyqtgraph 编写一个 python 脚本,该脚本绘制通过串行端口从加速度计传入的数据。我将此数据附加到一个 int 数组并使用它来更新绘图。目前,我的图形宽度是 500(我只显示最近的 500 个元素),我通过将一个元素附加到末尾并从头弹出来“滚动”或“滚动”。
data1 = [0] * 500
def update():
global curve1, data1, x, ser
if(ser != None): ## serial object. defined via a QPushButton event
line = ser.readline()
csv = line.decode().split(',')
if len(csv) == 2:
data1.append(int(csv[1]))
data1.pop(0)
xdata1 = np.array(data1[-500:], dtype='int')
curve1.setData(xdata1)
x += 1
curve1.setPos(x, 0)
app.processEvents()
这个更新方法被 QtTimer 对象调用来更新绘图窗口
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(0)
这样我就避免了一个不断增长的数组,也避免了通过向左移动元素来复制值。然而,我的情节不一致并且偶尔会滞后(当我移动传感器时,情节会在几秒钟后做出反应)。这是因为我的数据滚动效率低吗?
回首忆惘然
慕码人2483693
相关分类