Checkpoint EEPROM, firmware analysis and instrument protocol updates

This commit is contained in:
2026-10-08 21:51:44 +03:00
parent b0c0c05cfa
commit fe9b5a246e
24 changed files with 848 additions and 62 deletions

View File

@@ -1,4 +1,5 @@
from PySide6.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout, QGroupBox, QGridLayout, QLineEdit, QPushButton, QScrollArea
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout, QGroupBox, QGridLayout, QLineEdit, QPushButton, QScrollArea, QSizePolicy
def build_byte_page(self):
self.byte_page = QScrollArea()
@@ -13,18 +14,22 @@ def build_byte_page(self):
panels = QHBoxLayout()
for write in (True, False):
group = QGroupBox("Запись" if write else "Чтение")
group.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
form = QGridLayout(group)
address = QLineEdit("$1000")
value = QLineEdit("0000" if write else "")
binary = QLineEdit("0000 0000 0000 0000" if write else "")
binary.setMinimumWidth(220)
address.setFixedWidth(150)
value.setFixedWidth(100)
binary.setFixedWidth(240)
value.setReadOnly(not write)
binary.setReadOnly(not write)
for row, (title, widget) in enumerate((("Адрес", address), ("Байт (hex)", value), ("Байт (bin)", binary))):
form.addWidget(QLabel(title), row * 2, 0)
form.addWidget(widget, row * 2 + 1, 0)
form.addWidget(QLabel(title), row, 0)
form.addWidget(widget, row, 1)
button = QPushButton("Записать" if write else "Прочитать")
form.addWidget(button, 6, 0)
form.addWidget(button, 3, 1, Qt.AlignLeft)
form.setColumnStretch(2, 1)
if write:
self.byte_write_address, self.byte_write_value, self.byte_write_binary = address, value, binary
value.textEdited.connect(lambda text: self._sync_byte_value(text, 16))
@@ -34,6 +39,7 @@ def build_byte_page(self):
self.byte_read_address, self.byte_read_value, self.byte_read_binary = address, value, binary
button.clicked.connect(lambda: self._start_byte(False))
panels.addWidget(group)
panels.addStretch()
layout.addLayout(panels)
status = QLabel("Нет данных от контроллера")
status.setWordWrap(True)