reading currents and data
This commit is contained in:
@ -133,7 +133,8 @@ def readControllerCurrentsAndData() -> bool:
|
|||||||
dmx_address_field.delete(0, tk.END)
|
dmx_address_field.delete(0, tk.END)
|
||||||
dmx_address_field.insert(tk.END, str(address))
|
dmx_address_field.insert(tk.END, str(address))
|
||||||
|
|
||||||
global modes
|
global modesself.ui.DeviceSelection.addItems(['/dev/ttyUSB0', '/dev/ttyUSB2'])
|
||||||
|
|
||||||
modes = []
|
modes = []
|
||||||
|
|
||||||
setStatus(f'Чтение режимов {controller.controller.ser.port}...')
|
setStatus(f'Чтение режимов {controller.controller.ser.port}...')
|
||||||
|
123
main.py
123
main.py
@ -1,8 +1,9 @@
|
|||||||
|
import time
|
||||||
|
|
||||||
from PyQt6 import QtCore, QtGui, QtWidgets
|
from PyQt6 import QtCore, QtGui, QtWidgets
|
||||||
from ui import Ui_Controller
|
from ui import Ui_Controller
|
||||||
|
|
||||||
import controller.controller_reifined as controller
|
import controller.controller_reifined as controller
|
||||||
controller = controller.ControllerInterface(controller.ControllerRefined(0xFFFFFFFFFFFF, 0x112233445542))
|
|
||||||
|
|
||||||
class Window(QtWidgets.QMainWindow):
|
class Window(QtWidgets.QMainWindow):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -10,8 +11,29 @@ class Window(QtWidgets.QMainWindow):
|
|||||||
self.ui = Ui_Controller()
|
self.ui = Ui_Controller()
|
||||||
self.ui.setupUi(self)
|
self.ui.setupUi(self)
|
||||||
|
|
||||||
self.hoverFilter = self.ComboBoxHoverEventFilter(self.ui.DeviceSelection, self.hover)
|
# controller
|
||||||
|
self.controller = controller.ControllerInterface(controller.ControllerRefined(0xFFFFFFFFFFFF, 0x112233445542))
|
||||||
|
|
||||||
|
# dev selection
|
||||||
|
self.hoverFilter = self.ComboBoxHoverEventFilter(self.ui.DeviceSelection, self.refreshDeviceList)
|
||||||
|
self.connected = False
|
||||||
|
|
||||||
|
# qt styles
|
||||||
|
self.redLineEdit = "QLineEdit { background: rgb(255, 0, 0); selection-background-color: rgb(111, 136, 222); }"
|
||||||
|
self.defLineEdit = "QLineEdit { }"
|
||||||
|
|
||||||
|
# object containers
|
||||||
|
self.currentFields = [
|
||||||
|
self.ui.Current1Field,
|
||||||
|
self.ui.Current2Field,
|
||||||
|
self.ui.Current3Field,
|
||||||
|
self.ui.Current4Field,
|
||||||
|
]
|
||||||
|
|
||||||
|
# modes, currents, etc
|
||||||
|
self.modes = []
|
||||||
|
|
||||||
|
# connect signals
|
||||||
self.connectMethods()
|
self.connectMethods()
|
||||||
|
|
||||||
class ComboBoxHoverEventFilter(QtCore.QObject):
|
class ComboBoxHoverEventFilter(QtCore.QObject):
|
||||||
@ -21,20 +43,105 @@ class Window(QtWidgets.QMainWindow):
|
|||||||
self.onEnter = onEnter
|
self.onEnter = onEnter
|
||||||
|
|
||||||
def eventFilter(self, obj, event):
|
def eventFilter(self, obj, event):
|
||||||
if event.type() == QtCore.QEvent.Type.Enter: # Наведение мыши
|
if event.type() == QtCore.QEvent.Type.Enter:
|
||||||
self.onEnter()
|
self.onEnter()
|
||||||
return super().eventFilter(obj, event)
|
return super().eventFilter(obj, event)
|
||||||
|
|
||||||
def connectMethods(self):
|
def connectMethods(self):
|
||||||
self.ui.DeviceSelection.addItems(['/dev/ttyUSB1', '/dev/ttyUSB2'])
|
self.ui.DeviceSelection.activated.connect(self.deviceSelected)
|
||||||
self.ui.DeviceSelection.currentTextChanged.connect(self.deviceSelected)
|
|
||||||
self.ui.DeviceSelection.installEventFilter(self.hoverFilter)
|
self.ui.DeviceSelection.installEventFilter(self.hoverFilter)
|
||||||
|
|
||||||
def deviceSelected(self, device: str):
|
def resetAllStyles(self) -> None:
|
||||||
|
for f in self.currentFields:
|
||||||
|
f.setStyleSheet(self.defLineEdit)
|
||||||
|
|
||||||
|
def clearAllFields(self) -> None:
|
||||||
|
for f in self.currentFields:
|
||||||
|
f.setText("")
|
||||||
|
|
||||||
|
def setStatus(self, text: str) -> None :
|
||||||
|
print(text)
|
||||||
|
|
||||||
|
def deviceSelected(self, deviceIndex: int):
|
||||||
|
device = self.ui.DeviceSelection.itemText(deviceIndex)
|
||||||
|
self.connected = False
|
||||||
|
self.resetAllStyles()
|
||||||
|
self.clearAllFields()
|
||||||
|
|
||||||
|
self.setStatus(f'Подключение к {device}...')
|
||||||
|
|
||||||
|
self.controller.close()
|
||||||
|
self.controller.connect(device)
|
||||||
|
|
||||||
print(device)
|
print(device)
|
||||||
|
|
||||||
def hover(self):
|
if self.readControllerCurrentsAndData():
|
||||||
print('a')
|
self.setStatus(f'Выбранный порт: {device}')
|
||||||
|
self.connected = True
|
||||||
|
else:
|
||||||
|
self.setStatus(f'Не удалось подключиться к {device}')
|
||||||
|
self.ui.DeviceSelection.clear()
|
||||||
|
self.connected = False
|
||||||
|
self.controller.close()
|
||||||
|
|
||||||
|
def readControllerCurrentsAndData(self) -> bool:
|
||||||
|
self.setStatus(f'Чтение токов {self.controller.controller.ser.port}...')
|
||||||
|
values = self.controller.readCurrents()
|
||||||
|
|
||||||
|
if not values:
|
||||||
|
for f in self.currentFields:
|
||||||
|
f.setStyleSheet(self.redLineEdit)
|
||||||
|
else:
|
||||||
|
for i, f in enumerate(self.currentFields):
|
||||||
|
f.setStyleSheet(self.defLineEdit)
|
||||||
|
f.setText(str(values[i] * 10))
|
||||||
|
|
||||||
|
self.setStatus(f'Чтение адреса {self.controller.controller.ser.port}...')
|
||||||
|
address = self.controller.readAddress()
|
||||||
|
|
||||||
|
if address == -1:
|
||||||
|
self.ui.DmxAddressField.setStyleSheet(self.redLineEdit)
|
||||||
|
else:
|
||||||
|
self.ui.DmxAddressField.setStyleSheet(self.defLineEdit)
|
||||||
|
self.ui.DmxAddressField.setText(str(address))
|
||||||
|
|
||||||
|
self.modes = []
|
||||||
|
|
||||||
|
self.setStatus(f'Чтение режимов {self.controller.controller.ser.port}...')
|
||||||
|
dev_info = self.controller.readDeviceInfo()
|
||||||
|
if dev_info:
|
||||||
|
mode_count = dev_info[2]
|
||||||
|
for index in range(mode_count):
|
||||||
|
self.setStatus(f'Чтение режима {index + 1} {self.controller.controller.ser.port}...')
|
||||||
|
mode = self.controller.readMode(index)
|
||||||
|
if not mode:
|
||||||
|
self.modes = []
|
||||||
|
break
|
||||||
|
self.modes.append(mode)
|
||||||
|
time.sleep(0.05)
|
||||||
|
|
||||||
|
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])
|
||||||
|
|
||||||
|
mode_names = []
|
||||||
|
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)
|
||||||
|
|
||||||
|
return values or address != -1 or self.modes
|
||||||
|
|
||||||
|
def refreshDeviceList(self):
|
||||||
|
self.ui.DeviceSelection.clear()
|
||||||
|
self.ui.DeviceSelection.addItems(self.controller.readComPorts())
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import sys
|
import sys
|
||||||
|
1
ui.py
1
ui.py
@ -186,7 +186,6 @@ class Ui_Controller(object):
|
|||||||
_translate = QtCore.QCoreApplication.translate
|
_translate = QtCore.QCoreApplication.translate
|
||||||
Controller.setWindowTitle(_translate("Controller", "Controller"))
|
Controller.setWindowTitle(_translate("Controller", "Controller"))
|
||||||
self.ComPort.setText(_translate("Controller", "COM Порт:"))
|
self.ComPort.setText(_translate("Controller", "COM Порт:"))
|
||||||
self.DeviceSelection.setItemText(0, _translate("Controller", "/dev/ttyUSB0"))
|
|
||||||
self.DmxAddress.setText(_translate("Controller", "DMX Адрес:"))
|
self.DmxAddress.setText(_translate("Controller", "DMX Адрес:"))
|
||||||
self.DmxAddressField.setText(_translate("Controller", "10"))
|
self.DmxAddressField.setText(_translate("Controller", "10"))
|
||||||
self.DmxAddressField.setPlaceholderText(_translate("Controller", "no data"))
|
self.DmxAddressField.setPlaceholderText(_translate("Controller", "no data"))
|
||||||
|
Reference in New Issue
Block a user