50 lines
2.6 KiB
Python
50 lines
2.6 KiB
Python
from PySide6.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout, QGroupBox, QGridLayout, QLineEdit, QPushButton, QScrollArea
|
|
|
|
def build_byte_page(self):
|
|
self.byte_page = QScrollArea()
|
|
self.byte_page.setWidgetResizable(True)
|
|
content = QWidget()
|
|
self.byte_page.setWidget(content)
|
|
layout = QVBoxLayout(content)
|
|
hint = QLabel("TMS2812: адрес слова — 32 бита; значение — 16 бит (0000…FFFF). "
|
|
"Адрес: десятичный, $HEX или 0xHEX. Запись проверяется чтением.")
|
|
hint.setWordWrap(True)
|
|
layout.addWidget(hint)
|
|
panels = QHBoxLayout()
|
|
for write in (True, False):
|
|
group = QGroupBox("Запись" if write else "Чтение")
|
|
form = QGridLayout(group)
|
|
address = QLineEdit("$1000")
|
|
value = QLineEdit("0000" if write else "")
|
|
binary = QLineEdit("0000 0000 0000 0000" if write else "")
|
|
binary.setMinimumWidth(220)
|
|
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)
|
|
button = QPushButton("Записать" if write else "Прочитать")
|
|
form.addWidget(button, 6, 0)
|
|
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))
|
|
binary.textEdited.connect(lambda text: self._sync_byte_value(text, 2))
|
|
button.clicked.connect(lambda: self._start_byte(True))
|
|
else:
|
|
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)
|
|
layout.addLayout(panels)
|
|
status = QLabel("Нет данных от контроллера")
|
|
status.setWordWrap(True)
|
|
self.status_changed.connect(status.setText)
|
|
layout.addWidget(status)
|
|
from pysetterminal.rawprotocol import RawProtocol, RawProtocolWidget
|
|
from pysetterminal.serialbus import SerialBus, SerialTab
|
|
self.pyset_protocol = RawProtocol(self)
|
|
self.pyset_raw_widget = RawProtocolWidget(self.pyset_protocol)
|
|
self.pyset_bus_widget = SerialTab(SerialBus(self.pyset_protocol), self.pyset_protocol, self.pyset_raw_widget)
|
|
layout.addWidget(self.pyset_bus_widget)
|
|
layout.addWidget(self.pyset_raw_widget)
|
|
layout.addStretch()
|