From a9edc1c6cef7bfaaee41f89241188d4bf60b1a32 Mon Sep 17 00:00:00 2001 From: lepshiy Date: Thu, 21 Nov 2024 11:49:18 +0300 Subject: [PATCH 1/8] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20metadata=20=D0=B2=20bort-rtr=20=D0=9D=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20=D0=B2=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/frm-ecm-list.gd | 1 + scenes/frame-ecm-list/frm-ecm-list.tscn | 8 +- scenes/pribor-rtr/bort-rtr.tscn | 158 +++++++++++------------- scenes/настройки/настройки.gd | 67 +++++++++- scenes/настройки/настройки.tscn | 51 ++++++-- scenes/работа/CharacterBody2D.gd | 28 ++--- scripts/yems-boards.gd | 1 - 7 files changed, 198 insertions(+), 116 deletions(-) diff --git a/scenes/frame-ecm-list/frm-ecm-list.gd b/scenes/frame-ecm-list/frm-ecm-list.gd index c073e96c..72ae31d4 100644 --- a/scenes/frame-ecm-list/frm-ecm-list.gd +++ b/scenes/frame-ecm-list/frm-ecm-list.gd @@ -4,6 +4,7 @@ class_name frm_ecm_list extends NinePatchRect ## Called when the node enters the scene tree for the first time. func _ready(): $grd_forced/btn_cancel.button_connect('pressed', Callable(self, 'on_btn_cancel_pressed').bind($grd_forced/btn_cancel)) + $grd_forced/btn_panika.button_connect('pressed', Callable(self, 'on_btn_panika_pressed').bind($grd_forced/btn_panika)) func on_btn_cancel_pressed(btn): diff --git a/scenes/frame-ecm-list/frm-ecm-list.tscn b/scenes/frame-ecm-list/frm-ecm-list.tscn index 3b8c4c1c..e5eeda44 100644 --- a/scenes/frame-ecm-list/frm-ecm-list.tscn +++ b/scenes/frame-ecm-list/frm-ecm-list.tscn @@ -57,7 +57,7 @@ size_flags_vertical = 3 tooltip_text = "Включает принудительную помеху" strips_rotation = 15.0 text = "СРН" -metadata/rfi_name = "ozp1" +metadata/rfi_name = "srn" [node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] editor_description = "Кнопка для принудительного включения группы секторов в режим JTIDS" @@ -66,7 +66,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 15.0 text = "СПРС" -metadata/rfi_name = "ozp1" +metadata/rfi_name = "sprs" [node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] layout_mode = 2 @@ -75,7 +75,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД" strips_rotation = 15.0 text = "КУПД" -metadata/rfi_name = "ozp1" +metadata/rfi_name = "kupd" [node name="btn_panika" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] layout_mode = 2 @@ -84,7 +84,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД" strips_rotation = 15.0 text = "Паника" -metadata/rfi_name = "ozp1" +metadata/rfi_name = "" [node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")] layout_mode = 2 diff --git a/scenes/pribor-rtr/bort-rtr.tscn b/scenes/pribor-rtr/bort-rtr.tscn index ef41d32b..08140145 100644 --- a/scenes/pribor-rtr/bort-rtr.tscn +++ b/scenes/pribor-rtr/bort-rtr.tscn @@ -70,10 +70,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 1" -metadata/value0 = "SelfTest[1].DevList[1].DevList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[0]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[0]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[0]['ErCode']", "SelfTest[1].DevList[1].DevList[0]['ErCode']", "SelfTest[2].DevList[1].DevList[0]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[0]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[0]['TestPassed']" +metadata/value2 = "SelfTest[0].DevList[1].DevList[0]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[0]['ErrorText']", "SelfTest[1].DevList[1].DevList[0]['ErrorText']", "SelfTest[2].DevList[1].DevList[0]['ErrorText']"] [node name="kanal2" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -94,10 +94,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 2" -metadata/value0 = "SelfTest[1].DevList[1].DevList[1]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[1]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[1]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[1]['ErCode']", "SelfTest[1].DevList[1].DevList[1]['ErCode']", "SelfTest[2].DevList[1].DevList[1]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[1]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[1]['TestPassedt']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[1]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[1]['ErrorText']", "SelfTest[1].DevList[1].DevList[1]['ErrorText']", "SelfTest[2].DevList[1].DevList[1]['ErrorText']"] [node name="kanal3" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -118,10 +118,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 3" -metadata/value0 = "SelfTest[1].DevList[1].DevList[2]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[2]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[2]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[2]['ErCode']", "SelfTest[1].DevList[1].DevList[2]['ErCode']", "SelfTest[2].DevList[1].DevList[2]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[2]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[2]['TestPassed']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[2]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[2]['ErrorText']", "SelfTest[1].DevList[1].DevList[2]['ErrorText']", "SelfTest[2].DevList[1].DevList[2]['ErrorText']"] [node name="kanal4" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -142,10 +142,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 4" -metadata/value0 = "SelfTest[1].DevList[1].DevList[3]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[3]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[3]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[3]['ErCode']", "SelfTest[1].DevList[1].DevList[3]['ErCode']", "SelfTest[2].DevList[1].DevList[3]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[3]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[3]['TestPassed']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[3]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[3]['ErrorText']", "SelfTest[1].DevList[1].DevList[3]['ErrorText']", "SelfTest[2].DevList[1].DevList[3]['ErrorText']"] [node name="kanal5" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -166,10 +166,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 5" -metadata/value0 = "SelfTest[1].DevList[1].DevList[4]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[4]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[4]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[4]['ErCode']", "SelfTest[1].DevList[1].DevList[4]['ErCode']", "SelfTest[2].DevList[1].DevList[4]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[4]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[4]['TestPassed']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[4]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[4]['ErrorText']", "SelfTest[1].DevList[1].DevList[4]['ErrorText']", "SelfTest[2].DevList[1].DevList[4]['ErrorText']"] [node name="kanal6" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -190,10 +190,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 6" -metadata/value0 = "SelfTest[1].DevList[1].DevList[5]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[5]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[5]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[5]['ErCode']", "SelfTest[1].DevList[1].DevList[5]['ErCode']", "SelfTest[2].DevList[1].DevList[5]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[5]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[5]['TestPassed']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[5]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[5]['ErrorText']", "SelfTest[1].DevList[1].DevList[5]['ErrorText']", "SelfTest[2].DevList[1].DevList[5]['ErrorText']"] [node name="kanal7" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -214,10 +214,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 7" -metadata/value0 = "SelfTest[1].DevList[1].DevList[6]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[6]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[6]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[6]['ErCode']", "SelfTest[1].DevList[1].DevList[6]['ErCode']", "SelfTest[2].DevList[1].DevList[6]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[6]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[6]['TestPassed']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[6]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[6]['ErrorText']", "SelfTest[1].DevList[1].DevList[6]['ErrorText']", "SelfTest[2].DevList[1].DevList[6]['ErrorText']"] [node name="kanal8" parent="konverter/grid" instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -238,10 +238,10 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Канал 8" -metadata/value0 = "SelfTest[1].DevList[1].DevList[7]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[1].DevList[7]['CurrentValue']" -metadata/value2 = "SelfTest[0].DevList[1].DevList[7]['ErCode']" -metadata/state = ["SelfTest[0].DevList[1].DevList[7]['ErCode']", "SelfTest[1].DevList[1].DevList[7]['ErCode']", "SelfTest[2].DevList[1].DevList[7]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[7]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[1].DevList[7]['TestPassed']" +metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[7]['TestPassed']" +metadata/state = ["SelfTest[0].DevList[1].DevList[7]['ErrorText']", "SelfTest[1].DevList[1].DevList[7]['ErrorText']", "SelfTest[2].DevList[1].DevList[7]['ErrorText']"] [node name="antenna1" type="NinePatchRect" parent="."] layout_mode = 0 @@ -283,9 +283,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 1" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[0]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[0]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[0]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[0]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[0]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[0]['ErrorText']"] [node name="yelement2" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -297,9 +296,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 2" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[1]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[1]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[1]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[1]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[1]['TestPassed']" +metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[1]['ErrorText']"] [node name="yelement3" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -311,8 +309,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 3" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[2]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[2]['CurrentValue']" +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[2]['TestPassed']" +metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[2]['ErrorText']" metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[2]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[2]['ErCode']"] [node name="yelement4" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] @@ -325,9 +323,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 4" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[3]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[3]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[3]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[3]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[3[]'TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[3]['ErrorText']"] [node name="yelement5" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -339,9 +336,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 5" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[4]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[4]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[4]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[4]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[4]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[4]['ErrorText']"] [node name="yelement6" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -353,8 +349,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 6" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[5]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[5]['CurrentValue']" +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[5]['TestPassed']" +metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[5]['ErrorText']" metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[5]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[5]['ErCode']"] [node name="yelement7" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] @@ -367,9 +363,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 7" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[6]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[6]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[6]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[6]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[6]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[6]['ErrorText']"] [node name="yelement8" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -381,9 +376,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 8" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[7]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[7]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[7]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[7]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[7]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[7]['ErrorText']"] [node name="yelement9" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -395,9 +389,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 9" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[8]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[8]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[8]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[8]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[8]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[8]['ErrorText']"] [node name="yelement10" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -409,9 +402,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 10" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[9]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[9]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[9]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[9]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[9]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[9]['ErrorText']"] [node name="yelement11" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -423,9 +415,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 11" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[10]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[10]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[10]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[10]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[10]['TestPassed']" +metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[10]['ErCode']SelfTest[3].SystemList[0].SystemList[0].DevList[10]['ErrorText']"] [node name="yelement12" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -437,9 +428,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 12" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[11]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[11]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[11]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[11]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[11]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[11]['ErrorText']"] [node name="yelement13" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -451,9 +441,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 13" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[12]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[12]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[12]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[12]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[12]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[12]['ErrorText']"] [node name="yelement14" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -465,9 +454,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 14" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[13]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[13]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[13]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[13]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[13]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[13]['ErrorText']"] [node name="yelement15" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -479,9 +467,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 15" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[14]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[14]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[14]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[14]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[14]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[14]['ErrorText']"] [node name="yelement16" parent="antenna1/grid" instance=ExtResource("3_5ikxk")] layout_mode = 2 @@ -493,9 +480,8 @@ max_value1 = 10.0 value_name0 = "А" value_name1 = "φ" fname = "Элемент 16" -metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[15]['CurrentValue']" -metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[15]['CurrentValue']" -metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[15]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[15]['ErCode']"] +metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[15]['TestPassed']" +metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[15]['ErrorText']"] [node name="antenna2" type="NinePatchRect" parent="."] layout_mode = 0 @@ -757,7 +743,7 @@ offset_top = 114.0 offset_right = 290.0 offset_bottom = 156.0 fname = "АЦП" -metadata/state = ["SelfTest[5].DevList[0]['ErCode']"] +metadata/state = ["SelfTest[4].SystemList[0].DevList[0]['TestPassed']"] [node name="dsp" parent="." instance=ExtResource("4_mtf2n")] layout_mode = 0 @@ -766,7 +752,7 @@ offset_top = 114.0 offset_right = 581.0 offset_bottom = 156.0 fname = "Сигнальный процессор" -metadata/state = ["SelfTest[5].DevList[1]['ErCode']"] +metadata/state = ["SelfTest[4].SystemList[0].DevList[1]['ErrorText']"] [node name="gen" parent="." instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -783,9 +769,9 @@ name_min_size0 = Vector2i(35, 20) name_min_size1 = Vector2i(35, 20) name_min_size2 = Vector2i(35, 20) fname = "Генератор" -metadata/value0 = "SelfTest[1].DevList[2]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[2]['CurrentValue']" -metadata/state = ["SelfTest[0].DevList[2]['ErCode']", "SelfTest[1].DevList[2]['ErCode']", "SelfTest[2].DevList[2]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[2].DeviceList[0]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[2].DevList[0]['TestPassed']" +metadata/state = ["SelfTest[0].SystemList[2].DeviceList[0]['ErrorText']", "SelfTest[1].SystemList[2].DeviceList[0]['ErrorText']", "SelfTest[2].SystemList[2].DevList[0]['ErrorText']"] [node name="rpu" parent="." instance=ExtResource("2_dmhrm")] layout_mode = 2 @@ -803,9 +789,9 @@ 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].DevList[0]['CurrentValue']" -metadata/value1 = "SelfTest[2].DevList[0]['CurrentValue']" -metadata/state = ["SelfTest[0].DevList[0]['ErCode']", "SelfTest[1].DevList[0]['ErCode']", "SelfTest[2].DevList[0]['ErCode']"] +metadata/value0 = "SelfTest[1].SystemList[0].DeviceList[0]['TestPassed']" +metadata/value1 = "SelfTest[2].SystemList[0].DevList[0]['TestPassed']" +metadata/state = ["SelfTest[0].SystemList[0].DeviceList[0]['ErrorText']", "SelfTest[1].SystemList[0].DeviceList[0]['ErrorText']", "SelfTest[2].SystemList[0].DevList[0]['ErrorText']"] [connection signal="pressed" from="konverter/grid/kanal1" to="." method="_on_item_pressed"] [connection signal="pressed" from="konverter/grid/kanal2" to="." method="_on_item_pressed"] diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index cd817dbb..23858367 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -1,9 +1,18 @@ class_name setting extends Panel +var TableHeader = preload('res://table/header.tscn') +var TableLabel = preload('res://table/lable.tscn') +var TableTaggle = preload('res://table/taggle.tscn') +var TableEdit = preload('res://table/editl.tscn') +var TableEmpti = preload('res://table/empti.tscn') + ## Вызывается, когда узел впервые попадает в дерево сцены. func _ready() -> void: - $lbl_commit.text = 'Текущая версия ПО УАРЭП: \"%s\"' % commit.VCS_HEAD + setting_tab() + dop_set_tab() + set_tab() + $lbl_commit.text = ' \"%s\"' % commit.VCS_HEAD if not OS.get_cmdline_args().has('++ограниченный'): return $Label2.text = 'Текущий режим доступа: ограниченный' @@ -16,3 +25,59 @@ func _on_external_cu_btn_pressed() -> void: ProjectSettings.set_setting('application/config/external_cu', state) if state: signaller.emit_signal('interfer_off_all') + + +func setting_tab(): + var yams: Array = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ] + $table.set_header([TableHeader, TableHeader]) + $table.set_header_text(['Элемент', ' Показывать ']) + + for i in range(15): + $table.add_row([TableLabel, TableTaggle]) + + $table.set_row_text(0,([' Кнопка «ПД-М4» '])) + $table.set_row_text(1,([' Кнопка «ПД-М2» '])) + $table.set_row_text(2,([' Кнопка «ОЗП-1» '])) + $table.set_row_text(3,([' Кнопка «МЧМ-1» '])) + $table.set_row_text(4,([' Кнопка «ОРН-И1» '])) + $table.set_row_text(5,([' Кнопка «ОРН-М2» '])) + $table.set_row_text(6,([' Кнопка «ЛЧМ-1» '])) + $table.set_row_text(7,([' Кнопка «ПД-М4С» '])) + $table.set_row_text(8,([' Кнопка «ПД-ЧМ» '])) + $table.set_row_text(9,([' Кнопка «СВ-И1» '])) + $table.set_row_text(10,([' Кнопка «К1» '])) + $table.set_row_text(11,([' Кнопка «СВ-М2» '])) + $table.set_row_text(12,([' Кнопка «ОРН» '])) + $table.set_row_text(13,([' Кнопка «JTIDS» '])) + $table.set_row_text(14,([' Кнопка «КУПД» '])) + + $table.set_columns_min_size([150, 100]) + $table.set_columns_alignments(yams) + + +func dop_set_tab(): + var yams: Array = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ] + $table2.add_row([TableLabel, TableEmpti]) + $table2.add_row([TableLabel, TableEmpti]) + $table2.add_row([TableEmpti, TableEmpti]) + $table2.add_row([TableLabel, TableTaggle]) + $table2.add_row([TableLabel, TableTaggle]) + + $table2.set_row_text(0, (['Текущая версия ПО УАРЭП:'])) + $table2.set_row_text(1, (['Адрес сервера карт:'])) + $table2.set_row_text(2, ([''])) + $table2.set_row_text(3, (['Внешнее целеуказание.'])) + $table2.set_row_text(4, (['Кнопка «Подавление».\nОтключить отображение этой кнопки,\nчто бы тип помех применялся сразу.'])) + + + $table2.set_columns_min_size([180, 50]) + $table2.set_columns_alignments(yams) + +func set_tab(): + $table3.add_row([TableLabel, TableEmpti]) + $table3.add_row([TableLabel, TableEmpti]) + + $table3.set_row_text(0, ([' Текущий режим доступа: полный '])) + $table3.set_row_text(1, ([' Управление элементами в режиме с ограниченным доступом '])) + + $table3.set_columns_min_size([250, 5]) diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index e65b5d4a..7cd09264 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://bnptm4rlp60dq"] +[gd_scene load_steps=4 format=3 uid="uid://bnptm4rlp60dq"] [ext_resource type="Script" path="res://scenes/настройки/настройки.gd" id="1_2l3rd"] +[ext_resource type="Script" path="res://table/table.gd" id="2_6sx73"] [sub_resource type="GDScript" id="GDScript_anjmx"] script/source = "extends LineEdit @@ -17,6 +18,7 @@ func _on_text_changed(new_text: String) -> void: script = ExtResource("1_2l3rd") [node name="GridContainer" type="GridContainer" parent="."] +visible = false layout_mode = 0 offset_left = 44.0 offset_top = 87.0 @@ -235,6 +237,7 @@ size_flags_vertical = 6 button_pressed = true [node name="Label1" type="Label" parent="."] +visible = false layout_mode = 0 offset_left = 16.0 offset_top = 60.0 @@ -243,6 +246,7 @@ offset_bottom = 82.0 text = "Управление элементами в режиме с ограниченным доступом" [node name="Label2" type="Label" parent="."] +visible = false layout_mode = 0 offset_left = 20.0 offset_top = 20.0 @@ -253,13 +257,15 @@ vertical_alignment = 1 [node name="edt_mapaddr" type="LineEdit" parent="."] layout_mode = 0 -offset_left = 660.0 -offset_top = 80.0 -offset_right = 1032.0 -offset_bottom = 110.0 +offset_left = 776.0 +offset_top = 48.0 +offset_right = 1148.0 +offset_bottom = 78.0 +theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1) script = SubResource("GDScript_anjmx") [node name="Label" type="Label" parent="edt_mapaddr"] +visible = false layout_mode = 0 offset_left = -180.0 offset_right = -20.0 @@ -268,6 +274,7 @@ text = "Адрес сервера карт:" vertical_alignment = 1 [node name="GridContainer2" type="GridContainer" parent="."] +visible = false layout_mode = 0 offset_left = 478.0 offset_top = 154.0 @@ -299,12 +306,36 @@ disabled = true [node name="lbl_commit" type="Label" parent="."] layout_mode = 0 -offset_left = 500.0 -offset_top = 20.0 -offset_right = 1060.0 -offset_bottom = 50.0 -text = "Текущая версия ПО УАРЭП:" +offset_left = 776.0 +offset_top = 24.0 +offset_right = 1144.0 +offset_bottom = 54.0 +theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1) vertical_alignment = 1 +[node name="table" type="GridContainer" parent="."] +layout_mode = 0 +offset_left = 40.0 +offset_top = 88.0 +offset_right = 80.0 +offset_bottom = 128.0 +script = ExtResource("2_6sx73") + +[node name="table2" type="GridContainer" parent="."] +layout_mode = 0 +offset_left = 512.0 +offset_top = 32.0 +offset_right = 552.0 +offset_bottom = 72.0 +script = ExtResource("2_6sx73") + +[node name="table3" type="GridContainer" parent="."] +layout_mode = 0 +offset_left = 40.0 +offset_top = 32.0 +offset_right = 80.0 +offset_bottom = 72.0 +script = ExtResource("2_6sx73") + [connection signal="text_changed" from="edt_mapaddr" to="edt_mapaddr" method="_on_text_changed"] [connection signal="pressed" from="GridContainer2/external_cu_btn" to="." method="_on_external_cu_btn_pressed"] diff --git a/scenes/работа/CharacterBody2D.gd b/scenes/работа/CharacterBody2D.gd index 087beec2..eaeb4de1 100644 --- a/scenes/работа/CharacterBody2D.gd +++ b/scenes/работа/CharacterBody2D.gd @@ -9,20 +9,20 @@ var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") func _physics_process(delta): - # Add the gravity. - if not is_on_floor(): - velocity.y += gravity * delta + # Add the gravity. + if not is_on_floor(): + velocity.y += gravity * delta - # Handle jump. - if Input.is_action_just_pressed("ui_accept") and is_on_floor(): - velocity.y = JUMP_VELOCITY + # Handle jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY - # Get the input direction and handle the movement/deceleration. - # As good practice, you should replace UI actions with custom gameplay actions. - var direction = Input.get_axis("ui_left", "ui_right") - if direction: - velocity.x = direction * SPEED - else: - velocity.x = move_toward(velocity.x, 0, SPEED) + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var direction = Input.get_axis("ui_left", "ui_right") + if direction: + velocity.x = direction * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) - move_and_slide() + move_and_slide() diff --git a/scripts/yems-boards.gd b/scripts/yems-boards.gd index 1219386c..513d39d6 100644 --- a/scripts/yems-boards.gd +++ b/scripts/yems-boards.gd @@ -75,7 +75,6 @@ LOAD_KEMS, WRITE_FLASH_END} # Отправка команды на запись или чтение порта func on_wr_device(dev_number): - print_debug([id_board, dev_number]) if (state == WR_DEV_NUM_W) or (state == WR_DEV_NUM_R): unit_ems.send_isa(unit_ems.CmdCode.WRITE_ISA, [base_addr_isa + 2, dev_number]) elif state == WRITE: From d214e3d4cfcd350a9e59f94a186d268188fff180 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 09:34:50 +0300 Subject: [PATCH 2/8] =?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=9F=D0=BE=D0=B4=D1=81=D0=BA=D0=B0=D0=B7?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B0=D0=B5=D1=82=20=D1=81?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=BE/=D0=BE=D1=82=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-uyep/sch3.tscn | 3 ++- scripts/switch.gd | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 scripts/switch.gd diff --git a/scenes/pribor-uyep/sch3.tscn b/scenes/pribor-uyep/sch3.tscn index 72dd4c05..da34fc03 100644 --- a/scenes/pribor-uyep/sch3.tscn +++ b/scenes/pribor-uyep/sch3.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://dlkvu6bp6w5u7"] +[gd_scene load_steps=11 format=3 uid="uid://dlkvu6bp6w5u7"] [ext_resource type="Script" path="res://scenes/pribor-uyep/sch3-view.gd" id="1_ln7ac"] [ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="2_ln52a"] @@ -6,6 +6,7 @@ [ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="4_nijdy"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="5_skqdl"] [ext_resource type="Shader" path="res://shaders/color-invers.gdshader" id="6_ypnlb"] +[ext_resource type="Script" path="res://scripts/switch.gd" id="7_l6esm"] [sub_resource type="GDScript" id="GDScript_45hqb"] script/source = "@tool diff --git a/scripts/switch.gd b/scripts/switch.gd new file mode 100644 index 00000000..10710372 --- /dev/null +++ b/scripts/switch.gd @@ -0,0 +1,17 @@ +extends CheckButton + + +@export var off_tip: String = '(отключено)' +@export var on_tip: String = '(включено)' + + +func _ready() -> void: + if not (tooltip_text.contains(off_tip) or tooltip_text.contains(on_tip)): + tooltip_text += ' ' + tooltip_text += on_tip if button_pressed else off_tip + connect('toggled', _on_toggled) + + +func _on_toggled(state: bool): + var s = tooltip_text + tooltip_text = s.replace(off_tip, on_tip) if state else s.replace(on_tip, off_tip) From d3ec4507db4bbb7ca1bf33fcf00507839a2f1eea Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 09:37:23 +0300 Subject: [PATCH 3/8] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=95=D1=81=D0=BB=D0=B8=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=B1=D0=BE=D1=80=20=D0=BD=D0=B5=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=81=D0=B2=D1=8F=D0=B7=D0=B8,=20=D1=81=D0=BE=D0=B1=D1=8B?= =?UTF-8?q?=D1=82=D0=B8=D0=B5=20'command=5Ffail'=20=D0=BC=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D1=82=20=D0=BD=D0=B5=20=D0=B2=D1=8B=D0=B7=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/sch3.gd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/sch3.gd b/scripts/sch3.gd index a45901c4..56dbf8a3 100644 --- a/scripts/sch3.gd +++ b/scripts/sch3.gd @@ -33,10 +33,10 @@ class Sch3 extends unit.Unit: if online and ((tick - rx_tick) > ONLINE_TIMEOUT): online = false emit_signal('line_changed', self) - if cmd_state == CmdState.WAIT: - if (tick - tx_tick) > ONLINE_TIMEOUT: - cmd_state = CmdState.FAIL - emit_signal('command_fail', self) + if cmd_state == CmdState.WAIT: + if (tick - tx_tick) > ONLINE_TIMEOUT: + cmd_state = CmdState.FAIL + emit_signal('command_fail', self) var rc = Error.ERR_BUSY if cmd_state == CmdState.SEND: tx_tick = tick From 9af44dad81effc415a7ee3995c0e9c3a44acaf23 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 10:06:22 +0300 Subject: [PATCH 4/8] =?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=9F=D0=B5=D1=80=D0=B5=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D1=83=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=B2=D0=BE=D0=B7=D0=BD=D0=B8=D0=BA=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modbus/client-serial-modbus.py | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/modbus/client-serial-modbus.py b/modbus/client-serial-modbus.py index 982065fb..6fead1a1 100644 --- a/modbus/client-serial-modbus.py +++ b/modbus/client-serial-modbus.py @@ -25,16 +25,6 @@ EXCEPT_MSGS = { '': 'ошибка: получена неверная команда'} -def on_timer(*args): - sock = args[0] - json_encoder = args[1] - udp_addr = args[2] - udp_port_tx = args[3] - tx_data = json_encoder.encode({'code': 'info', 'data': 'ok'}) - sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx)) - Timer(1, on_timer, args).start() - - def main(): parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--modbus-unit', default=1, type=int, help='Номер устройства Modbus') @@ -45,13 +35,16 @@ def main(): parser.add_argument('--udp-port-tx', default=48000, type=int, help='Порт для отправки сообщений приложению') opts, opts_unk = parser.parse_known_args() print_opts_error(opts_unk) - run_sync_client(opts.udp_addr, opts.udp_port_rx, opts.udp_port_tx, opts.serial_port, opts.serial_baud, opts.modbus_unit) + while True: + run_sync_client(opts.udp_addr, opts.udp_port_rx, opts.udp_port_tx, opts.serial_port, opts.serial_baud, opts.modbus_unit) + time.sleep(3) + log.warning('Переподключение к серверу') def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud, unit_num): sock = socket(AF_INET, SOCK_DGRAM) sock.bind((udp_addr, udp_port_rx)) - log.info('привязан к адресу %s:%d' % (udp_addr, udp_port_rx)) + log.info('Привязан к адресу %s:%d' % (udp_addr, udp_port_rx)) json_decoder = json.JSONDecoder() json_encoder = json.JSONEncoder() @@ -60,11 +53,14 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud while not client.connect(): # Ждать подключения к серверу time.sleep(3) - log.info('подключен к серверу через \"%s\" на скорости %d бод' % (serial_port, serial_baud)) - - Timer(1, on_timer, [sock, json_encoder, udp_addr, udp_port_tx]).start() + log.info('Подключен к серверу через \"%s\" на скорости %d бод' % (serial_port, serial_baud)) + tx_data = json_encoder.encode({'code': 'info', 'data': 'ok'}) + sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx)) while True: - udp_data = sock.recv(2048) # Ждать команду от приложения + try: + udp_data = sock.recv(2048) # Ждать команду от приложения + except: + return udp_data = udp_data.decode('utf-8') message = json_decoder.decode(udp_data) # type: dict @@ -108,14 +104,13 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud rc_msg = EXCEPT_MSGS[code] tx_data = json_encoder.encode({'code': 'exception', 'data': rc_msg, 'unit': message['unit']}) sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx)) - log.error( - 'ошибка при выполнении команды: \"%s\". данные: \"%s\", порт: \"%s\", скорость: %s' + log.error('Команда \"%s\" не выполнена. данные: \"%s\", порт: \"%s\", скорость: %s' % (code, data, serial_port, serial_baud)) def print_opts_error(opts: list) -> None: for opt in opts: - log.warning('внимание: неизвестный аргумент: \"%s\"' % opt) + log.warning('Неизвестный аргумент: \"%s\"' % opt) if __name__ == '__main__': From 7df4ba92c29347e780895f0a2c131451422479a8 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 10:16:46 +0300 Subject: [PATCH 5/8] =?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=92=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-uyep/block-input.tscn | 10 +- scenes/pribor-uyep/pribor-uyep.tscn | 76 +++--- scenes/pribor-uyep/sch3.tscn | 399 ++++++++++++++++++---------- scenes/контроль/элемент-я.tscn | 2 + 4 files changed, 310 insertions(+), 177 deletions(-) diff --git a/scenes/pribor-uyep/block-input.tscn b/scenes/pribor-uyep/block-input.tscn index 0bd92231..49adf918 100644 --- a/scenes/pribor-uyep/block-input.tscn +++ b/scenes/pribor-uyep/block-input.tscn @@ -25,7 +25,7 @@ signal pressed(control: PanelContainer) set(v): state = v if v == 0: - $margin/vbox/title/lbl_using.text = 'неизвестно' + $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 = 'используется' @@ -139,8 +139,12 @@ vertical_alignment = 1 [node name="lbl_using" type="Label" parent="margin/vbox/title"] layout_mode = 2 -size_flags_horizontal = 6 -text = "неизвестно" +size_flags_horizontal = 3 +size_flags_vertical = 6 +tooltip_text = "Частота питающего напряжения" +mouse_filter = 0 +theme_override_font_sizes/font_size = 22 +text = "<нет данных>" horizontal_alignment = 1 vertical_alignment = 1 diff --git a/scenes/pribor-uyep/pribor-uyep.tscn b/scenes/pribor-uyep/pribor-uyep.tscn index ce935bcd..fb829cc7 100644 --- a/scenes/pribor-uyep/pribor-uyep.tscn +++ b/scenes/pribor-uyep/pribor-uyep.tscn @@ -11,18 +11,16 @@ [node name="pribor_uyep" type="Control"] layout_mode = 3 anchors_preset = 0 -offset_left = 5.0 -offset_top = -125.0 -offset_right = 5.0 -offset_bottom = -125.0 +offset_top = 5.0 +offset_bottom = 5.0 script = ExtResource("1_46rp6") [node name="ref_G1" type="NinePatchRect" parent="."] layout_mode = 0 -offset_left = 150.0 -offset_top = 184.0 -offset_right = 750.0 -offset_bottom = 955.0 +offset_left = 70.0 +offset_top = 303.0 +offset_right = 660.0 +offset_bottom = 1085.0 texture = ExtResource("1_6olof") patch_margin_left = 16 patch_margin_top = 16 @@ -31,10 +29,10 @@ patch_margin_bottom = 16 [node name="lbl_header" type="Label" parent="."] layout_mode = 0 -offset_left = 150.0 -offset_top = 156.0 -offset_right = 705.0 -offset_bottom = 182.0 +offset_left = 75.0 +offset_top = 275.0 +offset_right = 655.0 +offset_bottom = 301.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора УЭП" horizontal_alignment = 1 @@ -43,20 +41,20 @@ vertical_alignment = 1 [node name="Label" type="Label" parent="."] self_modulate = Color(0.835294, 0.141176, 0.286275, 1) layout_mode = 0 -offset_left = 135.0 -offset_top = 1295.0 -offset_right = 665.0 -offset_bottom = 1314.0 +offset_left = 95.0 +offset_top = 1125.0 +offset_right = 625.0 +offset_bottom = 1144.0 text = "** Позиционные обозначения требуют уточнения **" horizontal_alignment = 1 vertical_alignment = 1 [node name="spt25_A1" parent="." instance=ExtResource("6_60xs3")] layout_mode = 0 -offset_left = 175.0 -offset_top = 210.0 -offset_right = 415.0 -offset_bottom = 620.0 +offset_left = 88.0 +offset_top = 319.0 +offset_right = 328.0 +offset_bottom = 749.0 script = ExtResource("4_v0lil") unit_name = "уарэп-спт25-1" fname = "СПТ-25-230-400" @@ -67,30 +65,30 @@ layout_mode = 0 offset_left = 15.0 offset_top = 35.0 offset_right = 225.0 -offset_bottom = 155.0 +offset_bottom = 161.0 fname = "Сеть 1" [node name="block_input2" parent="spt25_A1" instance=ExtResource("4_mrvir")] layout_mode = 0 offset_left = 15.0 -offset_top = 155.0 +offset_top = 166.0 offset_right = 225.0 -offset_bottom = 275.0 +offset_bottom = 292.0 fname = "Сеть 2" [node name="block_output" parent="spt25_A1" instance=ExtResource("5_x74mk")] layout_mode = 0 offset_left = 15.0 -offset_top = 275.0 +offset_top = 297.0 offset_right = 225.0 -offset_bottom = 367.0 +offset_bottom = 417.0 [node name="spt25_A2" parent="." instance=ExtResource("6_60xs3")] layout_mode = 0 -offset_left = 480.0 -offset_top = 210.0 -offset_right = 720.0 -offset_bottom = 620.0 +offset_left = 403.0 +offset_top = 319.0 +offset_right = 643.0 +offset_bottom = 749.0 script = ExtResource("4_v0lil") unit_name = "уарэп-спт25-2" fname = "СПТ-25-230-400" @@ -101,25 +99,29 @@ layout_mode = 0 offset_left = 15.0 offset_top = 35.0 offset_right = 225.0 -offset_bottom = 155.0 +offset_bottom = 161.0 fname = "Сеть 1" [node name="block_input2" parent="spt25_A2" instance=ExtResource("4_mrvir")] layout_mode = 0 offset_left = 15.0 -offset_top = 155.0 +offset_top = 166.0 offset_right = 225.0 -offset_bottom = 275.0 +offset_bottom = 292.0 fname = "Сеть 2" [node name="block_output" parent="spt25_A2" instance=ExtResource("5_x74mk")] layout_mode = 0 offset_left = 15.0 -offset_top = 275.0 +offset_top = 297.0 offset_right = 225.0 -offset_bottom = 367.0 +offset_bottom = 417.0 [node name="sch3" parent="." instance=ExtResource("7_qu7ja")] -offset_right = 720.0 -offset_bottom = 925.0 -fname = "Управление Щ3" +offset_left = 88.0 +offset_top = 774.0 +offset_right = 633.0 +offset_bottom = 1059.0 +unit_name = "уарэп-щ3" +fname = "Щ3 (контроль и управление питанием)" +rname = "A3" diff --git a/scenes/pribor-uyep/sch3.tscn b/scenes/pribor-uyep/sch3.tscn index da34fc03..2b296478 100644 --- a/scenes/pribor-uyep/sch3.tscn +++ b/scenes/pribor-uyep/sch3.tscn @@ -48,11 +48,9 @@ offset_left = 175.0 offset_top = 640.0 offset_right = 730.0 offset_bottom = 935.0 +tooltip_text = "Состояние и управление прибором Щ3" script = ExtResource("1_ln7ac") textures = [ExtResource("2_ln52a"), ExtResource("3_1yamu"), ExtResource("4_nijdy")] -unit_name = "уарэп-щ3" -fname = "Щ3" -rname = "A3" [node name="rect" type="NinePatchRect" parent="."] layout_mode = 2 @@ -90,24 +88,27 @@ columns = 3 [node name="state" type="TextureRect" parent="margin/vbox/grid"] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Индикатор исправности Щ3" texture = ExtResource("2_ln52a") expand_mode = 1 [node name="fname" type="Label" parent="margin/vbox/grid"] self_modulate = Color(1, 1, 1, 0.627451) layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 6 +size_flags_horizontal = 7 +size_flags_vertical = 7 theme_override_font_sizes/font_size = 17 -text = "Щ3 - управление питанием " vertical_alignment = 1 [node name="rname" type="Label" parent="margin/vbox/grid"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 6 +tooltip_text = "Позиционное обозначение" +mouse_filter = 0 theme_override_font_sizes/font_size = 22 -text = "A3" horizontal_alignment = 2 vertical_alignment = 1 @@ -116,21 +117,25 @@ layout_mode = 2 size_flags_vertical = 6 columns = 9 -[node name="name0" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "УФ" - [node name="state0" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 0, 2, 0] +[node name="name0" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "УФ" +vertical_alignment = 1 + [node name="switch0" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "Питание УФ" material = SubResource("ShaderMaterial_c1mqk") @@ -138,23 +143,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания УФ" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 0, 2, 0] -[node name="name1" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "РТР" - [node name="state1" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 1, 2, 1] +[node name="name1" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "РТР" +vertical_alignment = 1 + [node name="switch1" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "РТР" material = SubResource("ShaderMaterial_c1mqk") @@ -162,21 +172,27 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания РТР" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 1, 2, 1] -[node name="name2" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-Н.1" - [node name="state2" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 2, 2, 2] +[node name="name2" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-Н.1" +vertical_alignment = 1 + [node name="switch2" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-Н.1" material = SubResource("ShaderMaterial_c1mqk") @@ -184,23 +200,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания ПРД-Н.1" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 2, 2, 2] -[node name="name3" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-Н.2" - [node name="state3" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 3, 2, 3] +[node name="name3" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-Н.2" +vertical_alignment = 1 + [node name="switch3" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "Питание ПРД-Н.2" material = SubResource("ShaderMaterial_c1mqk") @@ -208,23 +229,28 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания ПРД-Н.2" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 3, 2, 3] -[node name="name4" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-Н.3" - [node name="state4" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 4, 2, 4] +[node name="name4" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-Н.3" +vertical_alignment = 1 + [node name="switch4" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-Н.3" material = SubResource("ShaderMaterial_c1mqk") @@ -232,21 +258,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания ПРД-Н.3" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 4, 2, 4] -[node name="name5" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-Н.4" - [node name="state5" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 5, 2, 5] +[node name="name5" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-Н.4" +vertical_alignment = 1 + [node name="switch5" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-Н.4" material = SubResource("ShaderMaterial_c1mqk") @@ -254,23 +287,28 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания ПРД-Н.4" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 5, 2, 5] -[node name="name6" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-В.1" - [node name="state6" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 6, 2, 6] +[node name="name6" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-В.1" +vertical_alignment = 1 + [node name="switch6" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "Питание ПРД-В.1" material = SubResource("ShaderMaterial_vdwfd") @@ -278,23 +316,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания ПРД-В.1" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 6, 2, 6] -[node name="name7" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-В.2" - [node name="state7" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 7, 2, 7] +[node name="name7" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-В.2" +vertical_alignment = 1 + [node name="switch7" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-В.2" material = SubResource("ShaderMaterial_c1mqk") @@ -302,21 +345,28 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания ПРД-В.2" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 7, 2, 7] -[node name="name8" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-В.3" - [node name="state8" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 8, 2, 8] +[node name="name8" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-В.3" +vertical_alignment = 1 + [node name="switch8" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-В.3" material = SubResource("ShaderMaterial_c1mqk") @@ -324,23 +374,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания ПРД-В.3" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 8, 2, 8] -[node name="name9" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-В.4" - [node name="state9" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 9, 2, 9] +[node name="name9" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-В.4" +vertical_alignment = 1 + [node name="switch9" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "Питание ПРД-В.4" material = SubResource("ShaderMaterial_c1mqk") @@ -348,23 +403,28 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания ПРД-В.4" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 9, 2, 9] -[node name="name10" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-К.1" - [node name="state10" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 10, 2, 10] +[node name="name10" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-К.1" +vertical_alignment = 1 + [node name="switch10" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-К.1" material = SubResource("ShaderMaterial_c1mqk") @@ -372,21 +432,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания ПРД-К.1" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 10, 2, 10] -[node name="name11" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-К.2" - [node name="state11" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [0, 11, 2, 11] +[node name="name11" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-К.2" +vertical_alignment = 1 + [node name="switch11" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-К.2" material = SubResource("ShaderMaterial_c1mqk") @@ -394,23 +461,28 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания ПРД-К.2" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [0, 11, 2, 11] -[node name="name12" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-К.3" - [node name="state12" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 0, 3, 0] +[node name="name12" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-К.3" +vertical_alignment = 1 + [node name="switch12" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "Питание ПРД-К.3" material = SubResource("ShaderMaterial_c1mqk") @@ -418,21 +490,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель питания ПРД-К.3" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [1, 0, 3, 0] -[node name="name13" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ПРД-К.4" - [node name="state13" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 1, 3, 1] +[node name="name13" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ПРД-К.4" +vertical_alignment = 1 + [node name="switch13" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "ПРД-К.4" material = SubResource("ShaderMaterial_c1mqk") @@ -440,23 +519,28 @@ layout_mode = 2 size_flags_horizontal = 0 tooltip_text = "Выключатель питания ПРД-К.4" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [1, 1, 3, 1] -[node name="name14" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "Бл. по вент." - [node name="state14" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 2, 3, 2] +[node name="name14" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "Бл. по вент." +vertical_alignment = 1 + [node name="switch14" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]] editor_description = "Бл. по вент." material = SubResource("ShaderMaterial_c1mqk") @@ -464,23 +548,28 @@ layout_mode = 2 size_flags_horizontal = 2 tooltip_text = "Выключатель блокировки по вентиляции" action_mode = 0 +script = ExtResource("7_l6esm") metadata/bits = [1, 2, 3, 2] -[node name="name15" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "ДУ" - [node name="state15" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 3, 3, 3] +[node name="name15" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "ДУ" +vertical_alignment = 1 + [node name="switch15" type="CheckButton" parent="margin/vbox/table"] editor_description = "ДУ" layout_mode = 2 @@ -489,19 +578,25 @@ disabled = true button_pressed = true action_mode = 0 -[node name="name16" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "Вент. РТР" - [node name="state16" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 7, 3, 7] +[node name="name16" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "Вент. РТР" +vertical_alignment = 1 + [node name="switch16" type="CheckButton" parent="margin/vbox/table"] editor_description = "Вент. РТР" layout_mode = 2 @@ -510,21 +605,25 @@ disabled = true button_pressed = true action_mode = 0 -[node name="name17" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "Вент. ПРД.1" - [node name="state17" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 8, 3, 8] +[node name="name17" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "Вент. ПРД.1" +vertical_alignment = 1 + [node name="switch17" type="CheckButton" parent="margin/vbox/table"] editor_description = "Вент. ПРД.1" layout_mode = 2 @@ -533,19 +632,23 @@ disabled = true button_pressed = true action_mode = 0 -[node name="name18" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "Вент. ПРД.2" - [node name="state18" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 9, 3, 9] +[node name="name18" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "Вент. ПРД.2" +vertical_alignment = 1 + [node name="switch18" type="CheckButton" parent="margin/vbox/table"] editor_description = "Вент. ПРД.2" layout_mode = 2 @@ -554,19 +657,23 @@ disabled = true button_pressed = true action_mode = 0 -[node name="name19" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "Вент. ПРД.3" - [node name="state19" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 10, 3, 10] +[node name="name19" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "Вент. ПРД.3" +vertical_alignment = 1 + [node name="switch19" type="CheckButton" parent="margin/vbox/table"] editor_description = "Вент. ПРД.3" layout_mode = 2 @@ -575,19 +682,23 @@ disabled = true button_pressed = true action_mode = 0 -[node name="name20" type="Label" parent="margin/vbox/table"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -theme_override_font_sizes/font_size = 17 -text = "Вент. ПРД.4" - [node name="state20" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +tooltip_text = "Индикатор исполнения" texture = ExtResource("2_ln52a") expand_mode = 1 metadata/bits = [1, 11, 3, 11] +[node name="name20" type="Label" parent="margin/vbox/table"] +self_modulate = Color(1, 1, 1, 0.627451) +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +theme_override_font_sizes/font_size = 17 +text = "Вент. ПРД.4" +vertical_alignment = 1 + [node name="switch20" type="CheckButton" parent="margin/vbox/table"] editor_description = "Вент. ПРД.4" layout_mode = 2 @@ -598,23 +709,37 @@ action_mode = 0 [node name="grid1" type="GridContainer" parent="margin/vbox"] layout_mode = 2 +size_flags_horizontal = 0 size_flags_vertical = 8 -columns = 2 +columns = 3 -[node name="lbl1" type="Label" parent="margin/vbox/grid1"] +[node name="state_freq" type="TextureRect" parent="margin/vbox/grid1"] +custom_minimum_size = Vector2(24, 24) +layout_mode = 2 +size_flags_horizontal = 2 +size_flags_vertical = 4 +tooltip_text = "Индикатор допуска входного напряжения" +texture = ExtResource("2_ln52a") +expand_mode = 1 +metadata/bits = [0, 0, 2, 0] + +[node name="lbl0" type="Label" parent="margin/vbox/grid1"] self_modulate = Color(1, 1, 1, 0.627451) layout_mode = 2 -size_flags_horizontal = 3 +size_flags_horizontal = 0 theme_override_font_sizes/font_size = 17 text = "Частота, Гц:" -horizontal_alignment = 2 +horizontal_alignment = 1 [node name="lbl_freq" type="Label" parent="margin/vbox/grid1"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 6 +tooltip_text = "Частота питающего напряжения" +mouse_filter = 0 theme_override_font_sizes/font_size = 22 text = "<нет данных>" +horizontal_alignment = 1 vertical_alignment = 1 [connection signal="resized" from="." to="." method="_on_resized"] diff --git a/scenes/контроль/элемент-я.tscn b/scenes/контроль/элемент-я.tscn index f7d45d4c..8303e5a6 100644 --- a/scenes/контроль/элемент-я.tscn +++ b/scenes/контроль/элемент-я.tscn @@ -88,6 +88,8 @@ columns = 3 [node name="state" type="TextureRect" parent="margin/vbox/grid"] custom_minimum_size = Vector2(24, 24) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 texture = ExtResource("3_dktys") expand_mode = 1 From 83e78001359f5f53bde30990c2b78401126cbfb0 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 10:20:32 +0300 Subject: [PATCH 6/8] =?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=D0=B8=20=D0=B7=D0=B0=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D1=8C=20=D0=B2=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D1=80=D1=8B=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=B8=D1=82=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE=D1=80=D0=B0=20=D0=A93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-uyep/sch3-view.gd | 44 +++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/scenes/pribor-uyep/sch3-view.gd b/scenes/pribor-uyep/sch3-view.gd index 91e6a4b5..b8e4e43a 100644 --- a/scenes/pribor-uyep/sch3-view.gd +++ b/scenes/pribor-uyep/sch3-view.gd @@ -19,6 +19,7 @@ var holding_stack: = [] ## Стек команд для чтения регис var input_stack: = [] ## Стек команд для чтения регистров входов var read_step: = 0 var switches_sync: = false +var timer = Timer.new() class StackItem: @@ -62,9 +63,14 @@ func on_toggled_switch(val: bool, unit_sch3: sch_3.Sch3, meta: Array): if regs_holding.has(on_addr) and regs_holding.has(off_addr): regs_holding[on_addr] = tools.set_bit(regs_holding[on_addr], on_bit, val) regs_holding[off_addr] = tools.set_bit(regs_holding[off_addr], off_bit, not val) + push_write_holding() + + +## Заносит в очередь команду чтения регистров хранения +func push_write_holding(): var regs_data: = [] var keys = regs_holding.keys() - keys.sort() + keys.sort() # Ключи в словаре хранятся не упорядочено for addr in keys: regs_data.append(regs_holding[addr]) write_stack.push_back(StackItem.new(keys[0], regs_data)) @@ -78,17 +84,24 @@ func _ready() -> void: var items = get_tree().get_nodes_in_group('bits_items_switch') for item in items: var meta = item.get_meta('bits') - item.connect('toggled', on_toggled_switch.bind(unit_sch3, meta)) + item.connect('toggled', on_toggled_switch.bind(meta)) item.disabled = true unit_sch3.connect('resp_input', on_resp_input) unit_sch3.connect('resp_holding', on_resp_holding) - var timer = Timer.new() + unit_sch3.connect('command_fail', on_command_fail) timer.connect('timeout', _on_timeout.bind(unit_sch3)) add_child(timer) - timer.start(1.0) + timer.start(request_period) -func on_line_changed(unit_sch3): +func on_command_fail(unit_sch3): + unit_sch3.cmd_state = unit.Unit.CmdState.DONE + timer.stop() + + +## Вызывается, когда состояния прибора Щ3 "на связи" изменяется[br] +## [param unit_sch3] - Экземпляр представления прибора Щ3 +func on_line_changed(unit_sch3: sch_3.Sch3): for item in get_tree().get_nodes_in_group('bits_items_good'): item.texture = textures[STATE_VAL.NONE] if not unit_sch3.online: @@ -100,6 +113,10 @@ func on_line_changed(unit_sch3): input_stack.clear() holding_stack.clear() switches_sync = false + $margin/vbox/grid1/lbl_freq.text = '<нет данных>' + $margin/vbox/grid1/state_freq.texture = textures[STATE_VAL.NONE] + else: + timer.start(request_period) func on_resp_holding(base_addr: int, data: Array): @@ -108,14 +125,18 @@ func on_resp_holding(base_addr: int, data: Array): for i in data.size(): regs_holding[base_addr + i] = data[i] if not switches_sync: + switches_sync = true for item in get_tree().get_nodes_in_group('bits_items_switch'): var bits = item.get_meta('bits') - var byte: int = bits[0] - var bit: int = bits[1] - item.button_pressed = regs_holding[byte] & (1 << bit) > 0 + var byte0: int = bits[0] # Адрес регистра + var bit0: int = bits[1] # Индекс бита + var byte1: int = bits[2] # Адрес регистра + var bit1: int = bits[3] # Индекс бита + var val0: bool = regs_holding[byte0] & (1 << bit0) > 0 + item.button_pressed = val0 item.disabled = false - switches_sync = true - $margin/vbox/grid1/lbl_freq.text = '<нет данных>' + regs_holding[byte1] = tools.set_bit(regs_holding[byte1], bit1, not val0) + push_write_holding() func on_resp_input(base_addr: int, data: Array): @@ -130,6 +151,9 @@ func on_resp_input(base_addr: int, data: Array): regs_input[base_addr + i] = data[i] # Таблица 3.15, Регистр PowerState $margin/vbox/grid1/lbl_freq.text = '%d' % (regs_input[4] & 0x1ff) + $margin/vbox/grid1/state_freq.texture \ + = textures[STATE_VAL.GOOD] if regs_input[4] & (1 << 15) \ + else textures[STATE_VAL.ERROR] var cnt_good: int = 0 for item in items: var bits: Array = item.get_meta('bits') From 091f07c4b519ca8d65a0874290b597121aaaf932 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 10:22:16 +0300 Subject: [PATCH 7/8] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-uyep/sch3-view.gd | 33 +++++++++++++++++++++++---------- scenes/журнал/журнал.gd | 2 +- scripts/capsrpb.gd | 10 +++++----- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/scenes/pribor-uyep/sch3-view.gd b/scenes/pribor-uyep/sch3-view.gd index b8e4e43a..9177230b 100644 --- a/scenes/pribor-uyep/sch3-view.gd +++ b/scenes/pribor-uyep/sch3-view.gd @@ -1,16 +1,19 @@ @tool -extends "res://scenes/контроль/элемент-я.gd" +class_name sch3_view + +extends 'res://scenes/контроль/элемент-я.gd' ## Дополнение №1 к протоколу №120-23900-18 ## информационного взаимодействия изделия 5П-28 ## с аппаратурой УА-РЭП на кораблях проекта 23900 -@export var base_input_address: = 0 ## Базовый адрес регистров входов -@export var base_holding_address: = 0 ## Базовый адрес регистров хранения -@export var regs_input_count: = 5 ## Количество регистров входов -@export var regs_holding_count: = 4 ## Количество регистров хранения -@export var modbus_address: = 3 ## Адрес устройства на шине Modbus +@export var base_input_address: = 0 ## Базовый адрес регистров входов +@export var base_holding_address: = 0 ## Базовый адрес регистров хранения +@export var regs_input_count: = 5 ## Количество регистров входов +@export var regs_holding_count: = 4 ## Количество регистров хранения +@export var modbus_address: = 3 ## Адрес устройства на шине Modbus +@export var request_period: = 1.0 ## Период отправки команд на шину Modbus var regs_input: = {} ## Регистры входные var regs_holding: = {} ## Регистры хранения @@ -32,15 +35,16 @@ class StackItem: func on_data_received(_data: PackedByteArray): pass +## Обработчик таймера func _on_timeout(unit_sch3) -> void: if write_stack.size(): var ad = write_stack.pop_front() if not unit_sch3.write(ad.addr, ad.data): write_stack.push_back(ad) - if (read_step == 0) and (input_stack.size() == 0): + if (read_step == 0) and (input_stack.size() == 0): var ad = StackItem.new(base_input_address, regs_input_count) input_stack.push_back(ad) - elif read_step == 1 and (holding_stack.size() == 0): + elif (read_step == 1) and (holding_stack.size() == 0): var ad = StackItem.new(base_holding_address, regs_holding_count) holding_stack.push_back(ad) if input_stack.size(): @@ -55,7 +59,10 @@ func _on_timeout(unit_sch3) -> void: read_step %= 2 -func on_toggled_switch(val: bool, unit_sch3: sch_3.Sch3, meta: Array): +## Вызывается при изменении состояния выключателя[br] +## [param val] - Состояние выключателя[br] +## [param meta] - Адреса регистров и индексы битов назначенных выключателю[br] +func on_toggled_switch(val: bool, meta: Array): var on_addr = meta[0] var on_bit = meta[1] var off_addr = meta[2] @@ -118,12 +125,15 @@ func on_line_changed(unit_sch3: sch_3.Sch3): else: timer.start(request_period) - +## Вызывается по сигналу "приняты данные чтения регистров хранения"[br] +## [param base_addr] - Начальный адрес регистров.[br] +## [param data] - Массив значений прочитанных из регистров. func on_resp_holding(base_addr: int, data: Array): if (base_addr != base_holding_address) or (data.size() < regs_holding_count): return for i in data.size(): regs_holding[base_addr + i] = data[i] + # Разрешить работу выключателей только когда прочитано их реальное состояние if not switches_sync: switches_sync = true for item in get_tree().get_nodes_in_group('bits_items_switch'): @@ -139,6 +149,9 @@ func on_resp_holding(base_addr: int, data: Array): push_write_holding() +## Вызывается по сигналу "приняты данные чтения регистров входов".[br] +## [param base_addr] - Начальный адрес регистров.[br] +## [param data] - Массив значений прочитанных из регистров.[br] func on_resp_input(base_addr: int, data: Array): if (base_addr != base_input_address) or (data.size() < regs_input_count): return diff --git a/scenes/журнал/журнал.gd b/scenes/журнал/журнал.gd index ad400e81..6e7f7642 100644 --- a/scenes/журнал/журнал.gd +++ b/scenes/журнал/журнал.gd @@ -1,7 +1,7 @@ extends Panel -func on_line_changed(unit, addr): log.message(Logger.INFO, 'Состояние связи: %s %s' % [unit, addr]) +func on_line_changed(unit, addr): log.message(Logger.INFO, 'Изменение состояния: %s %s' % [unit, addr]) func on_command_fail(unit, addr): log.message(Logger.ERROR, 'Ошибка: команда не выполнена: %s %s' % [unit, addr]) func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()]) func on_parse_error(unit, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.to_string(), msg]) diff --git a/scripts/capsrpb.gd b/scripts/capsrpb.gd index daa0cd6b..79343b5a 100644 --- a/scripts/capsrpb.gd +++ b/scripts/capsrpb.gd @@ -10,10 +10,10 @@ const BUFFER_SIZE = 2048 ## Размер приёмного буфера д class CapsRpb extends unit.Unit: - static var json_conv: = JSON.new() - var json_dic: Dictionary ## Аппарат для разбора сообщений. - var tick: = 0 ## Тик время последнего обновления, мс. - var tx_stack: Array ## Массив пакетов для отправки. + static var json_conv: = JSON.new() ## Аппарат для разбора сообщений. + var json_dic: Dictionary + var tick: = 0 ## Тик время последнего обновления, мс. + var tx_stack: Array ## Массив пакетов для отправки. func _to_string() -> String: return String('капсрпб: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]]) func _init(nm): self.name = nm @@ -41,4 +41,4 @@ class CapsRpb extends unit.Unit: tx_stack.remove_at(0) return Error.OK else: - return Error.ERR_UNAVAILABLE + return Error.ERR_BUSY From 8e497521e970c23091e4fe7c32b2f2d106121afc Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 22 Nov 2024 13:49:57 +0300 Subject: [PATCH 8/8] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modbus/client-serial-modbus.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modbus/client-serial-modbus.py b/modbus/client-serial-modbus.py index 8a077ead..08f2091a 100644 --- a/modbus/client-serial-modbus.py +++ b/modbus/client-serial-modbus.py @@ -10,7 +10,6 @@ import json import argparse import time from socket import * -from threading import Timer import logger from pymodbus.client.sync import ModbusSerialClient