forked from M-Labs/thermostat
plot both channel temperatures
This commit is contained in:
parent
7b8d25f160
commit
2cfd162498
|
@ -0,0 +1,86 @@
|
|||
from pyqtgraph.Qt import QtGui, QtCore
|
||||
import numpy as np
|
||||
import pyqtgraph as pg
|
||||
from pytec.client import Client
|
||||
|
||||
rec_len = 1000
|
||||
refresh_period = 20
|
||||
|
||||
channel_data = [{
|
||||
'adc': np.zeros(rec_len),
|
||||
'sens': np.zeros(rec_len),
|
||||
'temperature': np.zeros(rec_len),
|
||||
'i_set': np.zeros(rec_len),
|
||||
'pid_output': np.zeros(rec_len),
|
||||
'vref': np.zeros(rec_len),
|
||||
'dac_value': np.zeros(rec_len),
|
||||
'dac_feedback': np.zeros(rec_len),
|
||||
'i_tec': np.zeros(rec_len),
|
||||
'tec_i': np.zeros(rec_len),
|
||||
'tec_u_meas': np.zeros(rec_len),
|
||||
'interval': np.zeros(rec_len),
|
||||
'temp_set': np.zeros(rec_len),
|
||||
} for _ in range(2)]
|
||||
|
||||
tec = Client()
|
||||
|
||||
app = pg.mkQApp()
|
||||
mw = QtGui.QMainWindow()
|
||||
mw.setWindowTitle('Thermostat Control Panel')
|
||||
mw.resize(800,800)
|
||||
cw = QtGui.QWidget()
|
||||
mw.setCentralWidget(cw)
|
||||
l = QtGui.QVBoxLayout()
|
||||
cw.setLayout(l)
|
||||
|
||||
pg.setConfigOptions(antialias=True)
|
||||
|
||||
pw0= pg.PlotWidget(name='Channel 0')
|
||||
l.addWidget(pw0)
|
||||
pw1 = pg.PlotWidget(name='Channel 1')
|
||||
l.addWidget(pw1)
|
||||
|
||||
curve0 = pw0.plot()
|
||||
curve1 = pw1.plot()
|
||||
|
||||
cnt = 0
|
||||
time_stamp = np.zeros(rec_len)
|
||||
def update(n):
|
||||
global cnt
|
||||
for data in tec.report_mode():
|
||||
ch = data[n]
|
||||
for tag, seq in channel_data[n].items():
|
||||
if tag in ch:
|
||||
v = ch[tag]
|
||||
if type(v) is float:
|
||||
if cnt == 0:
|
||||
np.copyto(seq, np.full(rec_len, v))
|
||||
else:
|
||||
seq[:-1] = seq[1:]
|
||||
seq[-1] = v
|
||||
if quit:
|
||||
break
|
||||
return
|
||||
|
||||
def updateData():
|
||||
global cnt
|
||||
update(0)
|
||||
update(1)
|
||||
cnt += 1
|
||||
time_stamp[:-1] = time_stamp[1:]
|
||||
time_stamp[-1] = cnt * refresh_period / 1000
|
||||
pw0.setRange(xRange=[cnt * refresh_period / 1000 - 20.0, cnt * refresh_period / 1000])
|
||||
pw1.setRange(xRange=[cnt * refresh_period / 1000 - 20.0, cnt * refresh_period / 1000])
|
||||
curve0.setData(x = time_stamp, y = channel_data[0]['temperature'])
|
||||
curve1.setData(x = time_stamp, y = channel_data[1]['temperature'])
|
||||
|
||||
|
||||
## Start a timer to rapidly update the plot in pw
|
||||
t = QtCore.QTimer()
|
||||
t.timeout.connect(updateData)
|
||||
t.start(refresh_period)
|
||||
|
||||
mw.show()
|
||||
|
||||
if __name__ == '__main__':
|
||||
pg.exec()
|
Loading…
Reference in New Issue