Basic QT ui done - mode table to do

This commit is contained in:
2025-01-26 14:07:08 +03:00
parent 948a2df60f
commit 4ac1e243f1
3 changed files with 39 additions and 29 deletions

View File

@ -156,7 +156,7 @@ class ControllerInterface:
time.sleep(0.002) time.sleep(0.002)
self.controller.sendRequest(command_code, target, data) 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 return True
except SerialException as e: except SerialException as e:
print(e) print(e)
@ -165,7 +165,7 @@ class ControllerInterface:
def sendPacketWithResponse(self, command_code: int, target: tuple, data: list, throw_if_error=False) -> list: def sendPacketWithResponse(self, command_code: int, target: tuple, data: list, throw_if_error=False) -> list:
try: try:
self.controller.sendRequest(command_code, target, data) 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() return self.controller.readData()
except SerialException as e: except SerialException as e:
print(e) print(e)
@ -186,10 +186,16 @@ class ControllerInterface:
"device info": (0xBF, 0x00), "device info": (0xBF, 0x00),
"device mode set": (0xBF, 0x10), "device mode set": (0xBF, 0x10),
"device mode get": (0xBF, 0x11), "device mode get": (0xBF, 0x11),
# "address": (0x00, 0xF0),
# "device info": (0x00, 0x60), ##### OLD
# "device mode set": (0x00, 0xE0), # "currents set": (0xBE, 0xEE),
# "device mode get": (0x00, 0xE1), # "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 # # Currents #

40
main.py
View File

@ -49,7 +49,8 @@ class Window(QtWidgets.QMainWindow):
def clearAllFields(self) -> None: def clearAllFields(self) -> None:
for f in self.currentFields: for f in self.currentFields:
f.setText("") f.setText("")
self.ui.ModeSelection.clear()
self.ui.DmxAddressField.clear()
def resetStatus(self) -> None: def resetStatus(self) -> None:
self.setStatus(self.savedStatus) self.setStatus(self.savedStatus)
@ -109,6 +110,7 @@ class Window(QtWidgets.QMainWindow):
self.setStatus(f'Чтение адреса {self.controller.controller.ser.port}...') self.setStatus(f'Чтение адреса {self.controller.controller.ser.port}...')
address = self.controller.readAddress() address = self.controller.readAddress()
print(f'Address {address}')
if address == -1: if address == -1:
self.ui.DmxAddressField.setStyleSheet(self.redLineEdit) self.ui.DmxAddressField.setStyleSheet(self.redLineEdit)
@ -120,6 +122,7 @@ class Window(QtWidgets.QMainWindow):
self.setStatus(f'Чтение режимов {self.controller.controller.ser.port}...') self.setStatus(f'Чтение режимов {self.controller.controller.ser.port}...')
dev_info = self.controller.readDeviceInfo() dev_info = self.controller.readDeviceInfo()
print(f'Dev info: {dev_info}')
if dev_info: if dev_info:
mode_count = dev_info[2] mode_count = dev_info[2]
for index in range(mode_count): for index in range(mode_count):
@ -131,12 +134,14 @@ class Window(QtWidgets.QMainWindow):
self.modes.append(mode) self.modes.append(mode)
time.sleep(0.05) time.sleep(0.05)
print(f'Dev info: {dev_info}')
if not self.modes: if not self.modes:
self.ui.ModeSelection.clear() self.ui.ModeSelection.clear()
self.ui.ModeSelection.setCurrentText('ERROR') self.ui.ModeSelection.setCurrentText('ERROR')
else: else:
self.ui.ModeSelection.setStyleSheet('QComboBox {}') self.ui.ModeSelection.setStyleSheet('QComboBox {}')
self.ui.ModeSelection.clear() self.ui.ModeSelection.clear()
for m in self.modes: for m in self.modes:
self.ui.ModeSelection.addItem(m[1]) self.ui.ModeSelection.addItem(m[1])
@ -144,9 +149,12 @@ class Window(QtWidgets.QMainWindow):
for index, m in enumerate(self.modes): for index, m in enumerate(self.modes):
mode_names.append(f'{index + 1}:{m[1]}') 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.clear()
self.ui.ModeSelection.addItems(mode_names) 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 return values or address != -1 or self.modes
@ -171,7 +179,6 @@ class Window(QtWidgets.QMainWindow):
self.connectionLost() self.connectionLost()
return return
# TODO Mode is not being written
self.setStatus(f'Запись режима в {self.controller.controller.ser.port}...') self.setStatus(f'Запись режима в {self.controller.controller.ser.port}...')
if not self.controller.writeMode(self.ui.ModeSelection.currentIndex() + 1): if not self.controller.writeMode(self.ui.ModeSelection.currentIndex() + 1):
self.connectionLost() self.connectionLost()
@ -183,7 +190,7 @@ class Window(QtWidgets.QMainWindow):
else: else:
time.sleep(0.5) time.sleep(0.5)
dmx_save = self.ui.DmxAddressField.text() dmx_save = self.ui.DmxAddressField.text()
pers_save = self.ui.Personality.text() pers_save = self.ui.ModeSelection.currentText()
currents_save = [] currents_save = []
for entry in self.currentFields: for entry in self.currentFields:
currents_save.append(entry.text()) currents_save.append(entry.text())
@ -198,34 +205,35 @@ class Window(QtWidgets.QMainWindow):
time.sleep(1) time.sleep(1)
currents_real = self.controller.readCurrents() 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: if dmx_real == -1 or not dev_info or not currents_real:
self.connectionLost() self.connectionLost()
return return
pers_real = f'{dev_info[1]}:{self.modes[dev_info[1] - 1][1]}' pers_real = f'{dev_info[1]}:{self.modes[dev_info[1] - 1][1]}'
print(f'Pers real: {pers_real}')
failed = False failed = False
if dmx_save == "" or int(dmx_save) != dmx_real: if dmx_save == "" or int(dmx_save) != dmx_real:
failed = True failed = True
# TODO self.dmx_address_field.configure(style='failedToRead.TEntry') self.ui.DmxAddressField.setStyleSheet(self.redLineEdit)
else: else:
... self.ui.DmxAddressField.setStyleSheet(self.defLineEdit)
# TODO dmx_address_field.configure(style='TEntry')
if pers_save != pers_real: if pers_save != pers_real:
failed = True 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: else:
... self.ui.ModeSelection.setStyleSheet('QComboBox {}')
# TODOpersonality_combobox.configure(style='TCombobox')
for index in range(4): for index in range(4):
if currents_save[index] == "" or int(currents_save[index]) != currents_real[index] * 10: if currents_save[index] == "" or int(currents_save[index]) != currents_real[index] * 10:
failed = True failed = True
# TODO current_entries[index].configure(style='failedToRead.TEntry') print(f'Failed current: {index}')
self.currentFields[index].setStyleSheet(self.redLineEdit)
else: else:
... self.currentFields[index].setStyleSheet(self.defLineEdit)
# TODO current_entries[index].configure(style='TEntry')
self.setStatus(f'Выбранный порт: {self.controller.controller.ser.port}') self.setStatus(f'Выбранный порт: {self.controller.controller.ser.port}')
if failed: if failed:
@ -234,8 +242,10 @@ class Window(QtWidgets.QMainWindow):
self.setTempStatus('Проверка прошла успешно', 1) self.setTempStatus('Проверка прошла успешно', 1)
def refreshDeviceList(self): def refreshDeviceList(self):
selected = self.ui.DeviceSelection.currentText()
self.ui.DeviceSelection.clear() self.ui.DeviceSelection.clear()
self.ui.DeviceSelection.addItems(self.controller.readComPorts()) self.ui.DeviceSelection.addItems(self.controller.readComPorts())
self.ui.DeviceSelection.setCurrentText(selected)
def readCallback(self) -> None: def readCallback(self) -> None:
if time.time() - self.last_click_time < 1: if time.time() - self.last_click_time < 1:
@ -249,7 +259,7 @@ class Window(QtWidgets.QMainWindow):
return return
self.setStatus(f'Выбранный порт: {self.controller.controller.ser.port}') 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: else:
self.setTempStatus('Порт не выбран!', 1) self.setTempStatus('Порт не выбран!', 1)

