diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 44f321a..0ce4f7a 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -180,13 +180,6 @@ corner_radius_bottom_left = 5 [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tn8m6"] -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_13x31"] -bg_color = Color(0.111197, 0.111197, 0.111197, 0.201) -corner_radius_top_left = 15 -corner_radius_top_right = 15 -corner_radius_bottom_right = 15 -corner_radius_bottom_left = 15 - [sub_resource type="ShaderMaterial" id="ShaderMaterial_07wue"] shader = ExtResource("10_lf1xh") shader_parameter/frequency = 5.0 @@ -200,6 +193,13 @@ shader_parameter/color4 = Color(0, 0, 0, 0) shader_parameter/opacity = 0.5 shader_parameter/turn = 0.785 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_13x31"] +bg_color = Color(0.111197, 0.111197, 0.111197, 0.201) +corner_radius_top_left = 15 +corner_radius_top_right = 15 +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 + [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ooo4i"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_cm644"] @@ -277,6 +277,7 @@ offset_top = -8.0 offset_right = 222.0 offset_bottom = 1112.0 theme_override_styles/panel = SubResource("StyleBoxFlat_4qm5k") +metadata/_edit_lock_ = true [node name="select_prd" type="Button" parent="Background/switch_panel" groups=["select_grp"]] layout_mode = 0 @@ -466,10 +467,10 @@ stretch_mode = 0 [node name="notice" type="GridContainer" parent="Background"] layout_mode = 0 -offset_left = 986.0 -offset_top = 937.0 -offset_right = 1720.0 -offset_bottom = 1000.0 +offset_left = 240.0 +offset_top = 977.0 +offset_right = 1000.0 +offset_bottom = 1040.0 columns = 3 [node name="lbl_commit" type="Label" parent="Background/notice"] @@ -479,10 +480,11 @@ theme_override_colors/font_color = Color(1, 1, 0.941176, 1) [node name="bind_addr" type="Label" parent="Background/notice"] layout_mode = 2 -[node name="bind_port" type="Label" parent="Background/notice"] +[node name="load_notice" type="Label" parent="Background/notice"] layout_mode = 2 -[node name="load_notice" type="Label" parent="Background/notice"] +[node name="bind_port" type="Label" parent="Background/notice"] +visible = false layout_mode = 2 [node name="TabContainer" type="TabContainer" parent="."] @@ -739,9 +741,9 @@ metadata/_edit_lock_ = true [node name="socket_ym_lb" type="NinePatchRect" parent="TabContainer/ControlPanel"] layout_mode = 0 -offset_left = 47.0 +offset_left = 623.0 offset_top = -14.0 -offset_right = 272.0 +offset_right = 848.0 offset_bottom = 769.0 texture = ExtResource("9_0r2qk") patch_margin_left = 16 @@ -804,11 +806,12 @@ fname = "УМ 6" [node name="blok_ym_litera_1" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")] layout_mode = 0 -offset_left = 309.0 -offset_top = 830.0 -offset_right = 490.0 -offset_bottom = 939.0 +offset_left = -268.0 +offset_top = 814.0 +offset_right = -87.0 +offset_bottom = 923.0 fname = "УМОМ" +metadata/_edit_lock_ = true [node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_lb"] self_modulate = Color(1, 1, 1, 0.62) @@ -823,9 +826,9 @@ vertical_alignment = 1 [node name="socket_ym_pb" type="NinePatchRect" parent="TabContainer/ControlPanel"] layout_mode = 0 -offset_left = 623.0 +offset_left = 47.0 offset_top = -14.0 -offset_right = 848.0 +offset_right = 272.0 offset_bottom = 769.0 texture = ExtResource("9_0r2qk") patch_margin_left = 16 @@ -1042,9 +1045,9 @@ rname = "A1" [node name="soc_P1" type="NinePatchRect" parent="TabContainer/ControlPanel"] layout_mode = 0 offset_left = 349.0 -offset_top = 615.0 +offset_top = 607.0 offset_right = 537.0 -offset_bottom = 810.0 +offset_bottom = 802.0 texture = ExtResource("9_0r2qk") patch_margin_left = 16 patch_margin_top = 16 @@ -1214,7 +1217,25 @@ fname = "ИП9-50" rname = "A22" metadata/_edit_lock_ = true -[node name="log_array" type="TextEdit" parent="TabContainer/ControlPanel"] +[node name="log_array" type="RichTextLabel" parent="TabContainer/ControlPanel"] +layout_mode = 0 +offset_left = 872.0 +offset_top = -6.0 +offset_right = 1664.0 +offset_bottom = 850.0 +scroll_following = true +metadata/_edit_lock_ = true + +[node name="await" type="ColorRect" parent="TabContainer/ControlPanel/log_array"] +material = SubResource("ShaderMaterial_07wue") +layout_mode = 0 +offset_left = -66.0 +offset_top = -14.0 +offset_right = 787.0 +offset_bottom = 26.0 + +[node name="log_array_1" type="TextEdit" parent="TabContainer/ControlPanel"] +visible = false layout_mode = 0 offset_left = 870.0 offset_top = -11.0 @@ -1227,13 +1248,6 @@ placeholder_text = "Ожидание контроля ..." wrap_mode = 1 metadata/_edit_lock_ = true -[node name="await" type="ColorRect" parent="TabContainer/ControlPanel/log_array"] -material = SubResource("ShaderMaterial_07wue") -layout_mode = 0 -offset_top = -17.0 -offset_right = 853.0 -offset_bottom = 23.0 - [node name="EMS_G" type="Panel" parent="TabContainer"] visible = false layout_mode = 2 diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 089ce35..d4665f5 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -30,8 +30,7 @@ var modul_um: Array = [0, 0, 0, 0] func _ready() -> void: $Background/notice/lbl_commit.text = commit.VCS_HEAD - $Background/notice/bind_addr.text = '/Базовый адресс: %s' % Constants.UNICAST_ADDRESS - $Background/notice/bind_port.text = '/Базовый порт: %s ' % Constants.UNICAST_PORT + $Background/notice/bind_addr.text = '/Базовый адрес: %s' % Constants.UNICAST_ADDRESS # Таблица 1 УКП-1 (Температура, Мощность) node_select1 = $TabContainer/PRD/body_grid/litera_2_4_6/table_ukp_1 @@ -164,10 +163,13 @@ func _ready() -> void: $TabContainer/EMS_G.CI_1_UF = $TabContainer/PRD/body_grid/litera_1/yau07b_control.get_node2(1, 6).get_child(1) $TabContainer/EMS_G.CI_2_UF = $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 6).get_child(1) $TabContainer/EMS_G.CI_3_UF = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 6).get_child(1) + $TabContainer/EMS_G.CZI_1_FS = $TabContainer/PRD/body_grid/litera_1/yau07b_control.get_node2(1, 7).get_child(1) $TabContainer/EMS_G.CZI_2_FS = $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 7).get_child(1) $TabContainer/EMS_G.CZI_3_FS = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 7).get_child(1) $TabContainer/EMS_G.CZI_4_FS = $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 7).get_child(1) $TabContainer/EMS_G.CZI_5_FS = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 7).get_child(1) + $TabContainer/EMS_G.CZI_6_FS = $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 7).get_child(1) + $TabContainer/EMS_G.CZI_7_FS = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 7).get_child(1) $TabContainer/EMS_G.CI_2_FS = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1, 6).get_child(1) $TabContainer/EMS_G.CI_3_FS = $TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 6).get_child(1) $TabContainer/EMS_G.CI_4_FS = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1, 6).get_child(1) @@ -320,15 +322,16 @@ func add_signs_scene(): func _on_yau_status(addr: String): if addr != '': - $TabContainer/PRD/status_yau.modulate = Color.AQUAMARINE for check in Constants.ADDRESSES: if check[1] == addr: + $TabContainer/PRD/status_yau.modulate = Color.AQUAMARINE $TabContainer/PRD/status_yau.text = 'ЯУ-07Б: ' + check[0] else: $TabContainer/PRD/status_yau.modulate = Color.CRIMSON - $TabContainer/PRD/status_yau.text = 'ЯУ-07Б: нет связи' - - + $TabContainer/PRD/status_yau.text = 'ЯУ-07Б: нет связи' + modul_um = [0, 0, 0, 0] + + func _on_read_isa(unit_isa_ports: Dictionary) -> void: isa_from_yau07b = unit_isa_ports var isa_data: Dictionary = {} @@ -679,17 +682,19 @@ func _on_write_ems_g(data_to_ems_g: Dictionary): func on_mode_select(intem_from_sector: int) -> void: + var pribor_selec: String = Constants.ADDRESSES[intem_from_sector][0] + _load_selected_file('user://saves/' + pribor_selec) var node_select_device: GDTable = $TabContainer/PRD/select_dev - var get_select_device = node_select_device.get_node2(1, 0) - var meta = get_select_device.get_item_metadata(intem_from_sector) + var get_select_device: Node = node_select_device.get_node2(1, 0) + var meta: Array = get_select_device.get_item_metadata(intem_from_sector) Constants.CURRENT_MODE = meta[2] add_signs_scene() Network.on_command_change_device(meta) Network.read_port_isa([Constants.BASE_PORTS.UG+8, Constants.BASE_PORTS.UG+6, Constants.BASE_PORTS.UG+0xA]) - Network.start_work_fs_1(Constants.ADDRESSES[intem_from_sector][0]) - Network.start_work_fs_2(Constants.ADDRESSES[intem_from_sector][0]) + Network.start_work_fs_1(pribor_selec) + Network.start_work_fs_2(pribor_selec) if meta[2] == Constants.MODE.PRD_K: - Network.start_work_fs_3(Constants.ADDRESSES[intem_from_sector][0]) + Network.start_work_fs_3(pribor_selec) $load_status_yau.value = 0 emit_signal('read_ems_g_start') $load_status_yau.visible = true @@ -740,16 +745,19 @@ func _on_modul_um(item_from_ray_1: int, node: Node): else: return - if modul_um.has(0x2000): + if modul_um.has(0x2000) or modul_um.has(0x8000): timer_modul_um.wait_time = 2.3 timer_modul_um.start() ## Таймер для модуляции УМ func _on_timer_modul_um(): - if modul_um.has(0x2000): + if modul_um.has(0x2000) or modul_um.has(0x8000): for i in range(3): - if modul_um[i] == 0x2000: + if modul_um[i] == 0x8000: + Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 2, current_meta[i]) + Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 8, modul_um[i]) + elif modul_um[i] == 0x2000: Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 2, current_meta[i]) Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 8, modul_um[i]) @@ -1059,7 +1067,9 @@ func set_tab_and_buttons(tab_index: int, button_name: String, txt_button_name: S func _on_connect_prd_pressed() -> void: - on_mode_select($TabContainer/PRD/select_dev.get_node2(1, 0).get_selected_id()) + var pribor_selec: int = $TabContainer/PRD/select_dev.get_node2(1, 0).get_selected_id() + _load_selected_file('user://saves/' + Constants.ADDRESSES[pribor_selec][0]) + on_mode_select(pribor_selec) func save_settings(to_att_change: float, mode: int): diff --git a/scripts/constants.gd b/scripts/constants.gd index c087218..d930ad1 100644 --- a/scripts/constants.gd +++ b/scripts/constants.gd @@ -240,7 +240,7 @@ const SIGNS: Dictionary = { 'Модуляция УМ', 'Положение луча', 'Аттенюатор УМ', - 'ФГОЗ 6', + 'ФРЛС 6', 'СИ 6 в УФ', 'СЗИ 6 от УФ', diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd index 2a4d6bf..564150a 100644 --- a/scripts/control_panel.gd +++ b/scripts/control_panel.gd @@ -28,34 +28,32 @@ var prep_set_ug: int = 0 class Logger extends Node: - var log_counter: int = 0 - var log_level = "INFO" - var log_array + var log_level: String = "INFO" + var log_array: Node - func _init(log_node): + func _init(log_node: RichTextLabel = null): log_array = log_node - log_array.clear() + log_array.text = "" func get_current_datetime_string() -> String: var time = Time.get_datetime_dict_from_system() return ' [%02d-%02d-%04d %02d:%02d] ' % [time['day'], time['month'], time['year'], time['hour'], time['minute']] - func info(message): - if log_level == "INFO" or log_level == "DEBUG": + func _add_message(level: String, message: String) -> void: + if (level == "INFO" and log_level in ["INFO", "DEBUG"]) or \ + (level == "WARNING" and log_level in ["WARNING", "INFO", "DEBUG"]) or \ + (level == "ERROR"): var datetime_string = get_current_datetime_string() - log_array.insert_line_at(log_counter, "[INFO]" + datetime_string + message) - log_counter += 1 + log_array.text += "[" + level + "]" + datetime_string + " " + message + "\n" - func warning(message): - if log_level == "WARNING" or log_level == "INFO" or log_level == "DEBUG": - var datetime_string = get_current_datetime_string() - log_array.insert_line_at(log_counter, "[WARNING]" + datetime_string + message) - log_counter += 1 + func info(message: String) -> void: + _add_message("INFO", message) - func error(message): - var datetime_string = get_current_datetime_string() - log_array.insert_line_at(log_counter, "[ERROR]" + datetime_string + message) - log_counter += 1 + func warning(message: String) -> void: + _add_message("WARNING", message) + + func error(message: String) -> void: + _add_message("ERROR", message) func _ready() -> void: @@ -427,8 +425,9 @@ func _on_start_super_control(): $log_array/await.visible = true logger = Logger.new(get_node('log_array')) flag_continue_control = true - + if (past_pribor != Constants.CURRENT_MODE): + past_pribor = Constants.CURRENT_MODE _draw_control_panel_prd(Constants.CURRENT_MODE) for i in count_cell: @@ -491,21 +490,21 @@ func _on_start_super_control(): var fs_att_3: float if Constants.CURRENT_MODE == Constants.MODE.PRD_H: fs_freq.append(Constants.FS_FREQ.f2) - fs_att_1 = Constants.FS_ATT['ПРД-Н1'][0] + fs_att_1 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][0] fs_freq.append(Constants.FS_FREQ.f3) - fs_att_2 = Constants.FS_ATT['ПРД-Н1'][1] + fs_att_2 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][1] elif Constants.CURRENT_MODE == Constants.MODE.PRD_B: fs_freq.append(Constants.FS_FREQ.f4) - fs_att_1 = Constants.FS_ATT['ПРД-В1'][0] + fs_att_1 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][0] fs_freq.append(Constants.FS_FREQ.f5) - fs_att_2 = Constants.FS_ATT['ПРД-В1'][1] + fs_att_2 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][1] elif Constants.CURRENT_MODE == Constants.MODE.PRD_K: fs_freq.append(Constants.FS_FREQ.f6) - fs_att_1 = Constants.FS_ATT['ПРД-К1'][0] + fs_att_1 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][0] fs_freq.append(Constants.FS_FREQ.f7) - fs_att_2 = Constants.FS_ATT['ПРД-К1'][1] + fs_att_2 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][1] fs_freq.append(Constants.FS_FREQ.f1) - fs_att_3 = Constants.FS_ATT['ПРД-К1'][2] + fs_att_3 = Constants.FS_ATT[Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0]][2] fs_3_setup(fs_freq[2], fs_att_3) logger.info('🛈 Настройка модулей ФС %s Гц, [%s / %s / %s] АТТ' % [str(fs_freq), str(fs_att_1), str(fs_att_2), str(fs_att_3)]) fs_1_setup(fs_freq[0], fs_att_1) # Гц @@ -549,7 +548,7 @@ func _status_cell(status): if node_cell_ind[3].state == Constants.STATE_VAL.GOOD: var mask: int = 0x7 - prep_set_ug = 0 + prep_set_ug = 0 var index_ray: int = Constants.RAY_DICT.find(' 25°') var index_att: int = Constants.ATT_DICT.find(' 10.5 dB') ## Регулировка положением луча 1 @@ -579,120 +578,126 @@ func set_bits(v, a, m): func _on_timer(): - _on_start_super_control() + var control_button: Node = self.get_parent().get_parent().get_child(0).get_child(1).get_child(1) + var texture_control_button: Node = self.get_parent().get_parent().get_child(0).get_child(1).get_child(8) + if control_button.button_pressed or texture_control_button.button_pressed: + _on_start_super_control() func _on_fs_status(META:int): - if logger and flag_continue_control: - if META == Constants.META.CI_2_OT_FS or META == Constants.META.CI_4_OT_FS or META == Constants.META.CI_6_OT_FS: - flag_fs_1_ready = true - logger.info('✅ Состояние генератора ФС-1: Включен') - elif META == Constants.META.CI_3_OT_FS or META == Constants.META.CI_5_OT_FS or META == Constants.META.CI_7_OT_FS: - flag_fs_2_ready = true - logger.info('✅ Состояние генератора ФС-2: Включен') - elif META == Constants.META.CI_1_OT_FS: - flag_fs_3_ready = true - logger.info('✅ Состояние генератора ФС-3: Включен') - - - if flag_fs_1_ready and flag_fs_2_ready: - if Constants.CURRENT_MODE == Constants.MODE.PRD_K: - if not flag_fs_3_ready: - return - - #dkm - var dkm: int = Network.unit.status.decode_u8(Constants.DataIndices.DKM) + var control_button: Node = self.get_parent().get_parent().get_child(0).get_child(1).get_child(1) + var texture_control_button: Node = self.get_parent().get_parent().get_child(0).get_child(1).get_child(8) + if control_button.button_pressed or texture_control_button.button_pressed: + if logger and flag_continue_control: + if META == Constants.META.CI_2_OT_FS or META == Constants.META.CI_4_OT_FS or META == Constants.META.CI_6_OT_FS: + flag_fs_1_ready = true + logger.info('✅ Состояние генератора ФС-1: Включен') + elif META == Constants.META.CI_3_OT_FS or META == Constants.META.CI_5_OT_FS or META == Constants.META.CI_7_OT_FS: + flag_fs_2_ready = true + logger.info('✅ Состояние генератора ФС-2: Включен') + elif META == Constants.META.CI_1_OT_FS: + flag_fs_3_ready = true + logger.info('✅ Состояние генератора ФС-3: Включен') - if Constants.CURRENT_MODE == Constants.MODE.PRD_H: - if (dkm >> 1) & 0x1 == 1: - logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) - $soc_DKM/DKM_2.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state - else: - logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) - $soc_DKM/DKM_2.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state - if (dkm >> 2) & 0x1 == 1: - logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) - $soc_DKM/DKM_3.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - else: - logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) - $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state + + if flag_fs_1_ready and flag_fs_2_ready: + if Constants.CURRENT_MODE == Constants.MODE.PRD_K: + if not flag_fs_3_ready: + return + + #dkm + var dkm: int = Network.unit.status.decode_u8(Constants.DataIndices.DKM) - if (dkm >> 1) & 0x1 == 1 and (dkm >> 2) & 0x1 == 1: # Следующий шаг -> - flag_dkm = true - else: - Network.set_fs_gen_status(true) ## отключен = true - Network.get_gen_state_1() - Network.set_fs_gen_status_2(true) ## отключен = true - Network.get_gen_state_2() - _on_contol_err() + if Constants.CURRENT_MODE == Constants.MODE.PRD_H: + if (dkm >> 1) & 0x1 == 1: + logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) + $soc_DKM/DKM_2.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state + else: + logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) + $soc_DKM/DKM_2.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state + if (dkm >> 2) & 0x1 == 1: + logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) + $soc_DKM/DKM_3.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state + else: + logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) + $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - elif Constants.CURRENT_MODE == Constants.MODE.PRD_B: - if (dkm >> 3) & 0x1 == 1: - logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) - $soc_DKM/DKM_2.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state - else: - logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) - $soc_DKM/DKM_2.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state - if (dkm >> 4) & 0x1 == 1: - logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) - $soc_DKM/DKM_3.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - else: - logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) - $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - - if (dkm >> 3) & 0x1 == 1 and (dkm >> 4) & 0x1 == 1: # Следующий шаг -> - flag_dkm = true - else: - Network.set_fs_gen_status(true) ## отключен = true - Network.get_gen_state_1() - Network.set_fs_gen_status_2(true) ## отключен = true - Network.get_gen_state_2() - _on_contol_err() + if (dkm >> 1) & 0x1 == 1 and (dkm >> 2) & 0x1 == 1: # Следующий шаг -> + flag_dkm = true + else: + Network.set_fs_gen_status(true) ## отключен = true + Network.get_gen_state_1() + Network.set_fs_gen_status_2(true) ## отключен = true + Network.get_gen_state_2() + _on_contol_err() + + elif Constants.CURRENT_MODE == Constants.MODE.PRD_B: + if (dkm >> 3) & 0x1 == 1: + logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) + $soc_DKM/DKM_2.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state + else: + logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) + $soc_DKM/DKM_2.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state + if (dkm >> 4) & 0x1 == 1: + logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) + $soc_DKM/DKM_3.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state + else: + logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) + $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - elif Constants.CURRENT_MODE == Constants.MODE.PRD_K: - if (dkm >> 0) & 0x1 == 1: - logger.info('✅ %s: %s ' % [$Kasseta_FS/Block_FS_PRD_K.fname, 'Включено']) - $soc_DKM/DKM_1.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/Block_FS_PRD_K.state = $soc_DKM/DKM_1.state - else: - logger.info('❌ %s: %s ' % [$Kasseta_FS/Block_FS_PRD_K.fname, 'Нет связи']) - $soc_DKM/DKM_1.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/Block_FS_PRD_K.state = $soc_DKM/DKM_1.state - if (dkm >> 5) & 0x1 == 1: - logger.info('✅ %s: %s ' % [$Kasseta_FS/ref_A3.fname, 'Включено']) - $soc_DKM/DKM_2.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state - else: - logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) - $soc_DKM/DKM_2.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state - if (dkm >> 6) & 0x1 == 1: - logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) - $soc_DKM/DKM_3.state = Constants.STATE_VAL.GOOD - $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - else: - logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) - $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR - $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - - if (dkm >> 5) & 0x1 and (dkm >> 6) & 0x1 and (dkm >> 0) & 0x1: # Следующий шаг -> - flag_dkm = true - else: - Network.set_fs_gen_status(true) ## отключен = true - Network.get_gen_state_1() - Network.set_fs_gen_status_2(true) ## отключен = true - Network.get_gen_state_2() - Network.set_fs_gen_status_3(true) ## отключен = true - Network.get_gen_state_3() - _on_contol_err() + if (dkm >> 3) & 0x1 == 1 and (dkm >> 4) & 0x1 == 1: # Следующий шаг -> + flag_dkm = true + else: + Network.set_fs_gen_status(true) ## отключен = true + Network.get_gen_state_1() + Network.set_fs_gen_status_2(true) ## отключен = true + Network.get_gen_state_2() + _on_contol_err() + + elif Constants.CURRENT_MODE == Constants.MODE.PRD_K: + if (dkm >> 0) & 0x1 == 1: + logger.info('✅ %s: %s ' % [$Kasseta_FS/Block_FS_PRD_K.fname, 'Включено']) + $soc_DKM/DKM_1.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/Block_FS_PRD_K.state = $soc_DKM/DKM_1.state + else: + logger.info('❌ %s: %s ' % [$Kasseta_FS/Block_FS_PRD_K.fname, 'Нет связи']) + $soc_DKM/DKM_1.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/Block_FS_PRD_K.state = $soc_DKM/DKM_1.state + if (dkm >> 5) & 0x1 == 1: + logger.info('✅ %s: %s ' % [$Kasseta_FS/ref_A3.fname, 'Включено']) + $soc_DKM/DKM_2.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state + else: + logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) + $soc_DKM/DKM_2.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state + if (dkm >> 6) & 0x1 == 1: + logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) + $soc_DKM/DKM_3.state = Constants.STATE_VAL.GOOD + $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state + else: + logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) + $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR + $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state + + if (dkm >> 5) & 0x1 and (dkm >> 6) & 0x1 and (dkm >> 0) & 0x1: # Следующий шаг -> + flag_dkm = true + else: + Network.set_fs_gen_status(true) ## отключен = true + Network.get_gen_state_1() + Network.set_fs_gen_status_2(true) ## отключен = true + Network.get_gen_state_2() + Network.set_fs_gen_status_3(true) ## отключен = true + Network.get_gen_state_3() + _on_contol_err() logger.info('🛈 ДКМ: %s ' % dkm) diff --git a/scripts/ems_g.gd b/scripts/ems_g.gd index 4d2640e..77a0b85 100644 --- a/scripts/ems_g.gd +++ b/scripts/ems_g.gd @@ -10,10 +10,13 @@ var status_fs_3 var CI_1_UF: Node var CI_2_UF: Node var CI_3_UF: Node +var CZI_1_FS: Node var CZI_2_FS: Node var CZI_3_FS: Node var CZI_4_FS: Node var CZI_5_FS: Node +var CZI_6_FS: Node +var CZI_7_FS: Node var CI_2_FS: Node var CI_3_FS: Node var CI_4_FS: Node @@ -166,6 +169,13 @@ func process_sockets_vert(blank: int, imp: int, count: int, col: int): set_frame(CZI_4_FS, frame_type) if i == 4: # СЗИ_5_от_УФ set_frame(CZI_5_FS, frame_type) + elif Constants.CURRENT_MODE == Constants.MODE.PRD_K: + if i == 0: # СЗИ_1_от_УФ + set_frame(CZI_1_FS, frame_type) + if i == 5: # СЗИ_6_от_УФ + set_frame(CZI_6_FS, frame_type) + if i == 6: # СЗИ_7_от_УФ + set_frame(CZI_7_FS, frame_type) if Constants.CURRENT_MODE == Constants.MODE.PRD_H: if i == 9: # СИ_2_от_ФС @@ -274,11 +284,12 @@ func on_mode_link(mode, list): func _on_btn_connect(toggled_on: bool, chk_btn: Node): ## Формирование команды для выбора устройства var meta = chk_btn.get_meta('device') - Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta[1]) # Отправка команды ## Формирование команды для отправкы команды на устройство if toggled_on: button_link_meta[meta[1]] += 1 << meta[0]-1 else: button_link_meta[meta[1]] -= 1 << meta[0]-1 + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta[1]) # Отправка команды Network.write_port_isa(Constants.BASE_PORTS.EMS_G+4, button_link_meta[meta[1]]) + Network.read_port_isa([Constants.BASE_PORTS.EMS_G+4]) diff --git a/scripts/network.gd b/scripts/network.gd index de1cb3b..485e235 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -126,7 +126,7 @@ func _ready() -> void: if rc != OK: print_debug('Ошибка: неудачная привязка адреса: ', Constants.UNICAST_ADDRESS) - unit.connect('command_fail', Callable(self, 'on_command_fail')) + unit.connect('line_changed', Callable(self, '_on_connect_change')) set_config() @@ -212,10 +212,9 @@ func write_port_isa(port_isa: int, data_isa: int) -> void: send_array.append(['wr', write_data]) - -## Ессли отсутствует подключение к ячейке ЯУ-07Б -func on_command_fail(_unit) -> void: - print('Отсутствует подключение к ячейке ЯУ-07Б') +## Изменения состояния соединения с ячейкой ЯУ-07Б +func _on_connect_change(unit_state_connect) -> void: + print("%s" % unit_state_connect) func on_command_change_device(meta_device): diff --git a/table/node_list.tscn b/table/node_list.tscn index 22ace8a..e62c720 100644 --- a/table/node_list.tscn +++ b/table/node_list.tscn @@ -2,6 +2,10 @@ [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i3io3"] bg_color = Color(0, 0, 0, 0.490196) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 [node name="OptionButton" type="OptionButton"] offset_right = 130.0