Addd reading powers

This commit is contained in:
2025-01-18 16:31:42 +03:00
parent def38b1f54
commit d9f134ea2d
8 changed files with 31 additions and 434 deletions

2
.idea/PowerUI.iml generated
View File

@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" /> <excludeFolder url="file://$MODULE_DIR$/.venv" />
</content> </content>
<orderEntry type="jdk" jdkName="Python 3.12 (PowerUI)" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.13 (PowerUI_QT)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

2
.idea/misc.xml generated
View File

@ -3,5 +3,5 @@
<component name="Black"> <component name="Black">
<option name="sdkName" value="Python 3.12 (PowerUI)" /> <option name="sdkName" value="Python 3.12 (PowerUI)" />
</component> </component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (PowerUI)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 (PowerUI_QT)" project-jdk-type="Python SDK" />
</project> </project>

View File

@ -180,12 +180,15 @@ class ControllerInterface:
targets = { targets = {
"currents set": (0xBE, 0xEE), "currents set": (0xBE, 0xEE),
"currents get": (0xBE, 0xEF), "currents get": (0xBE, 0xEF),
"powers set": (0xBE, 0x10), "powers": (0xBE, 0x10),
"powers get": (0xBE, 0x11), # "address": (0xBF, 0x20),
"address": (0xBF, 0x20), # "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),
"device mode set": (0x00, 0xE0),
"device mode get": (0x00, 0xE1),
} }
# Currents # # Currents #
@ -232,9 +235,9 @@ class ControllerInterface:
return False return False
def readMode(self, mode_index: int) -> tuple: def readMode(self, mode_index: int) -> tuple:
self.controller.readDop = True # READ MODE BUG FIX TODO # self.controller.readDop = True # READ MODE BUG FIX TODO
data = self.sendPacketWithResponse(self.c_codes['get'], self.targets['device mode get'], [mode_index + 1]) data = self.sendPacketWithResponse(self.c_codes['get'], self.targets['device mode get'], [mode_index + 1])
self.controller.readDop = False # READ MODE BUG FIX TODO # self.controller.readDop = False # READ MODE BUG FIX TODO
print('Read bytes:') print('Read bytes:')
for i, b in enumerate(self.controller.read_buffer): for i, b in enumerate(self.controller.read_buffer):
@ -276,10 +279,10 @@ class ControllerInterface:
# Powers # # Powers #
def writePowers(self, currents: list, voltages: list, power: int, koeffs: list, a_max: int) -> bool: def writePowers(self, currents: list, voltages: list, power: int, koeffs: list, a_max: int) -> bool:
data = currents + voltages + [power] + koeffs + [a_max] data = currents + voltages + [power] + koeffs + [a_max]
return self.sendPacket(self.c_codes['set'], self.targets['powers set'], data) return self.sendPacket(self.c_codes['set'], self.targets['powers'], data)
def readPowers(self) -> list: def readPowers(self) -> list:
return self.sendPacketWithResponse(self.c_codes['get'], self.targets['powers get'], []) return self.sendPacketWithResponse(self.c_codes['get'], self.targets['powers'], [])
# source: https://stackoverflow.com/a/14224477 # source: https://stackoverflow.com/a/14224477
@staticmethod @staticmethod

View File

@ -38,6 +38,8 @@ check = tk.IntVar()
def setStatus(new_status: str): def setStatus(new_status: str):
print(f'New status: {new_status}')
status.set(new_status) status.set(new_status)
win.update() win.update()
win.update_idletasks() win.update_idletasks()
@ -125,7 +127,7 @@ def readControllerCurrentsAndData() -> bool:
setStatus(f'Чтение адреса {controller.controller.ser.port}...') setStatus(f'Чтение адреса {controller.controller.ser.port}...')
address = controller.readAddress() address = controller.readAddress()
print(f'New address: {address}')
if address == -1: if address == -1:
dmx_address_field.configure(style='failedToRead.TEntry') dmx_address_field.configure(style='failedToRead.TEntry')
else: else:
@ -133,7 +135,6 @@ 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 modesself.ui.DeviceSelection.addItems(['/dev/ttyUSB0', '/dev/ttyUSB2'])
modes = [] modes = []
@ -389,7 +390,16 @@ def finish():
if __name__ == "__main__": if __name__ == "__main__":
controller.writePowers([100, 200, 300, 400], [300, 2000, 2341, 10], 49, [100, 240, 30, 239], 52) controller.connect("/dev/ttyUSB0")
pws = controller.readPowers()
print(pws)
controller.writePowers([30, 47, 60, 60], [14, 45, 34, 9], 20, [10, 20, 30, 40], 10)
time.sleep(2)
pws = controller.readPowers()
print(pws)
win.configure(width=270, height=350) win.configure(width=270, height=350)
win.resizable(False, False) win.resizable(False, False)

