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: