From 8403f307a27f2039d78f30e2b3955aca580e7aaf Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 30 Oct 2024 16:32:17 +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=A0=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D1=83=D1=8E=D1=89=D0=B5=D0=B5=20=D1=81=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B5=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=A1=D0=9F=D0=A2?= =?UTF-8?q?-25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-uyep/spt25-view.gd | 37 +++++++++++++++++++++----------- scenes/контроль/элемент-я.gd | 9 ++++++++ scenes/контроль/элемент-я.tscn | 16 +++++++++++--- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/scenes/pribor-uyep/spt25-view.gd b/scenes/pribor-uyep/spt25-view.gd index f596df70..c68f0696 100644 --- a/scenes/pribor-uyep/spt25-view.gd +++ b/scenes/pribor-uyep/spt25-view.gd @@ -41,21 +41,34 @@ func _exit_tree() -> void: func on_data_received(data): + # Сеть 1. Вход + $block_input1.state0 = STATE_VAL.GOOD if ((data[4] & (1 << 1)) == 0) and ((data[4] & (1 << 3)) == 0) else STATE_VAL.ERROR + # Неисправность блока инвертора 1 канала + $block_input1.state1 = STATE_VAL.GOOD if (data[6] & (1 << 2)) == 0 else STATE_VAL.ERROR + # Перегрев 1 канала + $block_input1.state2 = STATE_VAL.GOOD if (data[5] & (1 << 3)) == 0 else STATE_VAL.ERROR + + # Сеть 2. Вход + $block_input2.state0 = STATE_VAL.GOOD if ((data[4] & (1 << 2)) == 0) and ((data[4] & (1 << 4)) == 0) else STATE_VAL.ERROR + # Неисправность блока инвертора 2 канала + $block_input2.state1 = STATE_VAL.GOOD if (data[6] & (1 << 3)) == 0 else STATE_VAL.ERROR + # Перегрев 2 канала + $block_input2.state2 = STATE_VAL.GOOD if (data[5] & (1 << 4)) == 0 else STATE_VAL.ERROR + # Неисправность, напряжение меньше номинального, напряжение выше номинального $block_output.state0 = STATE_VAL.GOOD if ((data[4] & (1 << 0)) == 0) and ((data[4] & (1 << 7)) == 0) and ((data[5] & (1 << 2)) == 0) else STATE_VAL.ERROR # Перегрузка и короткое замыкание по выходу $block_output.state1 = STATE_VAL.GOOD if ((data[5] & (1 << 0)) == 0) and ((data[5] & (1 << 1)) == 0) else STATE_VAL.ERROR # Критическая температура $block_output.state2 = STATE_VAL.GOOD if ((data[5] & (1 << 5)) == 0) else STATE_VAL.ERROR - # Сеть 1. Вход - $block_input1.state0 = STATE_VAL.GOOD if ((data[4] & (1 << 1)) == 0) and ((data[4] & (1 << 3)) == 0) else STATE_VAL.ERROR - # Сеть 2. Вход - $block_input2.state0 = STATE_VAL.GOOD if ((data[4] & (1 << 2)) == 0) and ((data[4] & (1 << 4)) == 0) else STATE_VAL.ERROR - # Неисправность блока инвертора 1 канала - $block_input1.state1 = STATE_VAL.GOOD if (data[6] & (1 << 2)) == 0 else STATE_VAL.ERROR - # Неисправность блока инвертора 2 канала - $block_input2.state1 = STATE_VAL.GOOD if (data[6] & (1 << 3)) == 0 else STATE_VAL.ERROR - # Перегрев 1 канала - $block_input1.state2 = STATE_VAL.GOOD if (data[5] & (1 << 3)) == 0 else STATE_VAL.ERROR - # Перегрев 2 канала - $block_input2.state2 = STATE_VAL.GOOD if (data[5] & (1 << 4)) == 0 else STATE_VAL.ERROR + + state = STATE_VAL.GOOD \ + if $block_input1.state1 == STATE_VAL.GOOD \ + and $block_input1.state2 == STATE_VAL.GOOD \ + and $block_input2.state0 == STATE_VAL.GOOD \ + and $block_input2.state1 == STATE_VAL.GOOD \ + and $block_input2.state2 == STATE_VAL.GOOD \ + and $block_output.state0 == STATE_VAL.GOOD \ + and $block_output.state1 == STATE_VAL.GOOD \ + and $block_output.state2 == STATE_VAL.GOOD \ + else STATE_VAL.ERROR diff --git a/scenes/контроль/элемент-я.gd b/scenes/контроль/элемент-я.gd index 5afb5177..d9f4e76a 100644 --- a/scenes/контроль/элемент-я.gd +++ b/scenes/контроль/элемент-я.gd @@ -2,6 +2,9 @@ extends Control +@export var textures: Array + + signal pressed(control: PanelContainer) @@ -9,6 +12,12 @@ func _on_button_pressed(): emit_signal('pressed', self) +@export var state: int: + set(v): + state = tools.clip_value(v, 0, textures.size() - 1) + $margin/vbox/grid/state.texture = textures[v] + + @export var fname: String: set(v): fname = v diff --git a/scenes/контроль/элемент-я.tscn b/scenes/контроль/элемент-я.tscn index 3ec2da49..ecb3520b 100644 --- a/scenes/контроль/элемент-я.tscn +++ b/scenes/контроль/элемент-я.tscn @@ -1,6 +1,9 @@ -[gd_scene load_steps=9 format=3 uid="uid://btpc78gucr57f"] +[gd_scene load_steps=12 format=3 uid="uid://btpc78gucr57f"] [ext_resource type="Script" path="res://scenes/контроль/элемент-я.gd" id="1_fwxi0"] +[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="3_dktys"] +[ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="3_t4y6r"] +[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="4_bdhnj"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_or1kj"] [sub_resource type="GDScript" id="GDScript_45hqb"] @@ -48,6 +51,7 @@ anchors_preset = 0 offset_right = 180.0 offset_bottom = 155.0 script = ExtResource("1_fwxi0") +textures = [ExtResource("3_dktys"), ExtResource("3_t4y6r"), ExtResource("4_bdhnj")] [node name="rect" type="NinePatchRect" parent="."] layout_mode = 2 @@ -79,7 +83,13 @@ layout_mode = 2 [node name="grid" type="GridContainer" parent="margin/vbox"] layout_mode = 2 -columns = 2 +columns = 3 + +[node name="state" type="TextureRect" parent="margin/vbox/grid"] +custom_minimum_size = Vector2(24, 24) +layout_mode = 2 +texture = ExtResource("3_dktys") +expand_mode = 1 [node name="fname" type="Label" parent="margin/vbox/grid"] self_modulate = Color(1, 1, 1, 0.627451) @@ -92,7 +102,7 @@ vertical_alignment = 1 [node name="rname" type="Label" parent="margin/vbox/grid"] layout_mode = 2 -size_flags_horizontal = 3 +size_flags_horizontal = 10 size_flags_vertical = 6 theme_override_font_sizes/font_size = 22 horizontal_alignment = 2