Added selection of com ports.

This commit is contained in:
jupfi 2023-07-31 13:20:14 +02:00
parent 14d14488c7
commit d820efb16c
6 changed files with 53 additions and 3 deletions

View file

@ -24,6 +24,7 @@ dependencies = [
"matplotlib", "matplotlib",
"pyqt6", "pyqt6",
"NQRduck", "NQRduck",
"pyserial",
] ]
[project.entry-points."nqrduck"] [project.entry-points."nqrduck"]

View file

@ -1,4 +1,17 @@
import logging
from serial.tools.list_ports import comports
from nqrduck.module.module_controller import ModuleController from nqrduck.module.module_controller import ModuleController
logger = logging.getLogger(__name__)
class AutoTMController(ModuleController): class AutoTMController(ModuleController):
pass
def find_devices(self):
"""Scan for available serial devices and add them to the model as available devices. """
logger.debug("Scanning for available serial devices")
ports = comports()
self.module.model.available_devices = [port.device for port in ports]
logger.debug("Found %s devices", len(self.module.model.available_devices))
for device in self.module.model.available_devices:
logger.debug("Found device: %s", device)

View file

@ -1,4 +1,14 @@
from PyQt6.QtCore import pyqtSignal
from nqrduck.module.module_model import ModuleModel from nqrduck.module.module_model import ModuleModel
class AutoTMModel(ModuleModel): class AutoTMModel(ModuleModel):
pass available_devices_changed = pyqtSignal(list)
@property
def available_devices(self):
return self._available_devices
@available_devices.setter
def available_devices(self, value):
self._available_devices = value
self.available_devices_changed.emit(value)

View file

@ -54,6 +54,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<widget class="QPushButton" name="refreshButton">
<property name="text">
<string>Refresh</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

View file

@ -1,5 +1,6 @@
import logging import logging
from PyQt6.QtWidgets import QWidget from PyQt6.QtWidgets import QWidget
from PyQt6.QtCore import pyqtSlot
from nqrduck.module.module_view import ModuleView from nqrduck.module.module_view import ModuleView
from .widget import Ui_Form from .widget import Ui_Form
@ -13,4 +14,18 @@ class AutoTMView(ModuleView):
widget = QWidget() widget = QWidget()
self._ui_form = Ui_Form() self._ui_form = Ui_Form()
self._ui_form.setupUi(self) self._ui_form.setupUi(self)
self.widget = widget self.widget = widget
# On clicking of the refresh button scan for available usb devices
self._ui_form.refreshButton.clicked.connect(self.module.controller.find_devices)
# Connect the available devices changed signal to the on_available_devices_changed slot
self.module.model.available_devices_changed.connect(self.on_available_devices_changed)
@pyqtSlot(list)
def on_available_devices_changed(self, available_devices):
"""Update the available devices list in the view. """
logger.debug("Updating available devices list")
self._ui_form.portBox.clear()
self._ui_form.portBox.addItems(available_devices)
logger.debug("Updated available devices list")

View file

@ -40,6 +40,9 @@ class Ui_Form(object):
self.pushButton = QtWidgets.QPushButton(parent=Form) self.pushButton = QtWidgets.QPushButton(parent=Form)
self.pushButton.setObjectName("pushButton") self.pushButton.setObjectName("pushButton")
self.gridLayout_2.addWidget(self.pushButton, 1, 1, 1, 1) self.gridLayout_2.addWidget(self.pushButton, 1, 1, 1, 1)
self.refreshButton = QtWidgets.QPushButton(parent=Form)
self.refreshButton.setObjectName("refreshButton")
self.gridLayout_2.addWidget(self.refreshButton, 1, 0, 1, 1)
self.verticalLayout_2.addLayout(self.gridLayout_2) self.verticalLayout_2.addLayout(self.gridLayout_2)
self.label_3 = QtWidgets.QLabel(parent=Form) self.label_3 = QtWidgets.QLabel(parent=Form)
font = QtGui.QFont() font = QtGui.QFont()
@ -123,6 +126,7 @@ class Ui_Form(object):
self.label_2.setText(_translate("Form", "Connection Settings:")) self.label_2.setText(_translate("Form", "Connection Settings:"))
self.label.setText(_translate("Form", "Port:")) self.label.setText(_translate("Form", "Port:"))
self.pushButton.setText(_translate("Form", "Connect")) self.pushButton.setText(_translate("Form", "Connect"))
self.refreshButton.setText(_translate("Form", "Refresh"))
self.label_3.setText(_translate("Form", "T&M Type:")) self.label_3.setText(_translate("Form", "T&M Type:"))
self.label_4.setText(_translate("Form", "Frequency Sweep:")) self.label_4.setText(_translate("Form", "Frequency Sweep:"))
self.label_8.setText(_translate("Form", "MHz")) self.label_8.setText(_translate("Form", "MHz"))