GUI #70
|
@ -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
tec_params, PEP8 and consistency with the two variables above