sw: update reference graph options

This commit is contained in:
Phil
2026-05-26 16:16:15 +03:00
parent 07ffb31651
commit d925a4ffaa
2 changed files with 74 additions and 5 deletions

View File

@ -10,7 +10,7 @@ from dataclasses import dataclass
from PyQt6.QtCore import QProcess, QTimer
from PyQt6.QtCore import QObject, QThread, pyqtSignal
from PyQt6.QtCore import Qt
import pyqtgraph as pg
from PyQt6.QtWidgets import QApplication, QMainWindow
@ -574,9 +574,23 @@ class MainWindow(QMainWindow):
self.graph_widget.setLabel("bottom", "Sample")
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_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):
self._bind_spinbox_setting(
@ -655,8 +669,8 @@ class MainWindow(QMainWindow):
def on_data_received(self, data: list[int]):
self.data = data
x = list(range(len(data)))
self.graph_curve.setData(x, data)
self.draw_main_graph()
self.update_reference_graph()
if data:
self.set_measurement_status(
@ -684,6 +698,54 @@ class MainWindow(QMainWindow):
if hasattr(self, "label_ping_status"):
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():
app = QApplication(sys.argv)

View File

@ -23,7 +23,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@ -409,6 +409,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_draw_reference">
<property name="text">
<string>Отрисовка эталона</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">