Extract reusable byte work panel with configurable terminal addressing
This commit is contained in:
@@ -66,7 +66,8 @@ class RawProtocol:
|
||||
if self._loop is not None or self._callback is not None or (self.host and self.host._pending_address is not None):
|
||||
callback(False, "Дождитесь завершения текущего обмена")
|
||||
return
|
||||
self._controller = self.host.address.value() if self.host else device_address
|
||||
self._controller = (device_address if device_address is not None else
|
||||
self.host.address.value() if self.host else 1)
|
||||
self._command = memory.PEEK if value is None else memory.POKE
|
||||
try:
|
||||
request = memory.request(self._controller, address, value)
|
||||
@@ -119,7 +120,8 @@ class RawProtocol:
|
||||
return False, "Подключите COM-порт"
|
||||
if self._loop is not None or self._callback is not None or (self.host and self.host._pending_address is not None):
|
||||
return False, "Дождитесь завершения текущего обмена"
|
||||
self._controller = self.host.address.value() if self.host else device_address
|
||||
self._controller = (device_address if device_address is not None else
|
||||
self.host.address.value() if self.host else 1)
|
||||
self._command = memory.PEEK if value is None else memory.POKE
|
||||
try:
|
||||
request = memory.request(self._controller, address, value)
|
||||
@@ -162,10 +164,10 @@ class RawProtocol:
|
||||
self.host._pending_address = self.host._pending_kind = None
|
||||
self.host.byte_page.setEnabled(True)
|
||||
|
||||
def poke(self, mem_address, data_value, device_address=1):
|
||||
def poke(self, mem_address, data_value, device_address=None):
|
||||
return self._exchange(mem_address, data_value, device_address)
|
||||
|
||||
def peek(self, mem_address, device_address=1):
|
||||
def peek(self, mem_address, device_address=None):
|
||||
return self._exchange(mem_address, None, device_address)
|
||||
|
||||
def send_raw(self, hex_data):
|
||||
@@ -196,9 +198,10 @@ class RawProtocol:
|
||||
class RawProtocolWidget(QWidget):
|
||||
"""Виджет для отладки RAW протокола (всегда виден внизу окна)"""
|
||||
|
||||
def __init__(self, raw_protocol):
|
||||
super().__init__()
|
||||
def __init__(self, raw_protocol, parent=None, *, device_address=10):
|
||||
super().__init__(parent)
|
||||
self.raw_protocol = raw_protocol
|
||||
self.device_address = device_address
|
||||
self.init_ui()
|
||||
|
||||
def init_ui(self):
|
||||
@@ -272,7 +275,7 @@ class RawProtocolWidget(QWidget):
|
||||
def memory_write(self):
|
||||
"""Запись в память (POKE)"""
|
||||
try:
|
||||
device_addr = 10
|
||||
device_addr = self.device_address() if callable(self.device_address) else self.device_address
|
||||
mem_addr = int(self.mem_addr_edit.text(), 16)
|
||||
data = int(self.mem_data_edit.text(), 16)
|
||||
|
||||
@@ -290,7 +293,7 @@ class RawProtocolWidget(QWidget):
|
||||
def memory_read(self):
|
||||
"""Чтение из памяти (PEEK)"""
|
||||
try:
|
||||
device_addr = 10
|
||||
device_addr = self.device_address() if callable(self.device_address) else self.device_address
|
||||
mem_addr = int(self.mem_addr_edit.text(), 16)
|
||||
|
||||
success, result = self.raw_protocol.peek(mem_addr, device_addr)
|
||||
|
||||
Reference in New Issue
Block a user