From 4ac1e243f1cb28b3a9bc231a485d88fb7b966d8a Mon Sep 17 00:00:00 2001 From: livefish Date: Sun, 26 Jan 2025 14:07:08 +0300 Subject: [PATCH] Basic QT ui done - mode table to do --- controller/controller_reifined.py | 18 +++++++++----- main.py | 40 +++++++++++++++++++------------ ui.py | 10 ++------ 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/controller/controller_reifined.py b/controller/controller_reifined.py index b804039..e849cb0 100644 --- a/controller/controller_reifined.py +++ b/controller/controller_reifined.py @@ -156,7 +156,7 @@ class ControllerInterface: time.sleep(0.002) self.controller.sendRequest(command_code, target, data) - self.controller.packet_id = self.controller.packet_id + 1 + self.controller.packet_id = (self.controller.packet_id + 1) % 255 return True except SerialException as e: print(e) @@ -165,7 +165,7 @@ class ControllerInterface: def sendPacketWithResponse(self, command_code: int, target: tuple, data: list, throw_if_error=False) -> list: try: self.controller.sendRequest(command_code, target, data) - self.controller.packet_id = self.controller.packet_id + 1 + self.controller.packet_id = (self.controller.packet_id + 1) % 255 return self.controller.readData() except SerialException as e: print(e) @@ -186,10 +186,16 @@ class ControllerInterface: "device info": (0xBF, 0x00), "device mode set": (0xBF, 0x10), "device mode get": (0xBF, 0x11), - # "address": (0x00, 0xF0), - # "device info": (0x00, 0x60), - # "device mode set": (0x00, 0xE0), - # "device mode get": (0x00, 0xE1), + + ##### OLD + # "currents set": (0xBE, 0xEE), + # "currents get": (0xBE, 0xEF), + # "powers set": (0xBE, 0x10), + # "powers get": (0xBE, 0x11), + # "address": (0xBF, 0x20), + # "device info": (0xBF, 0x00), + # "device mode set": (0xBF, 0x10), + # "device mode get": (0xBF, 0x11), } # Currents # diff --git a/main.py b/main.py index 1d2c40d..a59611b 100644 --- a/main.py +++ b/main.py @@ -49,7 +49,8 @@ class Window(QtWidgets.QMainWindow): def clearAllFields(self) -> None: for f in self.currentFields: f.setText("") - + self.ui.ModeSelection.clear() + self.ui.DmxAddressField.clear() def resetStatus(self) -> None: self.setStatus(self.savedStatus) @@ -109,6 +110,7 @@ class Window(QtWidgets.QMainWindow): self.setStatus(f'Чтение адреса {self.controller.controller.ser.port}...') address = self.controller.readAddress() + print(f'Address {address}') if address == -1: self.ui.DmxAddressField.setStyleSheet(self.redLineEdit) @@ -120,6 +122,7 @@ class Window(QtWidgets.QMainWindow): self.setStatus(f'Чтение режимов {self.controller.controller.ser.port}...') dev_info = self.controller.readDeviceInfo() + print(f'Dev info: {dev_info}') if dev_info: mode_count = dev_info[2] for index in range(mode_count): @@ -131,12 +134,14 @@ class Window(QtWidgets.QMainWindow): self.modes.append(mode) time.sleep(0.05) + print(f'Dev info: {dev_info}') if not self.modes: self.ui.ModeSelection.clear() self.ui.ModeSelection.setCurrentText('ERROR') else: self.ui.ModeSelection.setStyleSheet('QComboBox {}') self.ui.ModeSelection.clear() + for m in self.modes: self.ui.ModeSelection.addItem(m[1]) @@ -144,9 +149,12 @@ class Window(QtWidgets.QMainWindow): for index, m in enumerate(self.modes): mode_names.append(f'{index + 1}:{m[1]}') - self.ui.ModeSelection.setCurrentText(mode_names[dev_info[1] - 1]) self.ui.ModeSelection.clear() self.ui.ModeSelection.addItems(mode_names) + self.ui.ModeSelection.setCurrentText(mode_names[dev_info[1] - 1]) + else: + self.ui.ModeSelection.setStyleSheet( + 'QComboBox { background: rgb(255, 0, 0); selection-background-color: rgb(111, 136, 222); }') return values or address != -1 or self.modes @@ -171,7 +179,6 @@ class Window(QtWidgets.QMainWindow): self.connectionLost() return - # TODO Mode is not being written self.setStatus(f'Запись режима в {self.controller.controller.ser.port}...') if not self.controller.writeMode(self.ui.ModeSelection.currentIndex() + 1): self.connectionLost() @@ -183,7 +190,7 @@ class Window(QtWidgets.QMainWindow): else: time.sleep(0.5) dmx_save = self.ui.DmxAddressField.text() - pers_save = self.ui.Personality.text() + pers_save = self.ui.ModeSelection.currentText() currents_save = [] for entry in self.currentFields: currents_save.append(entry.text()) @@ -198,34 +205,35 @@ class Window(QtWidgets.QMainWindow): time.sleep(1) currents_real = self.controller.readCurrents() - + print(f'Save: {dmx_save}, {pers_save}, {currents_save}') + print(f'Real: {dmx_real}, {dev_info}, {currents_real}') if dmx_real == -1 or not dev_info or not currents_real: self.connectionLost() return pers_real = f'{dev_info[1]}:{self.modes[dev_info[1] - 1][1]}' + print(f'Pers real: {pers_real}') failed = False if dmx_save == "" or int(dmx_save) != dmx_real: failed = True - # TODO self.dmx_address_field.configure(style='failedToRead.TEntry') + self.ui.DmxAddressField.setStyleSheet(self.redLineEdit) else: - ... - # TODO dmx_address_field.configure(style='TEntry') + self.ui.DmxAddressField.setStyleSheet(self.defLineEdit) if pers_save != pers_real: failed = True - # TODO personality_combobox.set('ERROR') + self.ui.ModeSelection.clear() + self.ui.ModeSelection.setStyleSheet('QComboBox { background: rgb(255, 0, 0); selection-background-color: rgb(111, 136, 222); }') else: - ... - # TODOpersonality_combobox.configure(style='TCombobox') + self.ui.ModeSelection.setStyleSheet('QComboBox {}') for index in range(4): if currents_save[index] == "" or int(currents_save[index]) != currents_real[index] * 10: failed = True - # TODO current_entries[index].configure(style='failedToRead.TEntry') + print(f'Failed current: {index}') + self.currentFields[index].setStyleSheet(self.redLineEdit) else: - ... - # TODO current_entries[index].configure(style='TEntry') + self.currentFields[index].setStyleSheet(self.defLineEdit) self.setStatus(f'Выбранный порт: {self.controller.controller.ser.port}') if failed: @@ -234,8 +242,10 @@ class Window(QtWidgets.QMainWindow): self.setTempStatus('Проверка прошла успешно', 1) def refreshDeviceList(self): + selected = self.ui.DeviceSelection.currentText() self.ui.DeviceSelection.clear() self.ui.DeviceSelection.addItems(self.controller.readComPorts()) + self.ui.DeviceSelection.setCurrentText(selected) def readCallback(self) -> None: if time.time() - self.last_click_time < 1: @@ -249,7 +259,7 @@ class Window(QtWidgets.QMainWindow): return self.setStatus(f'Выбранный порт: {self.controller.controller.ser.port}') - self.setTempStatus(f'Токи прочитаны, порт: {self.controller.controller.ser.port}', 1) + self.setTempStatus(f'Данные прочитаны, порт: {self.controller.controller.ser.port}', 1) else: self.setTempStatus('Порт не выбран!', 1) diff --git a/ui.py b/ui.py index 45f7b4e..feb6fed 100644 --- a/ui.py +++ b/ui.py @@ -187,23 +187,17 @@ class Ui_Controller(object): Controller.setWindowTitle(_translate("Controller", "Controller")) self.ComPort.setText(_translate("Controller", "COM Порт:")) self.DmxAddress.setText(_translate("Controller", "DMX Адрес:")) - self.DmxAddressField.setText(_translate("Controller", "10")) - self.DmxAddressField.setPlaceholderText(_translate("Controller", "no data")) + self.DmxAddressField.setPlaceholderText(_translate("Controller", "")) self.Personality.setText(_translate("Controller", "Personality:")) self.Current1.setText(_translate("Controller", " I1")) - self.Current1Field.setText(_translate("Controller", "1000")) self.ma1.setText(_translate("Controller", " mA")) self.Current2.setText(_translate("Controller", " I2")) - self.Current2Field.setText(_translate("Controller", "450")) self.ma2.setText(_translate("Controller", " mA")) self.Current3.setText(_translate("Controller", " I3")) - self.Current3Field.setText(_translate("Controller", "520")) self.ma3.setText(_translate("Controller", " mA")) self.Current4.setText(_translate("Controller", " I4")) - self.Current4Field.setText(_translate("Controller", "780")) self.ma4.setText(_translate("Controller", " mA")) - self.ModeSelection.setItemText(0, _translate("Controller", "28:CH RGB45 SLO")) self.Read.setText(_translate("Controller", "Чтение")) self.Write.setText(_translate("Controller", "Запись")) self.Check.setText(_translate("Controller", "Проверить")) - self.Status.setText(_translate("Controller", "Выбранный порт: /dev/ttyUSB0")) + self.Status.setText(_translate("Controller", "Пожалуйста, выберите порт"))