Добавление сохранения состояния и кнопки записи в ИСА

This commit is contained in:
2024-10-09 11:36:17 +03:00
parent 654bf85df8
commit b501a60e5b
4 changed files with 53 additions and 13 deletions

28
Main.gd
View File

@@ -16,7 +16,7 @@ var flag_online: bool = false # Флаг для подключения
var flag_interval: bool = false # Флаг для включения непрерывной передачи с интервалом
var flag_wr_on_timer = false # Флаг для записи непрерывной
var flag_continuous = true # Флаг для режима ожидания машины состояния
var ports_wr: Dictionary # Словарь с портами для записи
var ports_wr: Dictionary # Словарь с портами для записи
var port_select: int = Constants.BASE_ADDR # Выбранный порд для чтения/записи
var port: int
var address: String
@@ -51,10 +51,9 @@ func _ready():
edit_node.editable = true
edit_node.placeholder_text = 'Ввод значения'
edit_node.connect('text_submitted', Callable(self, '_on_written_text_submitted'))
# Кнопка для включения
#$Turn_on.connect('toggled', Callable(self, '_on_button_pressed'))
$read_ISA.disabled = true
$write_ISA.disabled = true
# Поле для ввода (базовый порт)
var edit_addr = node_select.get_node2(0, 2)
@@ -79,7 +78,6 @@ func _ready():
if rc != OK:
print('Ошибка: неудачная привязка адреса: ', address)
#ports_wr[port_select] = unit.isa_ports[0]
unit.connect('line_changed', Callable(self, 'on_line_changed'))
unit.connect('command_fail', Callable(self, 'on_command_fail'))
unit.connect('command_done', Callable(self, 'on_command_done'))
@@ -96,6 +94,7 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник
var rx_data = sock.get_packet()
var addr_receive = sock.get_packet_ip()
var port_receive = sock.get_packet_port()
$BROADCAST.text = 'BROADCAST: ' + str(rx_data)
if (address == addr_receive) and (port == port_receive):
unit.parse(rx_data)
return false
@@ -168,6 +167,7 @@ func state_machine() -> void:
var nubre_from_port = '%x' % unit.isa_ports[port_select] if unit.isa_ports.has(port_select) else 'ffff'
node_select.set_node_text(4, 1, nubre_from_port)
$read_ISA.disabled = false
$write_ISA.disabled = false
state = Constants.STATE.WRITE if flag_continuous else Constants.STATE.WAIT
elif state == Constants.STATE.READ and fl_done: ## Чтение из ИСА
unit.send_isa(unit.CmdCode.READ_ISA, [port_select])
@@ -213,11 +213,27 @@ func _on_button_pressed(turn_on) -> void:
port = int(node_select.get_node2(4,0).text)
flag_continuous = false # Чтение
flag_online = true
save_settings()
else:
flag_online = false
flag_interval = false
func _on_button_read() -> void:
port_select = node_select.get_node2(0, 2).text.hex_to_int()
state = Constants.STATE.READ
func _on_button_write() -> void:
port_select = node_select.get_node2(0, 2).text.hex_to_int()
_on_written_text_submitted(node_select.get_node2(2, 1).text)
state = Constants.STATE.WRITE
func save_settings():
var file = FileAccess.open("user://constants.txt", FileAccess.WRITE)
if file:
file.store_line(address) # Сохранить IP-адрес
file.store_line(str(port)) # Сохранить порт
file.store_line(str(port_select)) # Сохранить базовый адрес
file.close()