sweep feature added

This commit is contained in:
Ayzen
2026-10-09 19:45:30 +03:00
parent 62e0430668
commit a1386e2588
8 changed files with 241 additions and 6 deletions
+24
View File
@@ -12,6 +12,7 @@ from laser_control import (
DeviceNotRespondingError,
LaserController,
)
from laser_control.models import SweepSettings, SweepTarget
class ControllerWorker(QObject):
@@ -117,6 +118,16 @@ class ControllerWorker(QObject):
)
)
@pyqtSlot(object)
def apply_sweep(self, settings: object) -> None:
"""Start or stop a firmware staircase sweep."""
self._run_command(
lambda: (
self._ensure_connected(),
self._apply_sweep_impl(settings),
)
)
@pyqtSlot(object)
def save_profile(self, request: object) -> None:
"""Save the current GUI configuration to the device SD card."""
@@ -292,6 +303,19 @@ class ControllerWorker(QObject):
)
self._emit_status()
def _apply_sweep_impl(self, settings: SweepSettings) -> None:
self._controller.configure_sweep(settings)
output = "STM32 DAC" if settings.target == SweepTarget.STM32_DAC else "Laser 2 current"
if settings.enabled:
self.log_message.emit(
"INFO",
f"{output} sweep started: codes {settings.min_code}..{settings.max_code} "
f"step {settings.step_code}, {settings.step_period_us} us/step, pause {settings.pause_ms} ms",
)
else:
self.log_message.emit("INFO", f"{output} sweep stopped")
self._emit_status()
def _save_profile_impl(self, request: object) -> None:
self._controller.save_profile_to_sd(request)
profile_name = getattr(request, "profile_name", "<unnamed>")