Add shared PySetTerminal with asynchronous cancellable macros
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user