From 25d39cb560887265aa19dcd365360206359fcf13 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 15 Oct 2025 14:06:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9E=D0=B1=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BF=D1=80=D0=B8=D0=B7=D0=BD=D0=B0=D0=BA?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B5=D1=80=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20?= =?UTF-8?q?=D0=B2=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B0?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=D1=81=20=D1=8F=D1=87=D0=B5=D0=B9=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=AD=D0=9C=D0=A1-=D0=93=20=D0=B2=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BB=D0=B5=20=D0=BF=D1=80=D0=B4.=20=D0=9D?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D1=8E=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81?= =?UTF-8?q?=D0=B8=D0=B3=D0=BD=D0=B0=D0=BB=20=D0=B8=D0=B7=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=82=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8F=20=D0=A4=D0=A1=20=D0=94=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0.=20[PATCH]=20=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=BA=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D1=8F,=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B8=D0=BD=D0=B4=D0=B8=D0=BA=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20=D0=A2=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=D0=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 2 +- scenes/pribor-prd-n/pribor-prd-n.gd | 4 +- scenes/pribor-prd-v/pribor-prd-v.gd | 2 +- scenes/tabs-switch/lbl_ready.gd | 48 ++++++++++- scenes/tabs-switch/tab-switch.tscn | 4 +- scenes/tabs-switch/тренаж_режим.gd | 4 +- scenes/контроль/контроль.tscn | 126 ++++++++++++++++------------ scenes/работа/работа.tscn | 2 +- scripts/prd.gd | 11 +++ scripts/pribor-prd.gd | 57 +++++++------ scripts/signaller.gd | 5 ++ 11 files changed, 174 insertions(+), 91 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 92d616c..12be888 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -18,7 +18,7 @@ const constants_k: Dictionary = { 'ATT_UM_6': 0x3, 'ATT_UM_7': 0x2, 'POWER_UM': 100, - 'TIMER_DELAY': 5.0, + 'TIMER_DELAY': 10.0, 'STATE_MASHINE_TIMER': 0.3, } # Конфигурация параметров для каждого прибора diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 8497ec6..cfd1295 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -16,7 +16,7 @@ const constants_n = { 'ATT_UM_2': 0x2, 'ATT_UM_3': 0x3, 'POWER_UM': 100, - 'TIMER_DELAY': 5.0, + 'TIMER_DELAY': 10.0, 'STATE_MASHINE_TIMER': 0.3, } # Конфигурация параметров для каждого прибора @@ -83,7 +83,7 @@ func _ready() -> void: setup_timer() set_default_state() find_labels(self) - + func initialize_connections() -> void: var unit_name = get_meta('unit_name')[0] diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 40f55e1..a40768a 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -16,7 +16,7 @@ const constants_v = { 'ATT_UM_4': 0x2, 'ATT_UM_5': 0x3, 'POWER_UM': 100, - 'TIMER_DELAY': 5.0, + 'TIMER_DELAY': 10.0, 'STATE_MASHINE_TIMER': 0.3, } # Конфигурация параметров для каждого прибора diff --git a/scenes/tabs-switch/lbl_ready.gd b/scenes/tabs-switch/lbl_ready.gd index f23dcbb..f35d4ed 100644 --- a/scenes/tabs-switch/lbl_ready.gd +++ b/scenes/tabs-switch/lbl_ready.gd @@ -1,8 +1,48 @@ extends Label +# Используем более понятные имена переменных +const STATUS_GOOD := {"text": "Исправно", "color": Color.GREEN, "font_color": Color.BLACK} +const STATUS_BAD := {"text": "Отказ", "color": Color.RED, "font_color": Color.WHITE} +var _is_uf_status_initialized: bool = false +var is_prd_operational: bool = true +var is_uf_operational: bool = false + func _ready() -> void: - var prd_dict = prd.prd_dict + tooltip_text = 'Нет связи с приборами комплекса' + for prd_module in prd.prd_dict.values(): + prd_module.connect('update_serviceability', Callable(self, 'on_serviceability_changed').bind(prd_module)) + var unit_uf: = network.get_unit_instance('уарэп-эмс') + unit_uf.connect('data_received', Callable(self, 'on_uf_status_receive')) + add_theme_color_override("font_color", Color.BLACK) - for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД - pass - pass + +func on_serviceability_changed(unit_prd_module: Object) -> void: + var check_service: bool = true + for prd_module in prd.prd_dict.values(): + if prd_module.unit_yau07.online: + if not unit_prd_module.serviceability: + check_service = false + if check_service != is_prd_operational: + is_prd_operational = check_service + _update_serviceability_display() + + +func _update_serviceability_display() -> void: + var status := STATUS_GOOD if (is_uf_operational and is_prd_operational) else STATUS_BAD + text = status.text + modulate = status.color + tooltip_text = 'Результаты обобщенного признака работоспособности изделия' + add_theme_color_override("font_color", status.font_color) + + +func on_uf_status_receive(unit_uf: Object) -> void: + var KEMS_B = ((unit_uf.status[0] >> 0) & 1) and ((unit_uf.status[0] >> 3) & 1) + var EMS_B_1 = ((unit_uf.status[0] >> 1) & 1) and ((unit_uf.status[0] >> 4) & 1) + var EMS_B_2 = ((unit_uf.status[0] >> 2) & 1) and ((unit_uf.status[0] >> 5) & 1) + var IP27B = ((unit_uf.status[2] >> 6) & 1) + var check_service: bool = KEMS_B and EMS_B_1 and EMS_B_2 and IP27B + if not _is_uf_status_initialized or check_service != is_uf_operational: + is_uf_operational = check_service + _update_serviceability_display() + signaller.emit_signal('update_uf_serviceability', check_service) + _is_uf_status_initialized = true diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index 1972733..b33b2b9 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -86,13 +86,13 @@ offset_right = 1600.0 offset_bottom = 27.0 tooltip_text = "Готовность аппаратуры к работе" mouse_filter = 0 -theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_font_sizes/font_size = 14 theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22") -text = "Исправно" +text = "Нет связи" horizontal_alignment = 1 vertical_alignment = 1 script = ExtResource("8_tidwt") +metadata/_edit_lock_ = true [node name="remote_control" type="Label" parent="."] visible = false diff --git a/scenes/tabs-switch/тренаж_режим.gd b/scenes/tabs-switch/тренаж_режим.gd index d334ce3..ace4117 100644 --- a/scenes/tabs-switch/тренаж_режим.gd +++ b/scenes/tabs-switch/тренаж_режим.gd @@ -6,6 +6,6 @@ func _ready(): func _on_button_toggled(mode: bool): if mode: - tooltip_text = "Режим \"Тренаж\" задействован" + tooltip_text = "Режим \"Тренаж\" задействован\nТекущее состояние: включено" else: - tooltip_text = "Задейстовать режим \"Тренаж\"" + tooltip_text = "Задейстовать режим \"Тренаж\"\nТекущее состояние: отключено" diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 5eb6206..b1d9612 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -46,6 +46,7 @@ const PRIBORS_RES = \\ func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online) +func on_serv_changed(u, pribor_node, _pribor_meta): pribor_node.state = int(u.serviceability) func on_mode_changed(): @@ -78,6 +79,13 @@ func _ready(): for i in unit_names.size(): var unit_instance: = network.get_unit_instance(unit_names[i]) unit_instance.connect('line_changed', Callable(self, pribor_proc).bind(conn_node, unit_names)) + + for item in unit_names: + if prd.prd_dict.has(item): + var prd_module = prd.prd_dict[item] + prd_module.connect('update_serviceability', Callable(self, 'on_serviceability_changed').bind(prd_module, pribor_node)) + if item == 'уарэп-эмс': + signaller.connect('update_uf_serviceability', Callable(self, 'on_update_uf_serviceability').bind(pribor_node)) # Пиктограммы приборов, которые отображают состояние подключения только for pribor_node in get_tree().get_nodes_in_group('pribor_pics'): var unit_name = pribor_node.get_meta('unit_name') @@ -125,6 +133,18 @@ func on_pribor_press(pribor_path, header_text, pribor_node): pribor.set_meta('unit_name', unit_name) pribor.add_to_group('pribor_items') add_child(pribor) + + +func on_serviceability_changed(prd_module: Object, prd_pribor:Node)-> void: + if not prd_module.unit_yau07.online: + prd_pribor.state = 0 + return + prd_pribor.state = 1 if prd_module.serviceability else 2 + + +func on_update_uf_serviceability(uf_serviceaability: bool, uf_pribor: Node)-> void: + + uf_pribor.state = 1 if uf_serviceaability else 2 " [sub_resource type="SpriteFrames" id="SpriteFrames_foasq"] @@ -324,6 +344,58 @@ sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 script = ExtResource("11_u7tym") +[node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]] +editor_description = "Кнопка для выбора прибора." +layout_mode = 0 +offset_left = 1048.0 +offset_top = 193.0 +offset_right = 1125.0 +offset_bottom = 309.0 +size_flags_horizontal = 15 +size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 +texture_normal = ExtResource("6_i1yfn") +stretch_mode = 4 +flip_h = true +script = ExtResource("3_4pt7j") +state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)] +metadata/online_proc = "on_line_changed" +metadata/unit_name = ["уарэп-яу07-1н"] + +[node name="label" type="Label" parent="pribor_prd_n_1"] +layout_mode = 0 +offset_left = 8.0 +offset_top = -38.0 +offset_right = 60.0 +offset_bottom = -19.0 +text = "ПРД Н1" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="frame" type="NinePatchRect" parent="pribor_prd_n_1"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -10.0 +offset_top = -24.0 +offset_right = 95.0 +offset_bottom = 126.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1"] +light_mask = 3 +position = Vector2(35, -10) +scale = Vector2(0.625, 0.625) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 +script = ExtResource("11_u7tym") + [node name="pribor_uf" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -987,58 +1059,6 @@ sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 script = ExtResource("11_u7tym") -[node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]] -editor_description = "Кнопка для выбора прибора." -layout_mode = 0 -offset_left = 1048.0 -offset_top = 193.0 -offset_right = 1125.0 -offset_bottom = 309.0 -size_flags_horizontal = 15 -size_flags_vertical = 15 -toggle_mode = true -action_mode = 0 -texture_normal = ExtResource("6_i1yfn") -stretch_mode = 4 -flip_h = true -script = ExtResource("3_4pt7j") -state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)] -metadata/online_proc = "on_line_changed" -metadata/unit_name = ["уарэп-яу07-1н"] - -[node name="label" type="Label" parent="pribor_prd_n_1"] -layout_mode = 0 -offset_left = 8.0 -offset_top = -38.0 -offset_right = 60.0 -offset_bottom = -19.0 -text = "ПРД Н1" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="frame" type="NinePatchRect" parent="pribor_prd_n_1"] -visible = false -self_modulate = Color(0.890196, 0.486275, 0.196078, 1) -layout_mode = 0 -offset_left = -10.0 -offset_top = -24.0 -offset_right = 95.0 -offset_bottom = 126.0 -texture = ExtResource("4_rasbe") -region_rect = Rect2(-3, -3, 89, 89) -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1"] -light_mask = 3 -position = Vector2(35, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pribor_prd_k_1" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1365,6 +1385,7 @@ points = PackedVector2Array(-8, 0, 608, 0) width = 2.0 default_color = Color(1, 1, 1, 0.352941) +[connection signal="toggled" from="pribor_prd_n_1" to="pribor_prd_n_1" method="_on_toggled"] [connection signal="toggled" from="pribor_uf" to="pribor_uf" method="_on_toggled"] [connection signal="toggled" from="pribor_rtr" to="pribor_rtr" method="_on_toggled"] [connection signal="toggled" from="pribor_afsp_1" to="pribor_afsp_1" method="_on_toggled"] @@ -1377,7 +1398,6 @@ default_color = Color(1, 1, 1, 0.352941) [connection signal="toggled" from="pribor_prd_n_3" to="pribor_prd_n_3" method="_on_toggled"] [connection signal="toggled" from="pribor_prd_k_3" to="pribor_prd_k_3" method="_on_toggled"] [connection signal="toggled" from="pribor_prd_v_1" to="pribor_prd_v_1" method="_on_toggled"] -[connection signal="toggled" from="pribor_prd_n_1" to="pribor_prd_n_1" method="_on_toggled"] [connection signal="toggled" from="pribor_prd_k_1" to="pribor_prd_k_1" method="_on_toggled"] [connection signal="toggled" from="pribor_prd_v_4" to="pribor_prd_v_4" method="_on_toggled"] [connection signal="toggled" from="pribor_prd_n_4" to="pribor_prd_n_4" method="_on_toggled"] diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 006c55c..f7485c3 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -342,8 +342,8 @@ text = "−" [connection signal="drag_continue" from="." to="." method="_on_drag_continue"] [connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"] [connection signal="toggled" from="chk_auto" to="." method="on_value_changed"] -[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"] [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] +[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] [connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"] [connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] diff --git a/scripts/prd.gd b/scripts/prd.gd index 0ff163e..46c8e08 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -158,7 +158,9 @@ class PRD: var state = PrdState.WORK var cmd_array: Array ## Очередь команд var ug_online: bool = false ## Состояние ячейки УГ + var serviceability: bool = false var set_ug_state: bool = true ## Необходимо ли записать в УГ настройки + signal update_serviceability() func _init(u_name, u_yau07): prd_name = u_name @@ -197,6 +199,7 @@ class PRD: func on_line_changed(unit_ems): + emit_signal('update_serviceability') if not unit_ems.online: yemsg_board.ems_load = yemsg_board.LoadState.NOT_DEFINED yemsg_board.set_wait() @@ -223,6 +226,14 @@ class PRD: ug_online = (unit_yau07.status[0] >> 1) & 1 if not ug_online: set_ug_state = true + var ukp_1_online = (unit_yau07.status[0] >> 2) & 1 + var ukp_2_online = (unit_yau07.status[0] >> 3) & 1 + var ems_g_online = (unit_yau07.status[0] & 1) & 1 + var check_serviceability = ug_online and ukp_1_online and ukp_2_online and ems_g_online + if serviceability != check_serviceability: + serviceability = check_serviceability + emit_signal('update_serviceability') + func execute_cmd(): if not len(cmd_array): return diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 965d279..c717f50 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -74,7 +74,7 @@ class TestPRD extends Node: var self_name: String var state: int = STATE_MASHINE.INIT var current_litera: int - var flag_timer_started: bool = false + var flag_write_isa: bool = false var flag_fs_status_ok: bool = false var flag_si_fs_input: bool = false var flag_si_fs_output: bool = false @@ -169,24 +169,25 @@ class TestPRD extends Node: state = STATE_MASHINE.FS_WORK STATE_MASHINE.FS_WORK: if ecms.size() and flag_fs_status_ok: + ems_6666_timer.start() _handle_fs_work_state() STATE_MASHINE.CHEK_KASSETA_Y5: if block_kasseta_y5_config['yau07']: state = STATE_MASHINE.WRITE_ISA STATE_MASHINE.WRITE_ISA: - _handle_ug_set_state(0x6) - await get_tree().create_timer(1.5).timeout - state = STATE_MASHINE.READ_ISA + if not flag_write_isa: + _handle_ug_set_state(0x6) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.READ_ISA: if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FAIL): _handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3]) + flag_write_isa = false state = STATE_MASHINE.UG_SET_RAY STATE_MASHINE.UG_SET_RAY: var addr: int = constants.ADDR_UG_LITERA_1 if current_litera == 3 or current_litera == 5 or current_litera == 7: addr = constants.ADDR_UG_LITERA_2 if unit_prd.isa_ports.has(addr) and (unit_prd.cmd_state == unit_prd.CmdState.DONE): - control_timer.stop() if unit_prd.isa_ports[addr] & 0x07 == 0: state = STATE_MASHINE.UG_SET_RAY_1 elif unit_prd.isa_ports[addr] & 0x07 == 1: @@ -205,28 +206,36 @@ class TestPRD extends Node: state = STATE_MASHINE.UG_SET_RAY_0 STATE_MASHINE.UG_SET_RAY_0: - _handle_ug_set_state(0x0) - await get_tree().create_timer(0.5).timeout - state = STATE_MASHINE.READ_ISA + if flag_si_fs_input and not flag_write_isa: + control_timer.stop() + _handle_ug_set_state(0x0) + await get_tree().create_timer(0.5).timeout + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_1: - _handle_ug_set_state(0x1) - state = STATE_MASHINE.READ_ISA + if not flag_write_isa: + _handle_ug_set_state(0x1) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_2: - _handle_ug_set_state(0x2) - state = STATE_MASHINE.READ_ISA + if not flag_write_isa: + _handle_ug_set_state(0x2) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_3: - _handle_ug_set_state(0x3) - state = STATE_MASHINE.READ_ISA + if not flag_write_isa: + _handle_ug_set_state(0x3) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_4: - _handle_ug_set_state(0x4) - state = STATE_MASHINE.READ_ISA + if not flag_write_isa: + _handle_ug_set_state(0x4) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_5: - _handle_ug_set_state(0x5) - state = STATE_MASHINE.READ_ISA + if not flag_write_isa: + _handle_ug_set_state(0x5) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.IN_EMS_STOP: ems_6666_timer.stop() state = STATE_MASHINE.FS_TURN_OFF STATE_MASHINE.FS_TURN_OFF: + ems_6666_timer.stop() _handle_fs_turn_off_state() state = STATE_MASHINE.STOP_CONTROL STATE_MASHINE.STOP_CONTROL: @@ -289,7 +298,7 @@ class TestPRD extends Node: dic_att.RAY_DOU_NUM, log_text ] - on_ug_setting(module_prd, unit_prd, dic_att) + flag_write_isa = on_ug_setting(module_prd, unit_prd, dic_att) func _on_ems_6666_timer() -> void: @@ -304,7 +313,6 @@ class TestPRD extends Node: func _handle_stop_control_state() -> void: control_label.text = 'Выполняется завершение проверки ФС-%s' % current_litera - flag_timer_started = false _advance_to_next_fs() state = STATE_MASHINE.INIT @@ -348,7 +356,7 @@ class TestPRD extends Node: add_child(ems_6666_timer) ems_6666_timer.timeout.connect(_on_ems_6666_timer) - ems_6666_timer.wait_time = 1.5 + ems_6666_timer.wait_time = 1.0 func _process_dkm_status(status: PackedByteArray) -> void: @@ -422,16 +430,15 @@ class TestPRD extends Node: ## Установка угла и аттенюации для УМ - static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> void: + static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> bool: var result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) var result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) - - prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.BASE_EMS_G, 6666, - settings_ug.ADDR_UG_LITERA_1, result_1, + prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1, settings_ug.ADDR_UG_LITERA_2, result_2, settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3, ] ]) + return true static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void: diff --git a/scripts/signaller.gd b/scripts/signaller.gd index c77682f..8a4ca5c 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -195,4 +195,9 @@ signal update_scale_map(new_scale) signal update_coordinates_map(new_coordinates) +## Вызывается при изменении исправности прибора УФ.[br] +## [param uf_serviceaability] - обновленное значение состояния исправности ([b]true[/b] +signal update_uf_serviceability(uf_serviceaability: bool) + + signal tool_tip(new_ctrl_pos)