From bee611be073bfa69c31068e3043d4b426a4023b5 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Sun, 30 Nov 2025 21:29:36 +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=B2=D1=8B=D1=85=D0=BE=D0=B4=D0=B0=20=D0=B8?=
=?UTF-8?q?=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/pribor-uf/pribor-uf.gd | 43 ++++++++++++++++++---------------
scenes/pribor-uf/pribor-uf.tscn | 7 +-----
scenes/контроль/control_prd.gd | 17 ++++++++++++-
scenes/контроль/контроль.tscn | 14 +++--------
scripts/pribor-prd.gd | 7 +++---
5 files changed, 48 insertions(+), 40 deletions(-)
diff --git a/scenes/pribor-uf/pribor-uf.gd b/scenes/pribor-uf/pribor-uf.gd
index 40c729a7..acd59501 100644
--- a/scenes/pribor-uf/pribor-uf.gd
+++ b/scenes/pribor-uf/pribor-uf.gd
@@ -1,35 +1,39 @@
@tool
class_name pribor_uf extends 'res://scenes/контроль/прибор.gd'
+signal control_is_over(device_name: String) # Когда контроль завершен
enum STATE_VAL {NONE = 0, GOOD = 1, ERROR = 2}
-const DEV_LIST = ['00:1f.6', '07:00.0', '08:00.0', '0b:00.0']
-const USB_TRACKERBALL = '13ba:0018'
-const REVFF = '(rev ff)'
+const DEV_LIST: Array = ['00:1f.6', '07:00.0', '08:00.0', '0b:00.0']
+const USB_TRACKERBALL: String = '13ba:0018'
+const REVFF: String = '(rev ff)'
+var unit_uf: Object
var ctrl_pos = 100
func _ready() -> void:
- if Engine.is_editor_hint():
- return
- var unit_uf: = network.get_unit_instance('уарэп-эмс')
+ if Engine.is_editor_hint(): return
+ signaller.conn(signaller.start_contol_device, Callable(self, '_on_start_contol_device'))
+ unit_uf = network.get_unit_instance('уарэп-эмс')
unit_uf.connect('line_changed', on_line_changed)
- control_vk()
- on_line_changed(unit_uf)
+ on_line_changed()
+ #control_vk()
+ control_ems(unit_uf.status)
+ status_uf()
find_labels(self)
-func on_timer(unit_name: StringName):
- var unit_uf = network.get_unit_instance(unit_name)
- if unit_uf.online: # проверка ЯУ, внутреннего коммутатора и ИП-5Б
- control_ems(unit_uf.status) # проверка ЭМС ячеек
+func _on_start_contol_device():
+ on_line_changed()
+ control_ems(unit_uf.status) # проверка ЭМС ячеек
status_uf() # отслеживание состояния прибора
-func on_line_changed(unit_uf):
+func on_line_changed():
if unit_uf.online: # проверка ЯУ, внутреннего коммутатора и ИП-5Б
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.GOOD
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.GOOD
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.GOOD
+ $ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.GOOD ## заглушка для зеленения ВК-110
else:
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.ERROR
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.NONE
@@ -38,6 +42,7 @@ func on_line_changed(unit_uf):
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.NONE
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.NONE
$ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.NONE
+ $ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.NONE
func control_vk() -> void:
@@ -76,14 +81,13 @@ func control_vk() -> void:
else:
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.ERROR
- $ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.GOOD ## заглушка для зеленения ВК-110
-
func control_ems(status: Array) -> void:
- $ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.GOOD if ((status[0] >> 0) & 1) and ((status[0] >> 3) & 1) else STATE_VAL.ERROR
- $ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.GOOD if ((status[0] >> 1) & 1) and ((status[0] >> 4) & 1) else STATE_VAL.ERROR
- $ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.GOOD if ((status[0] >> 2) & 1) and ((status[0] >> 5) & 1) else STATE_VAL.ERROR
- $ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.GOOD if ((status[2] >> 6) & 1) else STATE_VAL.ERROR
+ if status:
+ $ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.GOOD if ((status[0] >> 0) & 1) and ((status[0] >> 3) & 1) else STATE_VAL.ERROR
+ $ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.GOOD if ((status[0] >> 1) & 1) and ((status[0] >> 4) & 1) else STATE_VAL.ERROR
+ $ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.GOOD if ((status[0] >> 2) & 1) and ((status[0] >> 5) & 1) else STATE_VAL.ERROR
+ $ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.GOOD if ((status[2] >> 6) & 1) else STATE_VAL.ERROR
func status_uf() -> void:
@@ -103,6 +107,7 @@ func status_uf() -> void:
$lbl_header2.text = 'Прибор неисправен'
$lbl_header2.modulate = Color.RED
$lbl_header2.visible = true
+ emit_signal('control_is_over', unit_uf.name)
func find_labels(node1: Node):
diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn
index 82ceaaf2..8e281371 100644
--- a/scenes/pribor-uf/pribor-uf.tscn
+++ b/scenes/pribor-uf/pribor-uf.tscn
@@ -150,13 +150,10 @@ offset_top = 1009.0
offset_right = 757.0
offset_bottom = 1064.0
theme_override_font_sizes/font_size = 22
-text = "Состояние неизвестно..."
+text = "Ожидание запуска контроля"
horizontal_alignment = 1
vertical_alignment = 1
-[node name="timer" type="Timer" parent="."]
-autostart = true
-
[node name="line" type="Line2D" parent="."]
position = Vector2(195, 950)
scale = Vector2(1.03548, 1)
@@ -164,5 +161,3 @@ points = PackedVector2Array(-8, 0, 61.8069, 0, 608, 0)
width = 2.0
default_color = Color(1, 1, 1, 0.352941)
metadata/_edit_lock_ = true
-
-[connection signal="timeout" from="timer" to="." method="on_timer" binds= [&"уарэп-эмс"]]
diff --git a/scenes/контроль/control_prd.gd b/scenes/контроль/control_prd.gd
index 08306016..6e9a9d74 100644
--- a/scenes/контроль/control_prd.gd
+++ b/scenes/контроль/control_prd.gd
@@ -4,6 +4,7 @@ var base_style: StyleBoxFlat
var tween
var pulsing: bool = false
var original_text: String
+var flag_control_is_over: bool = false
func _ready():
@@ -41,6 +42,7 @@ func _setup_signals() -> void:
func _on_pressed():
disabled = true
text = "Идет выполнение контроля"
+ flag_control_is_over = false
_start_pulse()
@@ -72,7 +74,20 @@ func _stop_pulse():
func _on_status_change():
- _stop_pulse()
+ if not flag_control_is_over:
+ _stop_pulse()
+
+
+func _on_stop_control():
+ var time_dict = Time.get_datetime_dict_from_system()
+ text = 'Контроль выполнен %02d:%02d/%02d.%02d' % [
+ time_dict.hour,
+ time_dict.minute,
+ time_dict.day,
+ time_dict.month]
+ disabled = false
+ tooltip_text = 'Нажать для повторного контроля '
+ flag_control_is_over = true
func _exit_tree() -> void:
diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn
index f917b9b3..58bc869e 100644
--- a/scenes/контроль/контроль.tscn
+++ b/scenes/контроль/контроль.tscn
@@ -57,7 +57,7 @@ const PRIBORS_RES = \\
var ctl_btn_state := false
var cur_pribor_node = null
var check_ready_control: Dictionary = {}
-var device_wait_control_result:Array = ['1н', '2н', '3н', '4н', '1в', '2в', '3в', '4в', '1к', '2к', '3к', '4к',]
+var device_wait_control_result:Array = ['1н', '2н', '3н', '4н', '1в', '2в', '3в', '4в', '1к', '2к', '3к', '4к']
func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online)
@@ -107,6 +107,7 @@ func _ready():
prd_module.unit_control.connect('control_is_over', Callable(self, 'on_control_is_over'))
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')
@@ -198,14 +199,7 @@ func on_control_is_over(pribor_name: String) -> void:
check_ready_control[pribor_name] = true
if not _is_all_control_complete(): return
# После завершения контроля всех приборов
- var time_dict = Time.get_datetime_dict_from_system()
- $control_prd_button.text = 'Контроль выполнен %02d:%02d/%02d.%02d' % [
- time_dict.hour,
- time_dict.minute,
- time_dict.day,
- time_dict.month]
- $control_prd_button.disabled = false
- $control_prd_button.tooltip_text = 'Нажать для повторного контроля '
+ $control_prd_button._on_stop_control()
func _is_all_control_complete() -> bool:
@@ -549,12 +543,10 @@ texture_normal = ExtResource("2_0nvm1")
stretch_mode = 0
script = ExtResource("3_4pt7j")
state_colors = [Color(1, 1, 1, 1), Color(0, 1, 0, 1), Color(1, 0, 0, 1)]
-state = 1
metadata/unit_name = ["уарэп-эмс"]
metadata/online_proc = "on_line_changed"
[node name="label" type="Label" parent="pribor_uf"]
-self_modulate = Color(0, 1, 0, 1)
layout_mode = 0
offset_left = 15.0
offset_top = -44.0
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index 58ca196c..bbef429b 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -867,15 +867,16 @@ func on_mode_changed(in_tree: bool) -> void:
constants.ADDR_UG_LITERA_1, DATA_EXIT_CONTOL_ISA,
constants.ADDR_UG_LITERA_2, DATA_EXIT_CONTOL_ISA,
constants.ADDR_UG_LITERA_3, DATA_EXIT_CONTOL_ISA]])
- flags.control_is_over = false
flags.no_trust_yau07 = false
flags.only_fs = false
flags.ecm_is_comming = false
flags.in_control = false
progress_value = 0
- machine_timer.stop()
_handle_fs_turn_off_state()
- restore_default_states()
+ if not machine_timer.is_stopped():
+ flags.control_is_over = false
+ restore_default_states()
+ machine_timer.stop()
else: ## При нажатии на режим контроль
_set_status('Ожидание запуска контроля')