diff options
| author | Christian Kolset <christian.kolset@gmail.com> | 2026-04-27 16:53:14 -0600 |
|---|---|---|
| committer | Christian Kolset <christian.kolset@gmail.com> | 2026-04-27 16:53:14 -0600 |
| commit | 2b9943ba0d28449a590acfa8a41555b174b6ba84 (patch) | |
| tree | e8bef8c9bc61dd7e2f9c8a9b177058a4b09546db /ui/main_window.py | |
| parent | 67cfa0a514c7de4605ed7360e15a81aa781e510e (diff) | |
Improved arduino interface. Now allowing the user to configure pins on the fly.
Diffstat (limited to 'ui/main_window.py')
| -rw-r--r-- | ui/main_window.py | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ui/main_window.py b/ui/main_window.py index 483ca49..0bb62f6 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -27,8 +27,8 @@ class _WheelBlocker(QObject): return True return super().eventFilter(obj, event) -from devices.analog_input import AnalogInputDevice -from devices.digital_io import DigitalIODevice +from devices.arduino_device import ArduinoDevice +from devices.nidaqmx_device import NidaqmxDevice from devices.serial_device import SerialDevice from devices.device_registry import DeviceRegistry from core.acquisition import AcquisitionEngine @@ -75,15 +75,10 @@ class MainWindow(QMainWindow): # ── Demo ────────────────────────────────────────────────────────────── def _init_demo_devices(self): - # NOTE: if you have a real Arduino, configure ard_0 and dio_0 to use - # the same port — port_registry ensures only one serial connection - # is opened, and both devices share it automatically. for dev in [ - AnalogInputDevice(device_id="ai_0", num_channels=4, simulate=True, backend="nidaqmx"), - AnalogInputDevice(device_id="ard_0", num_channels=1, simulate=True, backend="arduino"), - DigitalIODevice (device_id="dio_0", num_inputs=2, num_outputs=4, - simulate=True, backend="arduino"), - SerialDevice (device_id="ser_0", num_channels=3, simulate=True), + NidaqmxDevice(device_id="ni_0", num_analog=4, num_di=2, num_do=4, simulate=True), + ArduinoDevice(device_id="ard_0", num_analog=4, num_di=2, num_do=4, simulate=True), + SerialDevice (device_id="ser_0", num_channels=3, simulate=True), ]: dev.connect() self.registry.add_instance(dev) @@ -217,6 +212,7 @@ class MainWindow(QMainWindow): self._win_devices.device_added.connect(self._on_device_added) self._win_devices.device_removed.connect(self._on_device_removed) self._win_devices.device_reconfigured.connect(self._on_device_reconfigured) + self._win_devices.channel_visibility_changed.connect(self._on_channel_visibility_changed) self._win_devices.closed.connect(lambda: self._btn_devices.setChecked(False)) self._show_win(self._win_devices, "right") @@ -225,6 +221,7 @@ class MainWindow(QMainWindow): self._win_signals = SignalsWindow(self.registry, self.processor, self) self._win_signals.derived_changed.connect(self._on_derived_changed) self._win_signals.visibility_changed.connect(self._chart.refresh) + self._win_signals.channel_toggled.connect(self._on_channel_visibility_changed) self._win_signals.closed.connect(lambda: self._btn_signals.setChecked(False)) self._show_win(self._win_signals, "right") @@ -341,6 +338,13 @@ class MainWindow(QMainWindow): if self._win_plot: self._win_plot.refresh_channels() self._status.setText(f"Device '{dev_id}' reconfigured.") + def _on_channel_visibility_changed(self, dev_id: str, ch_id: str, enabled: bool): + self._chart.on_channel_enabled_changed(dev_id, ch_id, enabled) + if self._win_signals: + self._win_signals.on_channel_enabled_changed(dev_id, ch_id, enabled) + if self._win_plot: + self._win_plot.refresh_channels() + def _on_derived_changed(self): self._chart.refresh() if self._win_plot: self._win_plot.refresh_channels() |
