From a3ee95d95af2afd96cbc52bac5d3896c71efd94e Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 31 Oct 2024 14:29:23 +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=9E=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=A1=D0=9F=D0=A2-25=20=D0=B2=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B6=D0=B8=D0=BC=D0=B5=20=D0=9A=D0=BE=D0=BD=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame/frame.tscn | 3 ++- scenes/pribor-uyep/block-input.tscn | 24 ++++++++++++++++++++++-- scenes/pribor-uyep/spt25-view.gd | 26 ++++++++++++++++++-------- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/scenes/frame/frame.tscn b/scenes/frame/frame.tscn index e9b6f5e..d426854 100644 --- a/scenes/frame/frame.tscn +++ b/scenes/frame/frame.tscn @@ -12,6 +12,7 @@ patch_margin_top = 30 patch_margin_right = 15 patch_margin_bottom = 10 script = ExtResource("2_ki0kf") +text = "заголовок" [node name="header" type="Label" parent="."] clip_contents = true @@ -21,6 +22,6 @@ anchor_right = 1.0 offset_bottom = 22.0 grow_horizontal = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) -text = "caption text" +text = "заголовок" horizontal_alignment = 1 vertical_alignment = 1 diff --git a/scenes/pribor-uyep/block-input.tscn b/scenes/pribor-uyep/block-input.tscn index 429c081..89cb9ab 100644 --- a/scenes/pribor-uyep/block-input.tscn +++ b/scenes/pribor-uyep/block-input.tscn @@ -21,6 +21,19 @@ signal pressed(control: PanelContainer) fname = v $margin/vbox/title/fname.text = v +@export var state: int: + set(v): + state = v + if v == 0: + $margin/vbox/title/lbl_using.text = 'неизвестно' + $margin/vbox/title/lbl_using.self_modulate = Color.CADET_BLUE + elif v == 1: + $margin/vbox/title/lbl_using.text = 'используется' + $margin/vbox/title/lbl_using.self_modulate = Color.GREEN + elif v == 2: + $margin/vbox/title/lbl_using.text = 'отключено' + $margin/vbox/title/lbl_using.self_modulate = Color.WHITE + @export var state0: int: set(v): @@ -114,16 +127,23 @@ alignment = -1 [node name="title" type="GridContainer" parent="margin/vbox"] layout_mode = 2 +columns = 2 [node name="fname" type="Label" parent="margin/vbox/title"] self_modulate = Color(1, 1, 1, 0.627451) layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 6 +size_flags_horizontal = 6 theme_override_font_sizes/font_size = 17 horizontal_alignment = 1 vertical_alignment = 1 +[node name="lbl_using" type="Label" parent="margin/vbox/title"] +layout_mode = 2 +size_flags_horizontal = 6 +text = "неизвестно" +horizontal_alignment = 1 +vertical_alignment = 1 + [node name="table" type="GridContainer" parent="margin/vbox"] layout_mode = 2 columns = 2 diff --git a/scenes/pribor-uyep/spt25-view.gd b/scenes/pribor-uyep/spt25-view.gd index 052493b..7e4b69b 100644 --- a/scenes/pribor-uyep/spt25-view.gd +++ b/scenes/pribor-uyep/spt25-view.gd @@ -14,7 +14,7 @@ func _enter_tree() -> void: if Engine.is_editor_hint(): return var unit_key = settings.get_unit_key(unit_name) var unit = network.units[unit_key] - unit.connect('data_received', on_data_received) + unit.connect('data_received', on_data_received.bind(unit)) unit.connect('line_changed', on_line_changed) @@ -24,11 +24,13 @@ func on_line_changed(unit): $block_output.state0 = STATE_VAL.NONE $block_output.state1 = STATE_VAL.NONE $block_output.state2 = STATE_VAL.NONE + $block_input1.state = STATE_VAL.NONE $block_input1.state0 = STATE_VAL.NONE - $block_input2.state0 = STATE_VAL.NONE $block_input1.state1 = STATE_VAL.NONE - $block_input2.state1 = STATE_VAL.NONE $block_input1.state2 = STATE_VAL.NONE + $block_input2.state = STATE_VAL.NONE + $block_input2.state0 = STATE_VAL.NONE + $block_input2.state1 = STATE_VAL.NONE $block_input2.state2 = STATE_VAL.NONE @@ -39,19 +41,26 @@ func _exit_tree() -> void: unit.disconnect('data_received', on_data_received) -func on_data_received(data): +func on_data_received(data: PackedByteArray, unit): + if data.size() <= 6: + push_error('ошибка: неверная длина данных %d байт %s' % [data.size(), unit]) + return + # Сеть 1. Использование + $block_input1.state = STATE_VAL.GOOD if data[4] & (1 << 5) 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 - # Неисправность блока инвертора 1 канала + # Сеть 1. Неисправность блока инвертора 1 канала $block_input1.state1 = STATE_VAL.GOOD if (data[6] & (1 << 2)) == 0 else STATE_VAL.ERROR - # Перегрев 1 канала + # Сеть 1. Перегрев 1 канала $block_input1.state2 = STATE_VAL.GOOD if (data[5] & (1 << 3)) == 0 else STATE_VAL.ERROR + # Сеть 2. Использование + $block_input2.state = STATE_VAL.GOOD if data[4] & (1 << 6) 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 канала + # Сеть 2. Неисправность блока инвертора 2 канала $block_input2.state1 = STATE_VAL.GOOD if (data[6] & (1 << 3)) == 0 else STATE_VAL.ERROR - # Перегрев 2 канала + # Сеть 2. Перегрев 2 канала $block_input2.state2 = STATE_VAL.GOOD if (data[5] & (1 << 4)) == 0 else STATE_VAL.ERROR # Неисправность, напряжение меньше номинального, напряжение выше номинального @@ -61,6 +70,7 @@ func on_data_received(data): # Критическая температура $block_output.state2 = STATE_VAL.GOOD if ((data[5] & (1 << 5)) == 0) else STATE_VAL.ERROR + # Обобщённое состояние state = STATE_VAL.GOOD \ if $block_input1.state1 == STATE_VAL.GOOD \ and $block_input1.state2 == STATE_VAL.GOOD \