View File

@ -61,6 +61,8 @@ class Window(QtWidgets.QMainWindow):
def setStatus(self, text: str) -> None : def setStatus(self, text: str) -> None :
print(text) print(text)
self.ui.Status.setText(text)
self.repaint()
def deviceSelected(self, deviceIndex: int): def deviceSelected(self, deviceIndex: int):
device = self.ui.DeviceSelection.itemText(deviceIndex) device = self.ui.DeviceSelection.itemText(deviceIndex)

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 13.0.0, 2024-12-03T22:31:52. --> <!-- Written by QtCreator 13.0.0, 2024-12-25T20:11:57. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View File

@ -1,418 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Controller</class>
<widget class="QMainWindow" name="Controller">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>273</width>
<height>350</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>273</width>
<height>350</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>273</width>
<height>350</height>
</size>
</property>
<property name="windowTitle">
<string>Controller</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>284</width>
<height>251</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="rowWrapPolicy">
<enum>QFormLayout::DontWrapRows</enum>
</property>
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="verticalSpacing">
<number>8</number>
</property>
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="ComPort">
<property name="font">
<font>
<family>Ubuntu Sans</family>
</font>
</property>
<property name="text">
<string>COM Порт:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="DeviceSelection">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>110</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>10</pointsize>
</font>
</property>
<item>
<property name="text">
<string>/dev/ttyUSB0</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="DmxAddress">
<property name="text">
<string>DMX Адрес:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="DmxAddressField">
<property name="maximumSize">
<size>
<width>45</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>10</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="placeholderText">
<string>no data</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="Personality">
<property name="text">
<string>Personality:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="Current1">
<property name="text">
<string> I1</string>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="Current1Field">
<property name="maximumSize">
<size>
<width>45</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>1000</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="ma1">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string> mA</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QLabel" name="Current2">
<property name="text">
<string> I2</string>
</property>
</widget>
</item>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="Current2Field">
<property name="maximumSize">
<size>
<width>45</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>450</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="ma2">
<property name="text">
<string> mA</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<widget class="QLabel" name="Current3">
<property name="text">
<string> I3</string>
</property>
</widget>
</item>
<item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="Current3Field">
<property name="maximumSize">
<size>
<width>45</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>520</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="ma3">
<property name="text">
<string> mA</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="6" column="0">
<widget class="QLabel" name="Current4">
<property name="text">
<string> I4</string>
</property>
</widget>
</item>
<item row="6" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLineEdit" name="Current4Field">
<property name="maximumSize">
<size>
<width>45</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>780</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="ma4">
<property name="text">
<string> mA</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="ModeSelection">
<property name="maximumSize">
<size>
<width>131</width>
<height>32</height>
</size>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="frame">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>28:CH RGB45 SLO</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QPushButton" name="ModeInfo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="dialog-question">
<normaloff>.</normaloff>.</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>250</y>
<width>271</width>
<height>101</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>50</number>
</property>
<property name="leftMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<item>
<widget class="QPushButton" name="Read">
<property name="text">
<string>Чтение</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="Write">
<property name="text">
<string>Запись</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="Check">
<property name="maximumSize">
<size>
<width>97</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Проверить</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="Status">
<property name="text">
<string>Выбранный порт: /dev/ttyUSB0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

BIN
протокол (2).xlsx Normal file

Binary file not shown.