um24clab/src/um24clab.py

109 lines
3.2 KiB
Python

#!/usr/bin/env python
import sys
import random
from PySide2.QtCore import (
Qt, QTimer
)
from PySide2.QtWidgets import (
QApplication, QMainWindow
)
from PySide2.QtCharts import (
QtCharts
)
from UM24CUI import Ui_MainWindow
class UM24Lab(QMainWindow):
def __init__(self):
super(UM24Lab, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.plotVoltage = QtCharts.QChart()
self.ui.widgetVoltage.setChart(self.ui.plotVoltage)
self.ui.plotCurrent = QtCharts.QChart()
self.ui.widgetCurrent.setChart(self.ui.plotCurrent)
# --- Voltage ---
self.voltage = self.ui.plotVoltage
self.voltage_series = QtCharts.QLineSeries(self)
self.voltage_series.setName('Voltage over time')
self.voltage_series.setUseOpenGL(True)
self.voltage.addSeries(self.voltage_series)
axis_x = QtCharts.QValueAxis()
axis_x.setRange(0, 0)
# axis_x.setTickCount(1)
axis_x.setTickInterval(0.001)
axis_x.setTitleText('Seconds')
self.voltage.addAxis(axis_x, Qt.AlignBottom)
self.voltage_series.attachAxis(axis_x)
axis_y = QtCharts.QValueAxis()
# axis_y.setTickCount(1)
axis_y.setRange(0, 10)
axis_y.setTitleText('Voltage (V)')
self.voltage.addAxis(axis_y, Qt.AlignLeft)
self.voltage_series.attachAxis(axis_y)
# --- Current ---
self.current = self.ui.plotCurrent
self.current_series = QtCharts.QLineSeries(self)
self.current_series.setName('Current over time')
self.current_series.setUseOpenGL(True)
self.current.addSeries(self.current_series)
axis_x = QtCharts.QValueAxis()
axis_x.setRange(0, 60000)
# axis_x.setTickCount(1)
# axis_x.setTickInterval(1)
axis_x.setTitleText('Seconds')
self.current.addAxis(axis_x, Qt.AlignBottom)
self.current_series.attachAxis(axis_x)
axis_y = QtCharts.QValueAxis()
# axis_y.setTickCount(1)
axis_y.setRange(0, 10)
axis_y.setTitleText('Current (A)')
self.current.addAxis(axis_y, Qt.AlignLeft)
self.current_series.attachAxis(axis_y)
self.timer_step = 0
timer = QTimer(self)
timer.timeout.connect(self.update_graphs)
timer.start(10)
def update_graphs(self):
self.voltage_series.append(self.timer_step, random.randint(0, 10))
self.current_series.append(self.timer_step, random.randint(0, 10))
self.timer_step += 1
for axis in self.voltage_series.attachedAxes():
if axis.orientation() == Qt.Orientation.Horizontal:
axis.setRange(0, self.timer_step)
for axis in self.current_series.attachedAxes():
if axis.orientation() == Qt.Orientation.Horizontal:
# axis.setRange(0, self.timer_step)
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
labview = UM24Lab()
labview.show()
# def idle_processor():
# labview.update_graphs()
# app.processEvents()
# mainTimer = QTimer()
# mainTimer.timeout.connect(idle_processor)
# mainTimer.start(0)
sys.exit(app.exec_())