问题描述
我正在尝试使用pyqtgraph在python中创建实时绘图。从仪器接收的数据是每次更新300个值的数组,我希望可以实时绘制数据。
from pyvirtualbench import PyVirtualBench,PyVirtualBenchException,Waveform
from itertools import count
import numpy as np
from pyqtgraph.Qt import QtGui,QtCore
import pyqtgraph as pg
import time
import sys
virtualbench = PyVirtualBench('VirtualBench')
# oscilloscope
mso = virtualbench.acquire_mixed_signal_oscilloscope()
# Configure the acquisition using auto setup
mso.auto_setup()
# Query the configuration that was chosen to properly interpret the data.
sample_rate,acquisition_time,pretrigger_time,sampling_mode = mso.query_timing()
channels = mso.query_enabled_analog_channels()
print(channels,sample_rate,sampling_mode)
class Graph(object):
def __init__(self):
pg.setConfigOptions(antialias=True)
self.app = QtGui.QApplication([])
self.win = pg.GraphicsWindow()
self.win.setwindowTitle('Spectrum Analyzer')
self.win.setGeometry(5,115,1910,1070)
self.waveform = self.win.addplot(
title='WAVEFORM',row=1,col=1)
# virtual bench stuff
self.sample_rate,self.acquisition_time,self.pretrigger_time,self.sampling_mode = mso.query_timing()
self. channels = mso.query_enabled_analog_channels()
def start(self):
if (sys.flags.interactive != 1) or not hasattr(QtCore,'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
def set_plotdata(self,data_y):
self.waveform.setData(data_y)
self.waveform = self.waveform.plot(pen='c',width=3)
self.waveform.setYRange(0,255,padding=0)
self.waveform.setxrange(0,2 * 100,padding=0.005)
def update(self):
mso.run()
analog_data,analog_data_stride,analog_t0,digital_data,digital_timestamps,digital_t0,trigger_timestamp,trigger_reason = mso.read_analog_digital_u64()
arr = np.array(analog_data[0:1000])
self.set_plotdata(data_y=arr)
def animation(self):
timer = QtCore.QTimer()
timer.timeout.connect(self.update)
timer.start(50)
self.start()
if __name__ == '__main__':
Virtual_bench = Graph()
Virtual_bench.animation()
我遇到以下错误
TypeError: argument 1 has unexpected type `numpy.ndarray`
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)