sw: update reference graph options
This commit is contained in:
@ -10,7 +10,7 @@ from dataclasses import dataclass
|
|||||||
from PyQt6.QtCore import QProcess, QTimer
|
from PyQt6.QtCore import QProcess, QTimer
|
||||||
from PyQt6.QtCore import QObject, QThread, pyqtSignal
|
from PyQt6.QtCore import QObject, QThread, pyqtSignal
|
||||||
|
|
||||||
|
from PyQt6.QtCore import Qt
|
||||||
import pyqtgraph as pg
|
import pyqtgraph as pg
|
||||||
from PyQt6.QtWidgets import QApplication, QMainWindow
|
from PyQt6.QtWidgets import QApplication, QMainWindow
|
||||||
|
|
||||||
@ -574,9 +574,23 @@ class MainWindow(QMainWindow):
|
|||||||
self.graph_widget.setLabel("bottom", "Sample")
|
self.graph_widget.setLabel("bottom", "Sample")
|
||||||
self.graph_widget.showGrid(x=True, y=True)
|
self.graph_widget.showGrid(x=True, y=True)
|
||||||
|
|
||||||
self.graph_curve = self.graph_widget.plot([])
|
self.graph_curve = self.graph_widget.plot(
|
||||||
|
[],
|
||||||
|
name="Data",
|
||||||
|
)
|
||||||
|
|
||||||
|
self.reference_curve = self.graph_widget.plot(
|
||||||
|
[],
|
||||||
|
name="Reference",
|
||||||
|
)
|
||||||
|
|
||||||
self.graph_layout.addWidget(self.graph_widget)
|
self.graph_layout.addWidget(self.graph_widget)
|
||||||
|
self.graph_curve = self.graph_widget.plot([], pen=pg.mkPen(width=2))
|
||||||
|
self.reference_curve = self.graph_widget.plot(
|
||||||
|
[], pen=pg.mkPen(style=Qt.PenStyle.DashLine))
|
||||||
|
|
||||||
|
self.checkbox_draw_reference.stateChanged.connect(
|
||||||
|
self.update_reference_graph)
|
||||||
|
|
||||||
def setup_network_settings(self):
|
def setup_network_settings(self):
|
||||||
self._bind_spinbox_setting(
|
self._bind_spinbox_setting(
|
||||||
@ -655,8 +669,8 @@ class MainWindow(QMainWindow):
|
|||||||
def on_data_received(self, data: list[int]):
|
def on_data_received(self, data: list[int]):
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
||||||
x = list(range(len(data)))
|
self.draw_main_graph()
|
||||||
self.graph_curve.setData(x, data)
|
self.update_reference_graph()
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
self.set_measurement_status(
|
self.set_measurement_status(
|
||||||
@ -684,6 +698,54 @@ class MainWindow(QMainWindow):
|
|||||||
if hasattr(self, "label_ping_status"):
|
if hasattr(self, "label_ping_status"):
|
||||||
self.label_ping_status.setText(text)
|
self.label_ping_status.setText(text)
|
||||||
|
|
||||||
|
def draw_main_graph(self):
|
||||||
|
if not self.data:
|
||||||
|
self.graph_curve.setData([])
|
||||||
|
return
|
||||||
|
|
||||||
|
x = list(range(len(self.data)))
|
||||||
|
self.graph_curve.setData(x, self.data)
|
||||||
|
|
||||||
|
def update_reference_graph(self):
|
||||||
|
"""
|
||||||
|
Рисует или очищает эталонный график.
|
||||||
|
Вызывается после получения данных и при переключении checkbox_draw_reference.
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not self.checkbox_draw_reference.isChecked():
|
||||||
|
self.reference_curve.setData([])
|
||||||
|
return
|
||||||
|
|
||||||
|
if not self.data:
|
||||||
|
self.reference_curve.setData([])
|
||||||
|
return
|
||||||
|
|
||||||
|
reference_data = self.build_reference_data(len(self.data))
|
||||||
|
|
||||||
|
if not reference_data:
|
||||||
|
self.reference_curve.setData([])
|
||||||
|
return
|
||||||
|
|
||||||
|
x = list(range(len(reference_data)))
|
||||||
|
self.reference_curve.setData(x, reference_data)
|
||||||
|
|
||||||
|
def build_reference_data(self, length: int) -> list[int]:
|
||||||
|
"""
|
||||||
|
Тут потом опишешь свою логику построения эталонного сигнала.
|
||||||
|
|
||||||
|
Главное: вернуть массив такой же или нужной тебе длины.
|
||||||
|
Например:
|
||||||
|
reference = [0] * length
|
||||||
|
reference[10:100] = ...
|
||||||
|
return reference
|
||||||
|
"""
|
||||||
|
|
||||||
|
# TODO: сюда вставить свою логику эталонного графика
|
||||||
|
|
||||||
|
reference = [0] * length
|
||||||
|
|
||||||
|
return reference
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab">
|
<widget class="QWidget" name="tab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@ -409,6 +409,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkbox_draw_reference">
|
||||||
|
<property name="text">
|
||||||
|
<string>Отрисовка эталона</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer_2">
|
<spacer name="verticalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|||||||
Reference in New Issue
Block a user