Доработка выхода из контроля

This commit is contained in:
TotMaxim
2025-11-30 21:29:36 +03:00
parent ed82e5b67d
commit bee611be07
5 changed files with 48 additions and 40 deletions

View File

@@ -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):

View File

@@ -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= [&"уарэп-эмс"]]

View File

@@ -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:

View File

@@ -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