10
ui.py
View File

@ -187,23 +187,17 @@ class Ui_Controller(object):
Controller.setWindowTitle(_translate("Controller", "Controller")) Controller.setWindowTitle(_translate("Controller", "Controller"))
self.ComPort.setText(_translate("Controller", "COM Порт:")) self.ComPort.setText(_translate("Controller", "COM Порт:"))
self.DmxAddress.setText(_translate("Controller", "DMX Адрес:")) self.DmxAddress.setText(_translate("Controller", "DMX Адрес:"))
self.DmxAddressField.setText(_translate("Controller", "10")) self.DmxAddressField.setPlaceholderText(_translate("Controller", ""))
self.DmxAddressField.setPlaceholderText(_translate("Controller", "no data"))
self.Personality.setText(_translate("Controller", "Personality:")) self.Personality.setText(_translate("Controller", "Personality:"))
self.Current1.setText(_translate("Controller", " I1")) self.Current1.setText(_translate("Controller", " I1"))
self.Current1Field.setText(_translate("Controller", "1000"))
self.ma1.setText(_translate("Controller", " mA")) self.ma1.setText(_translate("Controller", " mA"))
self.Current2.setText(_translate("Controller", " I2")) self.Current2.setText(_translate("Controller", " I2"))
self.Current2Field.setText(_translate("Controller", "450"))
self.ma2.setText(_translate("Controller", " mA")) self.ma2.setText(_translate("Controller", " mA"))
self.Current3.setText(_translate("Controller", " I3")) self.Current3.setText(_translate("Controller", " I3"))
self.Current3Field.setText(_translate("Controller", "520"))
self.ma3.setText(_translate("Controller", " mA")) self.ma3.setText(_translate("Controller", " mA"))
self.Current4.setText(_translate("Controller", " I4")) self.Current4.setText(_translate("Controller", " I4"))
self.Current4Field.setText(_translate("Controller", "780"))
self.ma4.setText(_translate("Controller", " mA")) self.ma4.setText(_translate("Controller", " mA"))
self.ModeSelection.setItemText(0, _translate("Controller", "28:CH RGB45 SLO"))
self.Read.setText(_translate("Controller", "Чтение")) self.Read.setText(_translate("Controller", "Чтение"))
self.Write.setText(_translate("Controller", "Запись")) self.Write.setText(_translate("Controller", "Запись"))
self.Check.setText(_translate("Controller", "Проверить")) self.Check.setText(_translate("Controller", "Проверить"))
self.Status.setText(_translate("Controller", "Выбранный порт: /dev/ttyUSB0")) self.Status.setText(_translate("Controller", "Пожалуйста, выберите порт"))