From 82459cdac75db74a27cb834f972ac068b24c798c Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 13 Dec 2024 17:33:56 +0300 Subject: [PATCH] add read array for state machine --- ems_g.gd | 9 +++++++++ scripts/PRD.gd | 17 ++++++++--------- scripts/constants.gd | 1 + scripts/network.gd | 23 ++++++++++++----------- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/ems_g.gd b/ems_g.gd index be1a197..45ca1ed 100644 --- a/ems_g.gd +++ b/ems_g.gd @@ -4,6 +4,13 @@ var shift: int = 2 var input_status: Dictionary = {} +func _on_read_ems_g(): + for i in 7: + Network.send_array.append({0x122:1+i}) + Network.read_array.append(0x124) + Network.read_array.append(0x128) + + func _ready() -> void: node_select1 = $table1 var EMS_G_TABLE: Array @@ -47,6 +54,8 @@ func _ready() -> void: node_select1.set_columns_min_size(columns_min_size) Network.connect('_yau_receive', Callable(self, '_on_data_received')) + var parrent = get_parent().get_parent() + parrent.connect('read_ems_g', Callable(self, '_on_read_ems_g')) create_link_button(node_select1, 3, 19, 2, 18) diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 1a63811..06a4dda 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -1,5 +1,6 @@ extends Node2D +signal read_ems_g() #var unit = Yau07.YaU07.new('ЯУ07') var flag_mode = Constants.ADDRESSES[0][3] var broadcast_packet: PackedByteArray @@ -9,7 +10,6 @@ var flag_yau_control: bool var CONTROL_TABLE: Array - func _ready() -> void: # Таблица УКП_1 node_select1 = $TabContainer/PRD/scroll1/table1 @@ -72,8 +72,8 @@ func _on_yau_status(yau_status): func _on_read_isa(unit_isa_ports): var isa: Array = [] for i in unit_isa_ports: - isa.append('%x: %x' % [i, unit_isa_ports[i]]) - $ISA.text = 'ISA: ' + str(unit_isa_ports) + isa.append('%x: %s' % [i, unit_isa_ports[i]]) + $ISA.text = 'ISA: ' + str(isa) ## Рисует таблицу @@ -219,6 +219,7 @@ func _on_control_button() -> void: func _on_emsg_select() -> void: + emit_signal('read_ems_g') $TabContainer.current_tab = 2 $Background/side_panel/select_ems_g.button_pressed = true $Background/side_panel/select_control.button_pressed = false @@ -244,16 +245,14 @@ func fill_item(node, i_column: int, i_row: int, arr: Dictionary, select: int = 0 func _on_zapret(toggled_on: bool, meta) -> void: - var send_array: Array = [] - var address_port_wr = 0x122 - var ports_wr: Dictionary = {address_port_wr : meta.get_meta('litera')} ## СИ2, СИ4, СИ6 = 0x30, СИ3, СИ5, СИ7 = 0x31, СИ1 = 0x2F + var ports_wr: Dictionary = {0x122 : meta.get_meta('litera')} ## СИ2, СИ4, СИ6 = 0x30, СИ3, СИ5, СИ7 = 0x31, СИ1 = 0x2F Network.send_array.append(ports_wr) ports_wr = {} - address_port_wr = 0x128 - ports_wr[address_port_wr] = 0x4000 if toggled_on else 0x0 + ports_wr[0x128] = 0x4000 if toggled_on else 0x0 Network.send_array.append(ports_wr) func _on_read_isa_pressed() -> void: - Network.flag_read_isa = true + Network.read_array.append(0x122) + Network.read_array.append(0x128) diff --git a/scripts/constants.gd b/scripts/constants.gd index 56eece9..c85dc8f 100644 --- a/scripts/constants.gd +++ b/scripts/constants.gd @@ -136,4 +136,5 @@ enum STATE { WAIT, READ_ISA, WRITE_ISA, + DONE, } diff --git a/scripts/network.gd b/scripts/network.gd index 58cd0a6..4ea3dc4 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -10,7 +10,7 @@ var last_update_time: float = 0.0 var broadcast_packet: PackedByteArray var state = Constants.STATE.WAIT var send_array: Array = [] -var flag_read_isa: bool = false +var read_array: Array = [] signal _yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой @@ -73,23 +73,24 @@ func state_machine(): ## Режим ожидания if state == Constants.STATE.WAIT and fl_done: - if flag_read_isa: - flag_read_isa = false + if read_array.size(): state = Constants.STATE.READ_ISA elif send_array.size(): state = Constants.STATE.WRITE_ISA - + ## Режим чтения из ИСА elif state == Constants.STATE.READ_ISA and fl_done: - unit.send_isa(unit.CmdCode.READ_ISA, [0x122, 0x128]) - state = Constants.STATE.WAIT - var unit_isa_ports = unit.isa_ports - emit_signal('_yau_read_isa', unit_isa_ports) + var ports_read = read_array.pop_front() + unit.send_isa(unit.CmdCode.READ_ISA, [ports_read]) + state = Constants.STATE.DONE ## Режим записи в ИСА elif state == Constants.STATE.WRITE_ISA and fl_done: - var ports_dict = send_array.pop_front() - var key = ports_dict.keys() - unit.send_isa(unit.CmdCode.WRITE_ISA, [key[0], ports_dict[key[0]]]) + var ports_write = send_array.pop_front() + var key = ports_write.keys() + unit.send_isa(unit.CmdCode.WRITE_ISA, [key[0], ports_write[key[0]]]) + state = Constants.STATE.WAIT + elif state == Constants.STATE.DONE and fl_done: + emit_signal('_yau_read_isa', unit.isa_ports) state = Constants.STATE.WAIT