From 0c30572f1ee6a2459fc1c863ff5b26f3a4d1a6ab Mon Sep 17 00:00:00 2001 From: TotMaxim Date: Thu, 9 Apr 2026 11:25:18 +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=90=D0=A4=D0=A1=D0=9F=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D0=BA=D1=80=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-afsp/bort-afsp.tscn | 40 +++++++++++++++---------------- scenes/контроль/node-maper.gd | 10 ++++---- scenes/контроль/контроль.tscn | 5 +++- scripts/rtr.gd | 23 ++++++++++++++---- 4 files changed, 47 insertions(+), 31 deletions(-) diff --git a/scenes/pribor-afsp/bort-afsp.tscn b/scenes/pribor-afsp/bort-afsp.tscn index 8d55d617..cc3a7188 100644 --- a/scenes/pribor-afsp/bort-afsp.tscn +++ b/scenes/pribor-afsp/bort-afsp.tscn @@ -97,8 +97,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 2" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[1].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[1]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[1]['TestPassed']"] @@ -122,8 +122,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 3" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[2].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[2]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[2]['TestPassed']"] @@ -147,8 +147,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 4" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[3].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[3]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[3]['TestPassed']"] @@ -172,8 +172,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 5" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[4].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[4]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[4]['TestPassed']"] @@ -197,8 +197,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 6" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[5].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[5]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[5]['TestPassed']"] @@ -222,8 +222,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 7" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[6].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[6]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[6]['TestPassed']"] @@ -247,8 +247,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 8" -metadata/value0 = "SelfTest[1].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[1].DevList[7].TestedParamList[0]['CurrentValue']" metadata/value2 = "SelfTest[0].SystemList[1].DevList[7]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[1].DevList[7]['TestPassed']"] @@ -800,7 +800,7 @@ offset_right = 580.0 offset_bottom = 115.0 tooltip_text = "Плата АЦП ADCS500" fname = "АЦП" -metadata/state = ["SelfTest[4].SystemList[0].DevList[1]['TestPassed']"] +metadata/state = ["SelfTest[0].SystemList[0].DevList[1]['TestPassed']"] [node name="dsp" parent="." instance=ExtResource("4_mtf2n")] layout_mode = 0 @@ -809,7 +809,7 @@ offset_right = 580.0 offset_bottom = 60.0 tooltip_text = "Плата цифровой обработки сигналов BPL" fname = "Сигн. проц." -metadata/state = ["SelfTest[4].SystemList[0].DevList[0]['TestPassed']"] +metadata/state = ["SelfTest[0].SystemList[0].DevList[0]['TestPassed']"] [node name="gen" parent="." instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -827,8 +827,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Генератор" -metadata/value0 = "SelfTest[1].SystemList[2].DevList[0].TestedParamList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].SystemList[2].DevList[0].TestedParamList[0]['CurrentValue']" +metadata/value0 = "SelfTest[0].SystemList[2].DevList[0].TestedParamList[0]['CurrentValue']" +metadata/value1 = "SelfTest[0].SystemList[2].DevList[0].TestedParamList[0]['CurrentValue']" metadata/state = ["SelfTest[0].SystemList[2].DevList[0]['TestPassed']"] [node name="rpu" parent="." instance=ExtResource("2_dmhrm")] @@ -848,8 +848,8 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Приёмник 20...1000 МГц" -metadata/value0 = "SelfTest[1].SystemList[0].DevList[0]['TestPassed']" -metadata/value1 = "SelfTest[2].SystemList[0].DevList[0]['TestPassed']" +metadata/value0 = "SelfTest[0].SystemList[0].DevList[0]['TestPassed']" +metadata/value1 = "SelfTest[0].SystemList[0].DevList[0]['TestPassed']" metadata/state = ["SelfTest[0].SystemList[0].DevList[3]['TestPassed']"] [connection signal="pressed" from="konverter/grid/kanal1" to="." method="_on_item_pressed"] diff --git a/scenes/контроль/node-maper.gd b/scenes/контроль/node-maper.gd index 5394f24b..2d73bc18 100644 --- a/scenes/контроль/node-maper.gd +++ b/scenes/контроль/node-maper.gd @@ -40,8 +40,7 @@ static func map_error_codes_to_item(data, item, value_name: StringName, value_in # Плавное обновление с анимацией static func map_value_to_item_animated(data, item, value_name: StringName): var meta = item.get_meta(value_name, '') - if meta == '' or not (meta is String): - return + if meta == '' or not (meta is String): return var paths: = Array() tools.map_solid_to_array(meta, paths) @@ -55,8 +54,7 @@ static func map_value_to_item_animated(data, item, value_name: StringName): static func map_error_codes_to_item_animated(data, item, value_name: StringName, value_init: int): var metas = item.get_meta(value_name, '') - if not (metas is Array): - return + if not (metas is Array): return var paths: = Array() var values: = Array() @@ -79,8 +77,8 @@ static func map_error_codes_to_item_animated(data, item, value_name: StringName, static func _animate_property(item, property: StringName, target_value): var current = item.get(property) - if current == target_value: - return + if typeof(current) != typeof(target_value): return + if current == target_value: return # Исправление: преобразуем StringName в String для NodePath var tween = item.create_tween() diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index bb39fe2c..a640531d 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -125,6 +125,9 @@ func _ready(): signaller.connect('debag_control_pressed', Callable(self, 'on_debag_button_pressed')) scouting.request_sent_left.connect(_on_request_sent_left.bind($pribor_afsp_1)) scouting.response_received_left.connect(_on_response_received.bind($pribor_afsp_1)) + scouting.request_sent_right.connect(_on_request_sent_left.bind($pribor_afsp_2)) + scouting.response_received_right.connect(_on_response_received.bind($pribor_afsp_2)) + func online_change_arr(_u, conn_node, pribor_meta): @@ -180,7 +183,7 @@ func _on_request_sent_left(_url: String, node: Node) -> void: func _on_response_received(_response: String, _success: bool, node: Node): node.progress_value = 100 - node.progress_visible = false + #node.progress_visible = false ## Прием сигналов о текущем состояниях приборах diff --git a/scripts/rtr.gd b/scripts/rtr.gd index 4d762ac6..51530f94 100644 --- a/scripts/rtr.gd +++ b/scripts/rtr.gd @@ -141,6 +141,8 @@ func _on_start_contol_device() -> void: # Загружаем URL адреса из ProjectSettings addresses['Адрес АФСП левого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес АФСП левого борта') addresses['Адрес АФСП правого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес АФСП правого борта') + addresses['Адрес БПО левого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес БПО левого борта') + addresses['Адрес БПО правого борта'] = ProjectSettings.get_setting('application/config/%s' % 'Адрес БПО правого борта') timeout = float(ProjectSettings.get_setting('application/config/%s' % 'Период опроса состояния АФСП, секунды')) # Начинаем с запроса к левому борту _request_next(State.REQUESTING_LEFT) @@ -162,6 +164,21 @@ func _on_request_completed(result: int, response_code: int, _headers: PackedStri var response_text = body.get_string_from_utf8() _save_response(response_text) + # Быстрый подсчёт для лога + var json = JSON.new() + if json.parse(response_text) == OK: + var data = json.data + var self_tests = data.get("SelfTest", []) + var total = 0 + var passed = 0 + for test in self_tests: + for system in test.get("SystemList", []): + for dev in system.get("DevList", []): + total += 1 + if dev.get("TestPassed", false): + passed += 1 + print("[rtr] Ответ от %s: %d/%d тестов пройдено" % ["левого" if is_left else "правого", passed, total]) + # Обновляем статус online if is_left: last_success_time_left = current_time @@ -190,15 +207,13 @@ func _on_request_completed(result: int, response_code: int, _headers: PackedStri # Сигнал от таймера - истекло время ожидания ответа func _on_timeout() -> void: + var was_left = (current_state == State.REQUESTING_LEFT) current_state = State.WAITING_TIMEOUT http_request.cancel_request() var timeout_msg = 'Таймаут %.1f секунд - %s' % [timeout, get_result_string(HTTPRequest.Result.RESULT_TIMEOUT)] _save_error(timeout_msg) - - var is_left = (current_state == State.REQUESTING_LEFT) - # Обновляем статус online (таймаут = offline) - if is_left: + if was_left: _update_online_status("left", false) emit_signal('response_received_left', timeout_msg, false) else: