我想要獲取數據的活動情節,因爲它是由使用pyqtgraph的儀器收集的。實現pyqtgraph實時數據圖形
數據收集由主進程處理,然後通過連接傳遞給繪製它的子進程。我只是試圖傳遞新數據,並在新數據通過時更新它。
我試圖通過將連接讀取到Qt定時器更新循環內部來實現這一點,但是在連續的更新週期之間傳遞圖形數據(我想追加到該圖形數據)有困難。我忽略了下面的代碼,但基本上我想加入連續的connData,我認爲使用全局將起作用,但由於某種原因,我無法在此處實現。
編輯1:我已經與pyqtgraph例相比,這個問題似乎被傳遞數據給Qtimer的更新過程中,我得到:
NameError:全局名稱「CurveData」沒有定義
我試圖這樣做而不是使用pyqtgraph的多處理模塊的原因是我不想每次都通過連接傳遞整個數據集(我認爲這是必要的)。謝謝!
編輯2:pyqtgraph.multiprocess是否有文檔?
(這是提供原碼)
import multiprocessing
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import pyqtgraph.opengl as gl
import sys
import os
def MakeGraph(conn):
win = pg.GraphicsWindow(title = "test")
win.resize(300,300)
p1 = win.addPlot(title = "test")
curve = p1.plot(pen = 'y')
timer = QtCore.QTimer()
def Update():
try:
ConnData = conn.recv()
ConnData = [float(i) for i in ConnData]
curve.setData(ConnData)
except EOFError:
print "Graph connection closed\n"
timer.stop()
QtGui.QApplication.quit()
timer.timeout.connect(Update)
timer.start(0)
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
修改後的版本:
import multiprocessing
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import pyqtgraph.opengl as gl
import sys
import os
def MakeGraph(conn):
win = pg.GraphicsWindow(title = "test")
win.resize(300,300)
p1 = win.addPlot(title = "test")
curve = p1.plot(pen = 'y')
timer = QtCore.QTimer()
CurveData = []
def Update():
global CurveData
try:
ConnData = conn.recv()
ConnData = [float(i) for i in ConnData]
CurveData = np.append(CurveData,ConnData)
curve.setData(CurveData)
except EOFError:
print "Graph connection closed\n"
timer.stop()
QtGui.QApplication.quit()
timer.timeout.connect(Update)
timer.start(0)
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
謝謝,你的例子適用於我,我可以在我的過程中實現它,它也似乎更優雅。不過,我想知道哪些我可以像例如'pg.GraphicsWindow'在pyqtgraph的例子中,如果我想添加一個標題或更多的陰謀 – EOF
我在執行多個QtProcess的過程時遇到了一些問題。我把從proc = mp.QtProcess()..到..數據= proc.transfer([])放到一個循環,以便我有每個這些對象的列表。這大多數工程,但有時它攤位,我不能ctrl-c出。是否有更穩定的方式來處理產生多個QtProcess-es?謝謝 – EOF
聽起來像一個錯誤。作爲一種解決方法,爲什麼不在一個過程中創建多個圖?無論如何,這似乎是一個更好的方法。 – Luke