sweep feature added
This commit is contained in:
@@ -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>")
|
||||
|
||||
Reference in New Issue
Block a user