1 litera is almost ready

This commit is contained in:
2025-03-07 00:20:35 +03:00
parent 1c7aba948a
commit a7a4ffaa9e
9 changed files with 854 additions and 283 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=67 format=3 uid="uid://cvor2jm4xk3ha"] [gd_scene load_steps=72 format=3 uid="uid://cvor2jm4xk3ha"]
[ext_resource type="Script" path="res://scripts/PRD.gd" id="1_v273n"] [ext_resource type="Script" path="res://scripts/PRD.gd" id="1_v273n"]
[ext_resource type="Texture2D" uid="uid://cdxdluvyb5uei" path="res://table/on.png" id="2_dv7xx"] [ext_resource type="Texture2D" uid="uid://cdxdluvyb5uei" path="res://table/on.png" id="2_dv7xx"]
@@ -28,6 +28,7 @@
[ext_resource type="Texture2D" uid="uid://c8gfddmqnws7v" path="res://pictures/фс_pressed.png" id="14_0dei1"] [ext_resource type="Texture2D" uid="uid://c8gfddmqnws7v" path="res://pictures/фс_pressed.png" id="14_0dei1"]
[ext_resource type="Script" path="res://scripts/modul_fs.gd" id="15_b4pr1"] [ext_resource type="Script" path="res://scripts/modul_fs.gd" id="15_b4pr1"]
[ext_resource type="Shader" path="res://Shaders/loadead.gdshader" id="16_4osrw"] [ext_resource type="Shader" path="res://Shaders/loadead.gdshader" id="16_4osrw"]
[ext_resource type="Shader" path="res://ray_litera_1.gdshader" id="20_do1s5"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o0too"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o0too"]
bg_color = Color(0.447059, 0.0784314, 0.192157, 1) bg_color = Color(0.447059, 0.0784314, 0.192157, 1)
@@ -124,11 +125,6 @@ corner_radius_bottom_left = 10
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_723du"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_723du"]
size = Vector2(1600, 1200) size = Vector2(1600, 1200)
[sub_resource type="GDScript" id="GDScript_0sobq"]
script/source = "extends Sprite2D
"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_o7txs"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_o7txs"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dgiai"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_dgiai"]
@@ -152,6 +148,32 @@ shader_parameter/turn = 0.785
shader_parameter/inner_radius = 0.32 shader_parameter/inner_radius = 0.32
shader_parameter/speed = 0.0 shader_parameter/speed = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ps0lm"]
shader = ExtResource("20_do1s5")
shader_parameter/color_signal = Color(0.374965, 0.291384, 0.05121, 1)
shader_parameter/turn = 0.785
shader_parameter/inner_radius = 0.795
shader_parameter/speed = 0.0
[sub_resource type="Gradient" id="Gradient_anl0y"]
[sub_resource type="GradientTexture2D" id="GradientTexture2D_766ko"]
gradient = SubResource("Gradient_anl0y")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eleyh"]
bg_color = Color(0.447059, 0.0784314, 0.192157, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yaooi"]
bg_color = Color(0.699728, 0.157278, 0.320529, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tn8m6"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tn8m6"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_13x31"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_13x31"]
@@ -340,6 +362,14 @@ ignore_texture_size = true
stretch_mode = 0 stretch_mode = 0
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="block" type="Panel" parent="Background/switch_panel/burgerButton"]
self_modulate = Color(1, 1, 1, 0)
layout_mode = 0
offset_left = -290.0
offset_top = -12.0
offset_right = -234.0
offset_bottom = 44.0
[node name="texture_prd" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]] [node name="texture_prd" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
self_modulate = Color(1, 1, 0.941, 0.85) self_modulate = Color(1, 1, 0.941, 0.85)
layout_mode = 0 layout_mode = 0
@@ -452,6 +482,7 @@ offset_left = 272.0
offset_top = -20.0 offset_top = -20.0
offset_right = 1680.0 offset_right = 1680.0
offset_bottom = 888.0 offset_bottom = 888.0
metadata/_edit_lock_ = true
[node name="litera_2_4_6" type="GridContainer" parent="TabContainer/PRD/body_grid"] [node name="litera_2_4_6" type="GridContainer" parent="TabContainer/PRD/body_grid"]
clip_contents = true clip_contents = true
@@ -493,7 +524,6 @@ position = Vector2(1002, 20)
scale = Vector2(0.23, 0.217) scale = Vector2(0.23, 0.217)
texture = SubResource("PlaceholderTexture2D_723du") texture = SubResource("PlaceholderTexture2D_723du")
offset = Vector2(800, 600) offset = Vector2(800, 600)
script = SubResource("GDScript_0sobq")
[node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_2_4_6/PSK"] [node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_2_4_6/PSK"]
modulate = Color(1, 1, 0.941176, 0.784314) modulate = Color(1, 1, 0.941176, 0.784314)
@@ -551,7 +581,6 @@ position = Vector2(1002, 14)
scale = Vector2(0.23, 0.217) scale = Vector2(0.23, 0.217)
texture = SubResource("PlaceholderTexture2D_723du") texture = SubResource("PlaceholderTexture2D_723du")
offset = Vector2(800, 600) offset = Vector2(800, 600)
script = SubResource("GDScript_0sobq")
[node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_3_5_7/PSK2"] [node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_3_5_7/PSK2"]
modulate = Color(1, 1, 0.941176, 0.784314) modulate = Color(1, 1, 0.941176, 0.784314)
@@ -578,6 +607,7 @@ custom_minimum_size = Vector2(700, 300)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
columns = 5 columns = 5
metadata/_edit_lock_ = true
[node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_1"] [node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_1"]
custom_minimum_size = Vector2(300, 0) custom_minimum_size = Vector2(300, 0)
@@ -605,33 +635,18 @@ layout_mode = 2
script = ExtResource("2_vmbyo") script = ExtResource("2_vmbyo")
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="PSK" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_1"] [node name="PSK3" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_1"]
visible = false
modulate = Color(1, 1, 0.941176, 0.733333) modulate = Color(1, 1, 0.941176, 0.733333)
material = ExtResource("3_3syd3") position = Vector2(1215.13, 138.125)
position = Vector2(970, 20) scale = Vector2(0.645437, 0.590045)
scale = Vector2(0.23, 0.217)
texture = SubResource("PlaceholderTexture2D_723du")
offset = Vector2(800, 600)
script = SubResource("GDScript_0sobq")
metadata/_edit_lock_ = true
[node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_1/PSK"]
modulate = Color(1, 1, 0.941176, 0.784314)
material = SubResource("ShaderMaterial_o7txs")
offset_left = 554.954
offset_top = -30.0
offset_right = 1290.95
offset_bottom = 1134.0
texture = ExtResource("5_i3nvb") texture = ExtResource("5_i3nvb")
expand_mode = 1
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="ray_1" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_1/PSK"] [node name="ray_litera_1" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_1/PSK3"]
material = SubResource("ShaderMaterial_dgiai") material = SubResource("ShaderMaterial_ps0lm")
position = Vector2(549.221, 543.623) position = Vector2(-125.87, -7.32874)
scale = Vector2(21.8765, 21.6782) scale = Vector2(7.7412, 7.33907)
texture = SubResource("GradientTexture2D_0pk2o") texture = SubResource("GradientTexture2D_766ko")
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="select_dev" type="GridContainer" parent="TabContainer/PRD"] [node name="select_dev" type="GridContainer" parent="TabContainer/PRD"]
@@ -643,6 +658,21 @@ offset_bottom = -16.0
script = ExtResource("2_vmbyo") script = ExtResource("2_vmbyo")
node_gap = Vector2(100, 50) node_gap = Vector2(100, 50)
[node name="Connect_prd" type="Button" parent="TabContainer/PRD"]
layout_mode = 0
offset_left = 47.0
offset_top = 30.0
offset_right = 248.0
offset_bottom = 58.0
focus_mode = 0
mouse_default_cursor_shape = 16
theme_override_colors/font_color = Color(1, 1, 0.941176, 1)
theme_override_styles/hover = SubResource("StyleBoxFlat_eleyh")
theme_override_styles/pressed = SubResource("StyleBoxFlat_yaooi")
theme_override_styles/normal = SubResource("StyleBoxFlat_eleyh")
text = "Подключение"
metadata/_edit_lock_ = true
[node name="ControlPanel" type="Panel" parent="TabContainer"] [node name="ControlPanel" type="Panel" parent="TabContainer"]
visible = false visible = false
layout_mode = 2 layout_mode = 2
@@ -655,9 +685,9 @@ metadata/_edit_lock_ = true
modulate = Color(1, 0, 0, 1) modulate = Color(1, 0, 0, 1)
layout_mode = 0 layout_mode = 0
offset_left = 135.0 offset_left = 135.0
offset_top = -8.0 offset_top = -46.0
offset_right = 755.0 offset_right = 755.0
offset_bottom = 23.0 offset_bottom = -15.0
theme_override_font_sizes/font_size = 22 theme_override_font_sizes/font_size = 22
text = "Прибор не исправен" text = "Прибор не исправен"
horizontal_alignment = 1 horizontal_alignment = 1
@@ -667,9 +697,9 @@ metadata/_edit_lock_ = true
[node name="socket_ym_lb" type="NinePatchRect" parent="TabContainer/ControlPanel"] [node name="socket_ym_lb" type="NinePatchRect" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 47.0 offset_left = 47.0
offset_top = 24.0 offset_top = -14.0
offset_right = 272.0 offset_right = 272.0
offset_bottom = 807.0 offset_bottom = 769.0
texture = ExtResource("9_0r2qk") texture = ExtResource("9_0r2qk")
patch_margin_left = 16 patch_margin_left = 16
patch_margin_top = 16 patch_margin_top = 16
@@ -683,7 +713,6 @@ offset_left = 20.0
offset_top = 40.0 offset_top = 40.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 149.0 offset_bottom = 149.0
max_value0 = 150.0
max_value1 = 2000.0 max_value1 = 2000.0
value_name0 = "Т°" value_name0 = "Т°"
value_name1 = "Pwr" value_name1 = "Pwr"
@@ -696,6 +725,7 @@ offset_left = 20.0
offset_top = 160.0 offset_top = 160.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 269.0 offset_bottom = 269.0
fname = "УМ 2"
[node name="blok_ym_3" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")] [node name="blok_ym_3" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -703,6 +733,7 @@ offset_left = 20.0
offset_top = 280.0 offset_top = 280.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 389.0 offset_bottom = 389.0
fname = "УМ 3"
[node name="blok_ym_4" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")] [node name="blok_ym_4" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -710,6 +741,7 @@ offset_left = 20.0
offset_top = 408.0 offset_top = 408.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 517.0 offset_bottom = 517.0
fname = "УМ 4"
[node name="blok_ym_5" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")] [node name="blok_ym_5" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -717,6 +749,7 @@ offset_left = 20.0
offset_top = 528.0 offset_top = 528.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 637.0 offset_bottom = 637.0
fname = "УМ 5"
[node name="blok_ym_6" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")] [node name="blok_ym_6" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -724,6 +757,14 @@ offset_left = 20.0
offset_top = 656.0 offset_top = 656.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 765.0 offset_bottom = 765.0
fname = "УМ 6"
[node name="blok_ym_litera_1" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
offset_left = 309.0
offset_top = 830.0
offset_right = 490.0
offset_bottom = 939.0
fname = "УМОМ"
[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_lb"] [node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_lb"]
self_modulate = Color(1, 1, 1, 0.62) self_modulate = Color(1, 1, 1, 0.62)
@@ -739,9 +780,9 @@ vertical_alignment = 1
[node name="socket_ym_pb" type="NinePatchRect" parent="TabContainer/ControlPanel"] [node name="socket_ym_pb" type="NinePatchRect" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 623.0 offset_left = 623.0
offset_top = 24.0 offset_top = -14.0
offset_right = 848.0 offset_right = 848.0
offset_bottom = 807.0 offset_bottom = 769.0
texture = ExtResource("9_0r2qk") texture = ExtResource("9_0r2qk")
patch_margin_left = 16 patch_margin_left = 16
patch_margin_top = 16 patch_margin_top = 16
@@ -755,6 +796,7 @@ offset_left = 20.0
offset_top = 40.0 offset_top = 40.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 149.0 offset_bottom = 149.0
fname = "УМ 1"
[node name="blok_ym_2" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")] [node name="blok_ym_2" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
layout_mode = 2 layout_mode = 2
@@ -762,6 +804,7 @@ offset_left = 20.0
offset_top = 160.0 offset_top = 160.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 269.0 offset_bottom = 269.0
fname = "УМ 2"
[node name="blok_ym_3" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")] [node name="blok_ym_3" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -769,6 +812,7 @@ offset_left = 20.0
offset_top = 280.0 offset_top = 280.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 389.0 offset_bottom = 389.0
fname = "УМ 3"
[node name="blok_ym_4" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")] [node name="blok_ym_4" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -776,6 +820,7 @@ offset_left = 20.0
offset_top = 408.0 offset_top = 408.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 517.0 offset_bottom = 517.0
fname = "УМ 4"
[node name="blok_ym_5" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")] [node name="blok_ym_5" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -783,6 +828,7 @@ offset_left = 20.0
offset_top = 528.0 offset_top = 528.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 637.0 offset_bottom = 637.0
fname = "УМ 5"
[node name="blok_ym_6" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")] [node name="blok_ym_6" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
layout_mode = 0 layout_mode = 0
@@ -790,6 +836,7 @@ offset_left = 20.0
offset_top = 656.0 offset_top = 656.0
offset_right = 201.0 offset_right = 201.0
offset_bottom = 765.0 offset_bottom = 765.0
fname = "УМ 6"
[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_pb"] [node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_pb"]
self_modulate = Color(1, 1, 1, 0.62) self_modulate = Color(1, 1, 1, 0.62)
@@ -805,9 +852,9 @@ vertical_alignment = 1
[node name="soc_y5" type="NinePatchRect" parent="TabContainer/ControlPanel"] [node name="soc_y5" type="NinePatchRect" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 287.0 offset_left = 287.0
offset_top = 24.0 offset_top = -14.0
offset_right = 604.0 offset_right = 604.0
offset_bottom = 214.0 offset_bottom = 176.0
texture = ExtResource("9_0r2qk") texture = ExtResource("9_0r2qk")
patch_margin_left = 16 patch_margin_left = 16
patch_margin_top = 16 patch_margin_top = 16
@@ -877,9 +924,9 @@ vertical_alignment = 1
[node name="Kasseta_FS" parent="TabContainer/ControlPanel" instance=ExtResource("10_tdh2s")] [node name="Kasseta_FS" parent="TabContainer/ControlPanel" instance=ExtResource("10_tdh2s")]
layout_mode = 0 layout_mode = 0
offset_left = 286.0 offset_left = 286.0
offset_top = 215.0 offset_top = 177.0
offset_right = 604.0 offset_right = 604.0
offset_bottom = 434.0 offset_bottom = 396.0
script = null script = null
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
@@ -951,9 +998,9 @@ rname = "A1"
[node name="soc_P1" type="NinePatchRect" parent="TabContainer/ControlPanel"] [node name="soc_P1" type="NinePatchRect" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 349.0 offset_left = 349.0
offset_top = 653.0 offset_top = 615.0
offset_right = 537.0 offset_right = 537.0
offset_bottom = 848.0 offset_bottom = 810.0
texture = ExtResource("9_0r2qk") texture = ExtResource("9_0r2qk")
patch_margin_left = 16 patch_margin_left = 16
patch_margin_top = 16 patch_margin_top = 16
@@ -1026,9 +1073,9 @@ metadata/_edit_lock_ = true
[node name="soc_DKM" type="NinePatchRect" parent="TabContainer/ControlPanel"] [node name="soc_DKM" type="NinePatchRect" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 424.0 offset_left = 424.0
offset_top = 442.0 offset_top = 404.0
offset_right = 604.0 offset_right = 604.0
offset_bottom = 642.0 offset_bottom = 604.0
texture = ExtResource("9_0r2qk") texture = ExtResource("9_0r2qk")
patch_margin_left = 16 patch_margin_left = 16
patch_margin_top = 16 patch_margin_top = 16
@@ -1081,9 +1128,9 @@ metadata/_edit_lock_ = true
[node name="soc_P2" type="NinePatchRect" parent="TabContainer/ControlPanel"] [node name="soc_P2" type="NinePatchRect" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 285.0 offset_left = 285.0
offset_top = 441.0 offset_top = 403.0
offset_right = 413.0 offset_right = 413.0
offset_bottom = 643.0 offset_bottom = 605.0
texture = ExtResource("9_0r2qk") texture = ExtResource("9_0r2qk")
patch_margin_left = 16 patch_margin_left = 16
patch_margin_top = 16 patch_margin_top = 16
@@ -1126,9 +1173,9 @@ metadata/_edit_lock_ = true
[node name="log_array" type="TextEdit" parent="TabContainer/ControlPanel"] [node name="log_array" type="TextEdit" parent="TabContainer/ControlPanel"]
layout_mode = 0 layout_mode = 0
offset_left = 870.0 offset_left = 870.0
offset_top = 27.0 offset_top = -11.0
offset_right = 1664.0 offset_right = 1664.0
offset_bottom = 898.0 offset_bottom = 860.0
theme_override_colors/font_color = Color(1, 1, 0.941176, 1) theme_override_colors/font_color = Color(1, 1, 0.941176, 1)
theme_override_font_sizes/font_size = 17 theme_override_font_sizes/font_size = 17
theme_override_styles/normal = SubResource("StyleBoxFlat_13x31") theme_override_styles/normal = SubResource("StyleBoxFlat_13x31")
@@ -1139,9 +1186,9 @@ metadata/_edit_lock_ = true
[node name="await" type="ColorRect" parent="TabContainer/ControlPanel/log_array"] [node name="await" type="ColorRect" parent="TabContainer/ControlPanel/log_array"]
material = SubResource("ShaderMaterial_07wue") material = SubResource("ShaderMaterial_07wue")
layout_mode = 0 layout_mode = 0
offset_top = 767.0 offset_top = -17.0
offset_right = 853.0 offset_right = 853.0
offset_bottom = 807.0 offset_bottom = 23.0
[node name="EMS_G" type="Panel" parent="TabContainer"] [node name="EMS_G" type="Panel" parent="TabContainer"]
visible = false visible = false
@@ -1296,7 +1343,7 @@ text = "Сохранить все настройки"
[connection signal="pressed" from="Background/switch_panel/texture_control" to="." method="_on_control_button"] [connection signal="pressed" from="Background/switch_panel/texture_control" to="." method="_on_control_button"]
[connection signal="pressed" from="Background/switch_panel/texture_ems_g" to="." method="_on_emsg_select"] [connection signal="pressed" from="Background/switch_panel/texture_ems_g" to="." method="_on_emsg_select"]
[connection signal="pressed" from="Background/switch_panel/texture_fs" to="." method="_on_mfs_select"] [connection signal="pressed" from="Background/switch_panel/texture_fs" to="." method="_on_mfs_select"]
[connection signal="pressed" from="read_isa" to="." method="_on_read_isa_pressed"] [connection signal="pressed" from="TabContainer/PRD/Connect_prd" to="." method="_on_connect_prd_pressed"]
[connection signal="pressed" from="TabContainer/Modul_fs/manage_panel/con" to="TabContainer/Modul_fs" method="_on_start"] [connection signal="pressed" from="TabContainer/Modul_fs/manage_panel/con" to="TabContainer/Modul_fs" method="_on_start"]
[connection signal="text_submitted" from="TabContainer/Modul_fs/manage_panel/addres_fs" to="TabContainer/Modul_fs" method="_on_addres_fs"] [connection signal="text_submitted" from="TabContainer/Modul_fs/manage_panel/addres_fs" to="TabContainer/Modul_fs" method="_on_addres_fs"]
[connection signal="toggled" from="TabContainer/Modul_fs/manage_panel/get_gen_status" to="TabContainer/Modul_fs" method="_on_get_status"] [connection signal="toggled" from="TabContainer/Modul_fs/manage_panel/get_gen_status" to="TabContainer/Modul_fs" method="_on_get_status"]

84
ray_litera_1.gdshader Normal file
View File

@@ -0,0 +1,84 @@
shader_type canvas_item;
uniform vec4 color_signal: source_color;
uniform float turn = 0.785;
uniform float inner_radius = 0.32;
uniform float speed = 0.0;
const float outer_radius = 0.109;
const float zoom = 50.0;
const float size = 5.0;
const float blur = 0.000001;
const float fill_ratio = 0.03;
float remap(float i_min, float i_max, float o_min, float o_max, float val) {
float t = (val - i_min) / (i_max - i_min);
return o_min + (o_max - o_min) * t;
}
float mask(vec2 uv, float value)
{
float r = atan(uv.x, uv.y);
r = remap(-PI, PI, 0.0, 1.0, r);
r = step(r, value * 0.5);
uv.x = uv.x + 1.0;
uv.x = uv.x * -1.0;
uv.x += 1.0;
float l = atan(uv.x, uv.y);
l = remap(-PI, PI, 0.0, 1.0, l);
l = step(l, value * 0.5);
return r + l ;
}
vec2 rotate_uv(vec2 uv, vec2 pivot, float rotation) {
float cosa = cos(rotation);
float sina = sin(rotation);
uv -= pivot;
return vec2(
cosa * uv.x - sina * uv.y,
cosa * uv.y + sina * uv.x
) + pivot;
}
float circle(vec2 uv, float value)
{
float d = length(uv);
float t = smoothstep(
inner_radius + blur,
inner_radius - blur,
d
) - smoothstep(
outer_radius + blur,
outer_radius - blur,
d
);
return t;
}
void fragment(){
float d = length((UV-0.5)*2.0);
float t = pow(smoothstep(0.9,0.2,d),0.35);
vec2 uv = (UV * 2.0) - 1.0;
vec3 rainbow = 0.5*cos(TIME+UV.xyx+vec3(0,2,4));
vec4 color = vec4(rainbow.rgb,1.0);
vec2 origin = vec2(0.0, 0.0);
color = vec4(color_signal.rgb,1.0);
uv = rotate_uv(uv, origin, turn * TAU);
float c = circle(uv, 0.5);
float mask = mask(uv, fill_ratio);
d = sin(zoom*d - speed*TIME);
//d = abs(d);
d = size/d;
color *= d*t;
COLOR = vec4(color * mask * c);
}

View File

@@ -113,9 +113,11 @@ class FGOS:
packet.resize(packet.size() + 4) packet.resize(packet.size() + 4)
packet.encode_u32(packet.size() - 4, crc) packet.encode_u32(packet.size() - 4, crc)
if client == Network.client_fs_1: if client == Network.client_fs_1:
Network.command_stack.append(packet) Network.command_stack_1.append(packet)
else: elif client == Network.client_fs_2:
Network.command_stack_2.append(packet) Network.command_stack_2.append(packet)
elif client == Network.client_fs_3:
Network.command_stack_3.append(packet)
online = true online = true

View File

@@ -12,14 +12,19 @@ var node_select_yau_07b: Node
var node_select_yau_07b_2: Node var node_select_yau_07b_2: Node
var node_select_fs_1: Node var node_select_fs_1: Node
var node_select_fs_2: Node var node_select_fs_2: Node
var node_select_fs_3: Node
var isa_from_yau07b: Dictionary = {} var isa_from_yau07b: Dictionary = {}
var freq_fs_1: int var freq_fs_1: int
var freq_fs_2: int var freq_fs_2: int
var freq_fs_3: int
var att_fs_1: float var att_fs_1: float
var att_fs_2: float var att_fs_2: float
var att_fs_3: float
var status_pribor = null var status_pribor = null
var save_path = "D://PRD-TU-MP550//" var save_path = "D://PRD-TU-MP550//"
const need_port: Array = [0x122, 0x124, 0x126, 0x128, 0x12A] const need_port: Array = [0x122, 0x124, 0x126, 0x128, 0x12A]
var current_meta: Array = [Constants.META.MODUL_UM_1, Constants.META.MODUL_UM_2, Constants.META.MODUL_UM_3, Constants.META.MODUL_UM_28]
var modul_um: Array = [0, 0, 0, 0]
func _ready() -> void: func _ready() -> void:
@@ -58,27 +63,31 @@ func _ready() -> void:
node_select_yau_07b_2.set_columns_min_size([160, 120]) node_select_yau_07b_2.set_columns_min_size([160, 120])
# Таблица ЯУ-07б-3 # Таблица ЯУ-07б-3
var node_select_yau_07b_3 = $TabContainer/PRD/body_grid/litera_1/yau07b_control var node_select_yau_07b_3: Node = $TabContainer/PRD/body_grid/litera_1/yau07b_control
draw_tabl(node_select_yau_07b_3, Constants.ROWS_YAU_07B_2, Constants.ROWS_YAU_07B_2.size()) draw_tabl(node_select_yau_07b_3, Constants.ROWS_YAU_07B_2, Constants.ROWS_YAU_07B_2.size())
node_select_yau_07b_3.set_columns_min_size([160, 120]) node_select_yau_07b_3.set_columns_min_size([160, 120])
#Таблица ФС-2 #Таблица ФС-1
node_select_fs_1 = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control node_select_fs_1 = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control
draw_tabl(node_select_fs_1, Constants.ROWS_FS, Constants.ROWS_FS.size()) draw_tabl(node_select_fs_1, Constants.ROWS_FS, Constants.ROWS_FS.size())
node_select_fs_1.set_columns_min_size([150, 120, 150]) node_select_fs_1.set_columns_min_size([150, 120, 150])
node_select_fs_1.get_node2(1, 4).add_item('Const')
node_select_fs_1.get_node2(1, 4).add_item('MSK')
#Таблица ФС-2 #Таблица ФС-2
node_select_fs_2 = $TabContainer/PRD/body_grid/litera_3_5_7/fs_control node_select_fs_2 = $TabContainer/PRD/body_grid/litera_3_5_7/fs_control
draw_tabl(node_select_fs_2, Constants.ROWS_FS, Constants.ROWS_FS.size()) draw_tabl(node_select_fs_2, Constants.ROWS_FS, Constants.ROWS_FS.size())
node_select_fs_2.set_columns_min_size([150, 120, 150]) node_select_fs_2.set_columns_min_size([150, 120, 150])
node_select_fs_2.get_node2(1, 4).add_item('Const')
node_select_fs_2.get_node2(1, 4).add_item('MSK')
#Таблица ФС-3 #Таблица ФС-3
var node_select_fs_3 = $TabContainer/PRD/body_grid/litera_1/fs_control node_select_fs_3 = $TabContainer/PRD/body_grid/litera_1/fs_control
draw_tabl(node_select_fs_3, Constants.ROWS_FS, Constants.ROWS_FS.size()) draw_tabl(node_select_fs_3, Constants.ROWS_FS, Constants.ROWS_FS.size())
node_select_fs_3.set_columns_min_size([150, 120, 150]) node_select_fs_3.set_columns_min_size([150, 120, 150])
# Таблица ЯУ-07б-3 # Таблица ЯУ-07б-3
var item_place_yau_07_3 = 38 var item_place_yau_07_3: int = 38
node_select_yau_07b_3.set_node_text(0, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+0]) # 'ПРД-Н' node_select_yau_07b_3.set_node_text(0, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+0]) # 'ПРД-Н'
node_select_yau_07b_3.set_node_text(1, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+1]) # 'Литера 1' node_select_yau_07b_3.set_node_text(1, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+1]) # 'Литера 1'
node_select_yau_07b_3.set_node_text(0, 1, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+2]) # 'Запрет СИ 1' node_select_yau_07b_3.set_node_text(0, 1, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+2]) # 'Запрет СИ 1'
@@ -91,7 +100,7 @@ func _ready() -> void:
node_select_yau_07b_3.set_node_text(0, 7, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+8]) # 'СЗИ 1 от УФ' node_select_yau_07b_3.set_node_text(0, 7, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+8]) # 'СЗИ 1 от УФ'
#Таблица ФС-3 #Таблица ФС-3
var item_place_fs_3 = 47 var item_place_fs_3: int = 47
node_select_fs_3.set_node_text(0, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+0]) # 'Модуль ФС 1' node_select_fs_3.set_node_text(0, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+0]) # 'Модуль ФС 1'
node_select_fs_3.set_node_text(1, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+1]) # 'Литера ФС 1' node_select_fs_3.set_node_text(1, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+1]) # 'Литера ФС 1'
node_select_fs_3.set_node_text(0, 1, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+2]) # 'Состояние' node_select_fs_3.set_node_text(0, 1, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+2]) # 'Состояние'
@@ -112,15 +121,12 @@ func _ready() -> void:
node_select_fs_3.set_node_text(0, 8, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+9]) # 'Статус CAN') node_select_fs_3.set_node_text(0, 8, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+9]) # 'Статус CAN')
# Выбор прибора для подключения # Выбор прибора для подключения
var node_select_device = $TabContainer/PRD/select_dev var node_select_device: Node = $TabContainer/PRD/select_dev
draw_tabl(node_select_device, Constants.SELECT_DEVICE, Constants.SELECT_DEVICE.size()) draw_tabl(node_select_device, Constants.SELECT_DEVICE, Constants.SELECT_DEVICE.size())
var get_select_device = node_select_device.get_node2(1, 0) var get_select_device: Node = node_select_device.get_node2(1, 0)
for i_addr in Constants.ADDRESSES.size(): # Заполнение адресов
# Заполнение адресов
for i_addr in Constants.ADDRESSES.size():
get_select_device.add_item(Constants.ADDRESSES[i_addr][0]) get_select_device.add_item(Constants.ADDRESSES[i_addr][0])
get_select_device.set_item_metadata(i_addr, Constants.ADDRESSES[i_addr].slice(1,7)) get_select_device.set_item_metadata(i_addr, Constants.ADDRESSES[i_addr].slice(1,7))
get_select_device.connect('item_selected', Callable(self, 'on_mode_select'))
node_select_device.get_node2(0,0).text = 'ПРИБОР' node_select_device.get_node2(0,0).text = 'ПРИБОР'
node_select_device.set_columns_min_size([100, 100]) node_select_device.set_columns_min_size([100, 100])
@@ -144,19 +150,18 @@ func _ready() -> void:
node_select_yau_07b.get_node2(1, 3).add_item(key) node_select_yau_07b.get_node2(1, 3).add_item(key)
node_select_yau_07b_2.get_node2(1, 3).add_item(key) node_select_yau_07b_2.get_node2(1, 3).add_item(key)
node_select_yau_07b_3.get_node2(1, 3).add_item(' 15°') node_select_yau_07b_3.get_node2(1, 3).add_item(' 15°')
## Заполненение списка аттенюатора ## Заполненение списка аттенюатора
for key in Constants.ATT_DICT: for key in Constants.ATT_DICT:
node_select_yau_07b.get_node2(1, 4).add_item(key) node_select_yau_07b.get_node2(1, 4).add_item(key)
node_select_yau_07b_2.get_node2(1, 4).add_item(key)
## Заполненение списка аттенюатора ## Заполненение списка аттенюатора
for key in Constants.ATT_DICT_correct: for key in Constants.ATT_DICT_correct:
node_select_yau_07b_3.get_node2(1, 4).add_item(key) node_select_yau_07b_3.get_node2(1, 4).add_item(key)
get_select_device.connect('item_selected', Callable(self, 'on_mode_select'))
## Yau-07b 1 ## Yau-07b 1
node_select_yau_07b.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret_2')) node_select_yau_07b.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret_2'))
node_select_yau_07b.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um').bind(node_select_yau_07b.get_node2(1, 2))) node_select_yau_07b.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um').bind(node_select_yau_07b.get_node2(1, 2)))
@@ -170,6 +175,7 @@ func _ready() -> void:
node_select_yau_07b_2.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_2')) node_select_yau_07b_2.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_2'))
node_select_yau_07b_2.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_fgos_2')) node_select_yau_07b_2.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_fgos_2'))
## Yau-07b 3 ## Yau-07b 3
node_select_yau_07b_3.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret_1'))
node_select_yau_07b_3.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um').bind(node_select_yau_07b_3.get_node2(1, 2))) node_select_yau_07b_3.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um').bind(node_select_yau_07b_3.get_node2(1, 2)))
node_select_yau_07b_3.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_3')) node_select_yau_07b_3.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_3'))
@@ -187,20 +193,26 @@ func _ready() -> void:
node_select_fs_2.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_2')) node_select_fs_2.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_2'))
node_select_fs_2.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro_2')) node_select_fs_2.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro_2'))
node_select_fs_2.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_2')) node_select_fs_2.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_2'))
## FS 3
node_select_fs_3.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_3'))
node_select_fs_3.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_3'))
node_select_fs_3.get_node2(1, 4).connect('item_selected', Callable(self, '_on_modul_fs_3'))
$TabContainer/PRD/body_grid/litera_1/fs_control.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_3'))
node_select_fs_3.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro_3'))
node_select_fs_3.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_3'))
Network.connect('yau_status_line', Callable(self, '_on_yau_status')) Network.connect('yau_status_line', Callable(self, '_on_yau_status'))
Network.connect('yau_receive', Callable(self, '_on_data_received')) Network.connect('yau_receive', Callable(self, '_on_data_received'))
Network.connect('yau_read_isa', Callable(self, '_on_read_isa')) Network.connect('yau_read_isa', Callable(self, '_on_read_isa'))
Network.connect('port_fs_opened_1', _on_port_changed_fs_1.bind(Color.AQUAMARINE)) Network.connect('port_fs_opened', _on_port_changed.bind(Color.AQUAMARINE))
Network.connect('port_fs_closed_1', _on_port_changed_fs_1.bind(Color.CRIMSON)) Network.connect('port_fs_closed', _on_port_changed.bind(Color.CRIMSON))
Network.connect('port_fs_opened_2', _on_port_changed_fs_2.bind(Color.AQUAMARINE))
Network.connect('port_fs_closed_2', _on_port_changed_fs_2.bind(Color.CRIMSON))
Network.connect('data_from_fs_1', _on_data_fs_1) Network.connect('data_from_fs_1', _on_data_fs_1)
Network.connect('data_from_fs_2', _on_data_fs_2) Network.connect('data_from_fs_2', _on_data_fs_2)
Network.connect('data_from_fs_3', _on_data_fs_3)
self.add_child(timer_modul_um) self.add_child(timer_modul_um)
timer_modul_um.connect('timeout', Callable(self, '_on_timer_modul_um')) timer_modul_um.connect('timeout', Callable(self, '_on_timer_modul_um'))
func add_signs_scene(): func add_signs_scene():
@@ -255,8 +267,6 @@ func add_signs_scene():
node_select_fs_1.get_node2(1, 3).placeholder_text = 'в dB' node_select_fs_1.get_node2(1, 3).placeholder_text = 'в dB'
node_select_fs_1.get_node2(1, 3).editable = true node_select_fs_1.get_node2(1, 3).editable = true
node_select_fs_1.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+5]) # 'Модуляция' node_select_fs_1.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+5]) # 'Модуляция'
node_select_fs_1.get_node2(1, 4).add_item('Const')
node_select_fs_1.get_node2(1, 4).add_item('MSK')
node_select_fs_1.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+6]) # 'Генератор ФС' node_select_fs_1.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+6]) # 'Генератор ФС'
node_select_fs_1.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+7]) # 'СИ 2 от ФС' node_select_fs_1.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+7]) # 'СИ 2 от ФС'
node_select_fs_1.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+8]) # 'Фильтр CAN' node_select_fs_1.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+8]) # 'Фильтр CAN'
@@ -275,8 +285,6 @@ func add_signs_scene():
node_select_fs_2.get_node2(1, 3).placeholder_text = 'в dB' node_select_fs_2.get_node2(1, 3).placeholder_text = 'в dB'
node_select_fs_2.get_node2(1, 3).editable = true node_select_fs_2.get_node2(1, 3).editable = true
node_select_fs_2.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+5]) # 'Модуляция' node_select_fs_2.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+5]) # 'Модуляция'
node_select_fs_2.get_node2(1, 4).add_item('Const')
node_select_fs_2.get_node2(1, 4).add_item('MSK')
node_select_fs_2.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+6]) # 'Генератор ФС' node_select_fs_2.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+6]) # 'Генератор ФС'
node_select_fs_2.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+7]) # 'СИ 3 от ФС' node_select_fs_2.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+7]) # 'СИ 3 от ФС'
node_select_fs_2.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+8]) # 'Фильтр CAN' node_select_fs_2.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+8]) # 'Фильтр CAN'
@@ -285,6 +293,13 @@ func add_signs_scene():
node_select_fs_2.set_node_text(0, 8, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+9]) # 'Статус CAN') node_select_fs_2.set_node_text(0, 8, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+9]) # 'Статус CAN')
$TabContainer/PRD/body_grid/litera_1.visible = Constants.CURRENT_MODE ==Constants.MODE.PRD_K $TabContainer/PRD/body_grid/litera_1.visible = Constants.CURRENT_MODE ==Constants.MODE.PRD_K
node_select_yau_07b_2.get_node2(1, 4).clear()
if Constants.CURRENT_MODE ==Constants.MODE.PRD_K:
for key in Constants.ATT_DICT_correct:
node_select_yau_07b_2.get_node2(1, 4).add_item(key)
else:
for key in Constants.ATT_DICT:
node_select_yau_07b_2.get_node2(1, 4).add_item(key)
func _on_read_isa(unit_isa_ports: Dictionary) -> void: func _on_read_isa(unit_isa_ports: Dictionary) -> void:
@@ -311,19 +326,23 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void:
$TabContainer/EMS_G/load_boadr/win_load.material.set('shader_parameter/dot_color_end', Color(0.8, 0.5, 1.0, 1.0 - 0.05 * len(Constants.EMS_G_PORT_DATA_HOLDER))) $TabContainer/EMS_G/load_boadr/win_load.material.set('shader_parameter/dot_color_end', Color(0.8, 0.5, 1.0, 1.0 - 0.05 * len(Constants.EMS_G_PORT_DATA_HOLDER)))
if isa_data.has(Constants.BASE_PORTS.UG+6): if isa_data.has(Constants.BASE_PORTS.UG+0x6):
if (isa_data[Constants.BASE_PORTS.UG+6] & 0x7) < 7: if (isa_data[Constants.BASE_PORTS.UG+0x6] & 0x7) < 7:
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 3).select(isa_data[Constants.BASE_PORTS.UG+6] & 0x7) $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 3).select(isa_data[Constants.BASE_PORTS.UG+0x6] & 0x7)
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+6] & 0x38)>> 3) $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+0x6] & 0x38)>> 3)
$TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+6] & 0x7)) $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+0x6] & 0x7))
$TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+6] & 0x38)) $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+0x6] & 0x38))
if isa_data.has(Constants.BASE_PORTS.UG+8): if isa_data.has(Constants.BASE_PORTS.UG+0x8):
if (isa_data[Constants.BASE_PORTS.UG+8] & 0x7) < 7: if (isa_data[Constants.BASE_PORTS.UG+8] & 0x7) < 7:
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 3).select(isa_data[Constants.BASE_PORTS.UG+8] & 0x7) $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 3).select(isa_data[Constants.BASE_PORTS.UG+0x8] & 0x7)
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+8] & 0x38)>>3) $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+0x8] & 0x38)>>3)
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x7)) $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+0x8] & 0x7))
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x38)) $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+0x8] & 0x38))
if isa_data.has(Constants.BASE_PORTS.UG+0xA):
if (isa_data[Constants.BASE_PORTS.UG+0xA] & 0x7) < 8:
$TabContainer/PRD/body_grid/litera_1/PSK3/ray_litera_1.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * ((isa_data[Constants.BASE_PORTS.UG+0xA] & 0x7) * (isa_data[Constants.BASE_PORTS.UG+0xA] & 0x7)) )
$TabContainer/PRD/body_grid/litera_1/yau07b_control.get_node2(1, 4).select(isa_data[Constants.BASE_PORTS.UG+0xA])
for index in Constants.EMS_G_PORT_DATA_HOLDER.size(): for index in Constants.EMS_G_PORT_DATA_HOLDER.size():
var tmp_device_mode = Constants.EMS_G_PORT_DATA_HOLDER[index][0] var tmp_device_mode = Constants.EMS_G_PORT_DATA_HOLDER[index][0]
if tmp_device_mode == Constants.META.CI_2_B_UF: if tmp_device_mode == Constants.META.CI_2_B_UF:
@@ -334,6 +353,11 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void:
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1] var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict: if Constants.BASE_PORTS.EMS_G+8 in data_dict:
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,1).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 14 $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,1).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 14
if tmp_device_mode == Constants.META.MODUL_UM_1:
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
var select = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 if data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 < 3 else 3
$TabContainer/PRD/body_grid/litera_1/yau07b_control.get_node2(1,2).select(select)
if tmp_device_mode == Constants.META.MODUL_UM_2: if tmp_device_mode == Constants.META.MODUL_UM_2:
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1] var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict: if Constants.BASE_PORTS.EMS_G+8 in data_dict:
@@ -403,13 +427,13 @@ func _on_data_fs_2(fs_2_data):
if fs_2_data.decode_u32(0xC) == 0: if fs_2_data.decode_u32(0xC) == 0:
node_select_fs_2.set_node_text(2, 5, 'Включен') node_select_fs_2.set_node_text(2, 5, 'Включен')
node_select_fs_2.get_node2(2, 5).modulate = Color.AQUAMARINE node_select_fs_2.get_node2(2, 5).modulate = Color.AQUAMARINE
node_select_fs_2.get_node2(1, 5).get_child(1).button_pressed = true
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 2.5) $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 2.5)
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 5).get_child(1).button_pressed = true
else: else:
node_select_fs_2.set_node_text(2, 5, 'Отключен') node_select_fs_2.set_node_text(2, 5, 'Отключен')
node_select_fs_2.get_node2(2, 5).modulate = Color.CRIMSON node_select_fs_2.get_node2(2, 5).modulate = Color.CRIMSON
node_select_fs_2.get_node2(1, 5).get_child(1).button_pressed = false
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 0.0) $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 0.0)
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 5).get_child(1).button_pressed = false
Constants.CMD.BASE_GET_CURRENT_TEMP: Constants.CMD.BASE_GET_CURRENT_TEMP:
if GRP == Constants.GROUP.BASE: if GRP == Constants.GROUP.BASE:
node_select_fs_2.set_node_text(2, 0, '%.2f' % fs_2_data.decode_float(0xC) + ' °C') node_select_fs_2.set_node_text(2, 0, '%.2f' % fs_2_data.decode_float(0xC) + ' °C')
@@ -418,6 +442,38 @@ func _on_data_fs_2(fs_2_data):
node_select_fs_2.set_node_text(2, 7, str(fs_2_data.decode_u16(0x20)) + ' МГц') node_select_fs_2.set_node_text(2, 7, str(fs_2_data.decode_u16(0x20)) + ' МГц')
func _on_data_fs_3(fs_3_data):
var GRP = fs_3_data.decode_u8(0x0)
var CMD = fs_3_data.decode_u8(0x1)
match CMD:
Constants.CMD.READ_CARRIER:
if GRP == Constants.GROUP.BASE:
freq_fs_3 = fs_3_data.decode_u64(0xC) / 1_000_000
node_select_fs_3.set_node_text(2, 2, str(freq_fs_3) + ' МГц')
Constants.CMD.READ_ATT:
if GRP == Constants.GROUP.RF:
att_fs_3 = fs_3_data.decode_float(0x18)
node_select_fs_3.set_node_text(2, 3, str(att_fs_3) + ' dB')
Constants.CMD.READ_GEN_STATUS:
if GRP == Constants.GROUP.GENERATOR:
if fs_3_data.decode_u32(0xC) == 0:
node_select_fs_3.set_node_text(2, 5, 'Включен')
node_select_fs_3.get_node2(2, 5).modulate = Color.AQUAMARINE
node_select_fs_3.get_node2(1, 5).get_child(1).button_pressed = true
#$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 2.5)
else:
node_select_fs_3.set_node_text(2, 5, 'Отключен')
node_select_fs_3.get_node2(2, 5).modulate = Color.CRIMSON
node_select_fs_3.get_node2(1, 5).get_child(1).button_pressed = false
#$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 0.0)
Constants.CMD.BASE_GET_CURRENT_TEMP:
if GRP == Constants.GROUP.BASE:
node_select_fs_3.set_node_text(2, 0, '%.2f' % fs_3_data.decode_float(0xC) + ' °C')
Constants.CMD.BASE_CAN_MACRO_READ:
if GRP == Constants.GROUP.BASE:
node_select_fs_3.set_node_text(2, 7, str(fs_3_data.decode_u16(0x20)) + ' МГц')
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
# FS 1 # FS 1
var node_freq_fs_1 = node_select_fs_1.get_node2(1, 2) var node_freq_fs_1 = node_select_fs_1.get_node2(1, 2)
@@ -586,9 +642,11 @@ func on_mode_select(intem_from_sector: int) -> void:
Constants.CURRENT_MODE = meta[2] Constants.CURRENT_MODE = meta[2]
add_signs_scene() add_signs_scene()
Network.on_command_change_device(meta) Network.on_command_change_device(meta)
Network.read_port_isa([Constants.BASE_PORTS.UG+8, Constants.BASE_PORTS.UG+6]) Network.read_port_isa([Constants.BASE_PORTS.UG+8, Constants.BASE_PORTS.UG+6, Constants.BASE_PORTS.UG+0xA])
_on_start_fs_1() Network.start_work_fs()
_on_start_fs_2() Network.start_work_fs_2()
if meta[2] == Constants.MODE.PRD_K:
Network.start_work_fs_3()
func _on_zapret_1(toggled_on: bool) -> void: func _on_zapret_1(toggled_on: bool) -> void:
@@ -612,9 +670,6 @@ func _on_zapret_3(toggled_on: bool) -> void:
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, zapret_mode) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, zapret_mode)
var current_meta: Array = [0, 0, 0]
var modul_um: Array = [0, 0, 0]
func _on_modul_um(item_from_ray_1: int, node: Node): func _on_modul_um(item_from_ray_1: int, node: Node):
var modul_um_values = { var modul_um_values = {
1: 0x2000, 1: 0x2000,
@@ -641,16 +696,24 @@ func _on_modul_um(item_from_ray_1: int, node: Node):
if modul_um.has(0x8000): if modul_um.has(0x8000):
timer_modul_um.wait_time = 2.3 timer_modul_um.wait_time = 2.3
timer_modul_um.start() timer_modul_um.start()
else:
timer_modul_um.stop()
## Таймер для модуляции УМ ## Таймер для модуляции УМ
func _on_timer_modul_um(): func _on_timer_modul_um():
for i in range(3): print('Модуляция вызывается')
if modul_um[i] == 0x8000: if modul_um.has(0x8000):
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 2, current_meta[i]) for i in range(3):
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 8, modul_um[i]) if modul_um[i] == 0x8000:
print('Модуляция есть ', modul_um)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 2, current_meta[i])
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 8, modul_um[i])
if current_meta[i] == Constants.META.MODUL_UM_1:
modul_um[3] = modul_um[i]
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 2, Constants.META.MODUL_UM_28)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 8, modul_um[i])
else:
timer_modul_um.stop()
## Включение/отключение сигнала ФГОЗ ## Включение/отключение сигнала ФГОЗ
@@ -711,17 +774,12 @@ func _on_attenuator_2(item_from_att_1: int) -> void:
## Регулировка аттенюатора луча 3 ## Регулировка аттенюатора луча 3
func _on_attenuator_3(item_from_att_1: int) -> void: func _on_attenuator_3(item_from_att_1: int) -> void:
print('test') if isa_from_yau07b.has(Constants.BASE_PORTS.UG+0xA):
if isa_from_yau07b.has(Constants.BASE_PORTS.UG+8): var mask = 0x7
var mask = 0x38 Network.write_port_isa(Constants.BASE_PORTS.UG+0xA, set_bits(isa_from_yau07b[Constants.BASE_PORTS.UG+0xA], item_from_att_1, mask))
Network.write_port_isa(Constants.BASE_PORTS.UG+8, set_bits(isa_from_yau07b[Constants.BASE_PORTS.UG+8], item_from_att_1 << 3, mask)) Network.read_port_isa([Constants.BASE_PORTS.UG+0xA])
Network.read_port_isa([Constants.BASE_PORTS.UG+8])
else: else:
print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0x8)) print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0xA))
func _on_read_isa_pressed() -> void:
Network.read_port_isa([Constants.BASE_PORTS.EMS_G+2, Constants.BASE_PORTS.EMS_G+4, Constants.BASE_PORTS.EMS_G+8])
## Устанавливает биты в соответствии с маской ## Устанавливает биты в соответствии с маской
@@ -732,16 +790,19 @@ func set_bits(v, a, m):
return (~m) & v | a & m return (~m) & v | a & m
## 1 ФС ## ФС Connect close
func _on_port_changed_fs_1(port_name: String, color: Color) -> void: func _on_port_changed(port_name: String, color: Color) -> void:
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.set_node_text(1, 1, port_name) if port_name == Network.ip_fs_1:
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1,1).modulate = color $TabContainer/PRD/body_grid/litera_2_4_6/fs_control.set_node_text(1, 1, port_name)
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1,1).modulate = color
elif port_name == Network.ip_fs_2:
func _on_start_fs_1(): $TabContainer/PRD/body_grid/litera_3_5_7/fs_control.set_node_text(1, 1, port_name)
Network.start_work_fs() $TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1,1).modulate = color
elif port_name == Network.ip_fs_3:
$TabContainer/PRD/body_grid/litera_1/fs_control.set_node_text(1, 1, port_name)
$TabContainer/PRD/body_grid/litera_1/fs_control.get_node2(1,1).modulate = color
# Установка формы сигнала (модуляция константа или msk)
func _on_modul_fs_1(modulation_select_1) -> void: func _on_modul_fs_1(modulation_select_1) -> void:
if modulation_select_1 == 0: if modulation_select_1 == 0:
Network.set_configure_gen_const_1() Network.set_configure_gen_const_1()
@@ -749,6 +810,7 @@ func _on_modul_fs_1(modulation_select_1) -> void:
Network.set_configure_gen_msk_1() Network.set_configure_gen_msk_1()
# Установка и получение статуса генератора фс
func _on_get_status_1(toggled_btn): func _on_get_status_1(toggled_btn):
if $Background/switch_panel/select_prd.button_pressed or $Background/switch_panel/texture_prd.button_pressed: if $Background/switch_panel/select_prd.button_pressed or $Background/switch_panel/texture_prd.button_pressed:
var inverted_state = not toggled_btn var inverted_state = not toggled_btn
@@ -787,17 +849,8 @@ func _on_status_can_macro_1(toggled_btn: bool):
## 2 ФС ## 2 ФС
func _on_port_changed_fs_2(port_name: String, color: Color) -> void:
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.set_node_text(1, 1, port_name)
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 1).modulate = color
func _on_start_fs_2():
Network.start_work_fs_2()
func _on_get_status_2(toggled_btn): func _on_get_status_2(toggled_btn):
if $Background/switch_panel/select_prd.button_pressed: if $Background/switch_panel/select_prd.button_pressed or $Background/switch_panel/texture_prd.button_pressed:
var inverted_state = not toggled_btn var inverted_state = not toggled_btn
Network.set_fs_gen_status_2(inverted_state) Network.set_fs_gen_status_2(inverted_state)
Network.get_gen_state_2() Network.get_gen_state_2()
@@ -839,6 +892,50 @@ func _on_modul_fs_2(modulation_select_2) -> void:
Network.set_configure_gen_msk_2() Network.set_configure_gen_msk_2()
## ФС 3
func _on_get_status_3(toggled_btn):
if $Background/switch_panel/select_prd.button_pressed or $Background/switch_panel/texture_prd.button_pressed:
var inverted_state = not toggled_btn
Network.set_fs_gen_status_3(inverted_state)
Network.get_gen_state_3()
func _on_set_ferq_3(freq: String):
# Проверка на наличие символов в строке freq
var regex = RegEx.new()
regex.compile("^[0-9]+$")
if not regex.search(freq):
print_debug('Ошибка: частота должна быть числом без букв')
return
# Преобразование строки в число
var freq_int = int(freq) * 1_000_000
# Проверка на диапазон
if freq_int < 370 * 1_000_000 or freq_int > 6100 * 1_000_000:
print_debug('Некорректная частота')
return
Network.set_fs_ferq_carrier_3(freq_int)
func _on_set_att_3(att: String):
Network.set_fs_attenuation_3(float(att))
func _on_set_base_can_macro_3(can_freq: String):
Network.set_can_macro_3(int(can_freq))
func _on_status_can_macro_3(toggled_btn: bool):
Network.status_can_macro_3(toggled_btn)
func _on_modul_fs_3(modulation_select_3) -> void:
if modulation_select_3 == 0:
Network.set_configure_gen_const_3()
elif modulation_select_3 == 1:
Network.set_configure_gen_msk_3()
## Switch panel ## Switch panel
func _on_prd_select() -> void: func _on_prd_select() -> void:
emit_signal('read_ems_g_start') emit_signal('read_ems_g_start')
@@ -869,16 +966,17 @@ func _on_burger_button(toggled_on: bool) -> void:
var pos_on_txt: int = 15 var pos_on_txt: int = 15
var temp = txt_grp var temp = txt_grp
var tmp_pos = pos_on_txt var tmp_pos = pos_on_txt
var pos_off: int = -300 var pos_off: int = -300
var panel = $Background/switch_panel
if toggled_on: if toggled_on:
tween.tween_property($Background/switch_panel/burgerButton/block, "global_position", Vector2(180, $Background/switch_panel/burgerButton/block.global_position.y), 0.1).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_OUT)
temp = select_grp temp = select_grp
else:
tween.tween_property($Background/switch_panel/burgerButton/block, "global_position", Vector2(10, $Background/switch_panel/burgerButton/block.global_position.y), 0.1).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_OUT)
for btn in temp: for btn in temp:
tween.tween_property(btn, "global_position", Vector2(pos_off, btn.global_position.y), 0.1).set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT) tween.tween_property(btn, "global_position", Vector2(pos_off, btn.global_position.y), 0.1).set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT)
var panel = $Background/switch_panel
if toggled_on: if toggled_on:
# Анимация вправо # Анимация вправо
tween.tween_property(panel, "global_position", Vector2(-170, panel.global_position.y), 0.3).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT) tween.tween_property(panel, "global_position", Vector2(-170, panel.global_position.y), 0.3).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
@@ -886,15 +984,13 @@ func _on_burger_button(toggled_on: bool) -> void:
# Анимация влево # Анимация влево
tween.tween_property(panel, "global_position", Vector2(0, panel.global_position.y), 0.3).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT) tween.tween_property(panel, "global_position", Vector2(0, panel.global_position.y), 0.3).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
if toggled_on: temp = txt_grp if toggled_on else select_grp
temp = txt_grp tmp_pos = pos_on_txt if toggled_on else pos_on_select
tmp_pos = pos_on_txt
else:
temp = select_grp
tmp_pos = pos_on_select
for btn in temp: for btn in temp:
tween.tween_property(btn, "global_position", Vector2(tmp_pos, btn.global_position.y), 0.1).set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT) tween.tween_property(btn, "global_position", Vector2(tmp_pos, btn.global_position.y), 0.1).set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT)
tween.tween_property($Background/switch_panel/burgerButton/block, "global_position", Vector2(-90, $Background/switch_panel/burgerButton/block.global_position.y), 0.1).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_OUT)
func set_tab_and_buttons(tab_index: int, button_name: String, txt_button_name: String) -> void: func set_tab_and_buttons(tab_index: int, button_name: String, txt_button_name: String) -> void:
@@ -905,3 +1001,7 @@ func set_tab_and_buttons(tab_index: int, button_name: String, txt_button_name: S
if button is Button or TextureButton: if button is Button or TextureButton:
if button.name != 'burgerButton': if button.name != 'burgerButton':
button.button_pressed = (button.name == button_name or button.name == txt_button_name) button.button_pressed = (button.name == button_name or button.name == txt_button_name)
func _on_connect_prd_pressed() -> void:
on_mode_select($TabContainer/PRD/select_dev.get_node2(1, 0).get_selected_id())

View File

@@ -398,6 +398,7 @@ enum META {
FGOZ_6 = 55, FGOZ_6 = 55,
FGOZ_3 = 56, FGOZ_3 = 56,
FGOZ_5 = 56, FGOZ_5 = 56,
MODUL_UM_28 = 57,
} }
enum FS_FREQ { enum FS_FREQ {
f1 = 430, f1 = 430,
@@ -408,3 +409,32 @@ enum FS_FREQ {
f6 = 2750, f6 = 2750,
f7 = 4750, f7 = 4750,
} }
enum FS_ATT {
att_1_prd_H1 = 18,
att_2_prd_H1 = 19,
att_1_prd_H2 = 18,
att_2_prd_H2 = 19,
att_1_prd_H3 = 18,
att_2_prd_H4 = 19,
att_1_prd_B1 = 17,
att_2_prd_B1 = 16,
att_1_prd_B2 = 17,
att_2_prd_B2 = 16,
att_1_prd_B3 = 17,
att_2_prd_B3 = 16,
att_1_prd_B4 = 17,
att_2_prd_B4 = 16,
att_1_prd_K1 = 15,
att_2_prd_K1 = 10,
att_3_prd_K1 = 5,
att_1_prd_K2 = 17,
att_2_prd_K2 = 16,
att_3_prd_K2 = 19,
att_1_prd_K3 = 17,
att_2_prd_K3 = 18,
att_3_prd_K3 = 19,
att_1_prd_K4 = 17,
att_2_prd_K4 = 18,
att_3_prd_K4 = 19,
}

View File

@@ -16,11 +16,13 @@ var count_packet:int = 0
var flag_control_add: bool = false var flag_control_add: bool = false
var flag_fs_1_ready: bool = false var flag_fs_1_ready: bool = false
var flag_fs_2_ready: bool = false var flag_fs_2_ready: bool = false
var flag_fs_3_ready: bool = false
var flag_dkm: bool = false var flag_dkm: bool = false
var flag_ug: bool = false var flag_ug: bool = false
var flag_modul_on_1: bool = false var flag_modul_on_1: bool = false
var flag_modul_on_2: bool = false var flag_modul_on_2: bool = false
var flag_start: bool = false var flag_start: bool = false
var prep_set_ug: int = 0
class Logger extends Node: class Logger extends Node:
@@ -55,13 +57,11 @@ class Logger extends Node:
func _ready() -> void: func _ready() -> void:
Network.connect('port_fs_opened_1', _on_fs_status_1.bind(Constants.STATE_VAL.GOOD)) #Network.connect('port_fs_opened', _on_fs_status.bind(Constants.STATE_VAL.GOOD))
Network.connect('port_fs_closed_1', _on_fs_status_1.bind(Constants.STATE_VAL.ERROR)) #Network.connect('port_fs_closed', _on_fs_status.bind(Constants.STATE_VAL.ERROR))
Network.connect('data_from_fs_1', _on_data_fs.bind('ФС-1')) Network.connect('data_from_fs_1', _on_data_fs.bind('ФС-1'))
Network.connect('port_fs_opened_2', _on_fs_status_2.bind(Constants.STATE_VAL.GOOD))
Network.connect('port_fs_closed_2', _on_fs_status_2.bind(Constants.STATE_VAL.ERROR))
Network.connect('data_from_fs_2', _on_data_fs.bind('ФС-2')) Network.connect('data_from_fs_2', _on_data_fs.bind('ФС-2'))
Network.connect('data_from_fs_3', _on_data_fs.bind('ФС-3'))
self.add_child(timer) self.add_child(timer)
self.add_child(timer_03) self.add_child(timer_03)
@@ -117,6 +117,8 @@ func _ready() -> void:
$socket_ym_pb/blok_ym_4, $socket_ym_pb/blok_ym_4,
$socket_ym_pb/blok_ym_5, $socket_ym_pb/blok_ym_5,
$socket_ym_pb/blok_ym_6, $socket_ym_pb/blok_ym_6,
$socket_ym_lb/blok_ym_litera_1,
] ]
_draw_control_panel_prd(Constants.CURRENT_MODE) _draw_control_panel_prd(Constants.CURRENT_MODE)
@@ -157,11 +159,12 @@ func _draw_control_panel_prd(pribor):
$soc_P1/MAA_2.rname = 'А23' $soc_P1/MAA_2.rname = 'А23'
# Кассета П-2 # Кассета П-2
$soc_P2.visible = false $soc_P2.visible = false
# ДКМ # ДКМ
$soc_DKM/DKM_1.visible = false $soc_DKM/DKM_1.visible = false
$soc_DKM/DKM_2.fname = 'ДКМ-2' $soc_DKM/DKM_2.fname = 'ДКМ-2'
$soc_DKM/DKM_3.fname = 'ДКМ-3' $soc_DKM/DKM_3.fname = 'ДКМ-3'
# УМ УМ
$socket_ym_lb/blok_ym_litera_1.visible = false
elif pribor == Constants.MODE.PRD_B: elif pribor == Constants.MODE.PRD_B:
# Кассета У5 # Кассета У5
@@ -195,6 +198,8 @@ func _draw_control_panel_prd(pribor):
$soc_DKM/DKM_1.visible = false $soc_DKM/DKM_1.visible = false
$soc_DKM/DKM_2.fname = 'ДКМ-4' $soc_DKM/DKM_2.fname = 'ДКМ-4'
$soc_DKM/DKM_3.fname = 'ДКМ-5' $soc_DKM/DKM_3.fname = 'ДКМ-5'
# УМ УМ
$socket_ym_lb/blok_ym_litera_1.visible = false
elif pribor == Constants.MODE.PRD_K: elif pribor == Constants.MODE.PRD_K:
# Кассета У5 # Кассета У5
@@ -232,57 +237,64 @@ func _draw_control_panel_prd(pribor):
$soc_DKM/DKM_1.visible = true $soc_DKM/DKM_1.visible = true
$soc_DKM/DKM_2.fname = 'ДКМ-6' $soc_DKM/DKM_2.fname = 'ДКМ-6'
$soc_DKM/DKM_3.fname = 'ДКМ-7' $soc_DKM/DKM_3.fname = 'ДКМ-7'
# УМ УМ
$socket_ym_lb/blok_ym_litera_1.visible = true
func _on_fs_status_1(_name_port, status_fs_1: int): func fs_1_setup(freq: int, att: float):
$Kasseta_FS/ref_A1.state = status_fs_1 await get_tree().create_timer(0.1).timeout
#if logger:
#var message: String = "Модуль ФС-1: %s" % name_port
#logger.info(message)
func _on_fs_status_2(_name_port, status_fs_2):
$Kasseta_FS/ref_A2.state = status_fs_2
#if logger:
#var message: String = "Модуль ФС-2: %s" % name_port
#logger.info(message)
func fs_1_setup(freq):
await get_tree().create_timer(0.4).timeout
Network.set_fs_gen_status(true) ## отключен на true Network.set_fs_gen_status(true) ## отключен на true
await get_tree().create_timer(0.4).timeout await get_tree().create_timer(0.1).timeout
Network.get_gen_state_1() Network.get_gen_state_1()
Network.status_can_macro_1(false) Network.status_can_macro_1(false)
Network.set_fs_ferq_carrier(freq * 1_000_000) Network.set_fs_ferq_carrier(freq * 1_000_000)
Network.set_fs_attenuation(float(18)) # Для литеры 4 Network.set_fs_attenuation(att) # Для литеры 2, 4, 6
Network.set_can_macro(freq) Network.set_can_macro(freq)
Network.status_can_macro_1(true) Network.status_can_macro_1(true)
await get_tree().create_timer(0.4).timeout await get_tree().create_timer(0.1).timeout
Network.set_fs_gen_status(false) ## отключен на true Network.set_fs_gen_status(false) ## отключен на true
await get_tree().create_timer(0.4).timeout await get_tree().create_timer(0.1).timeout
Network.get_gen_state_1() Network.get_gen_state_1()
func fs_2_setup(freq): func fs_2_setup(freq: int, att: float):
await get_tree().create_timer(1.8).timeout
Network.set_fs_gen_status_2(true) ## отключен = true
await get_tree().create_timer(0.8).timeout await get_tree().create_timer(0.8).timeout
Network.set_fs_gen_status_2(true) ## отключен = true
await get_tree().create_timer(0.1).timeout
Network.get_gen_state_2() Network.get_gen_state_2()
Network.status_can_macro_2(false) Network.status_can_macro_2(false)
Network.set_fs_ferq_carrier_2(freq * 1_000_000) Network.set_fs_ferq_carrier_2(freq * 1_000_000)
Network.set_fs_attenuation_2(float(16)) # Для литеры 5 Network.set_fs_attenuation_2(float(att)) # Для литеры 3, 5, 7
Network.set_can_macro_2(freq) Network.set_can_macro_2(freq)
Network.status_can_macro_2(true) Network.status_can_macro_2(true)
await get_tree().create_timer(0.8).timeout await get_tree().create_timer(0.1).timeout
Network.set_fs_gen_status_2(false) ## отключен = true Network.set_fs_gen_status_2(false) ## отключен = true
await get_tree().create_timer(0.8).timeout await get_tree().create_timer(0.1).timeout
Network.get_gen_state_2() Network.get_gen_state_2()
func yau_07b_setup(): func fs_3_setup(freq: int, att: float):
Network.write_port_isa(Constants.BASE_PORTS.UG+6, 58) await get_tree().create_timer(1.5).timeout
Network.write_port_isa(Constants.BASE_PORTS.UG+8, 58) Network.set_fs_gen_status_3(true) ## отключен = true
await get_tree().create_timer(0.1).timeout
Network.get_gen_state_3()
Network.status_can_macro_3(false)
Network.set_fs_ferq_carrier_3(freq * 1_000_000)
Network.set_fs_attenuation_3(float(att)) # Для литеры 1
Network.set_can_macro_3(freq)
Network.status_can_macro_3(true)
await get_tree().create_timer(0.1).timeout
Network.set_fs_gen_status_3(false) ## отключен = true
await get_tree().create_timer(0.1).timeout
Network.get_gen_state_3()
func yau_07b_setup(angle_and_att: int):
Network.write_port_isa(Constants.BASE_PORTS.UG+0x6, angle_and_att)
Network.write_port_isa(Constants.BASE_PORTS.UG+0x8, angle_and_att)
Network.write_port_isa(Constants.BASE_PORTS.UG+0xA, (angle_and_att & 0x38)>>3)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_1)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 2<<13) ## Отключить модуляцию (литера 1)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_2) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_2)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 2<<13) ## Отключить модуляцию (литера 2) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 2<<13) ## Отключить модуляцию (литера 2)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_3) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_3)
@@ -303,12 +315,22 @@ func _on_data_fs(fs_data:PackedByteArray, fs_name: String):
Constants.CMD.READ_GEN_STATUS: Constants.CMD.READ_GEN_STATUS:
if GRP == Constants.GROUP.GENERATOR: if GRP == Constants.GROUP.GENERATOR:
if fs_data.decode_u32(0xC) == 0: if fs_data.decode_u32(0xC) == 0:
logger.info('✅ Состояние генератора %s: Включен' % fs_name) if fs_name == 'ФС-1':
logger.info('✅ Состояние генератора %s: Включен' % fs_name)
$Kasseta_FS/ref_A1.state = Constants.STATE_VAL.GOOD
elif fs_name == 'ФС-2':
logger.info('✅ Состояние генератора %s: Включен' % fs_name)
$Kasseta_FS/ref_A2.state = Constants.STATE_VAL.GOOD
elif fs_name == 'ФС-3':
logger.info('✅ Состояние генератора %s: Включен' % fs_name)
$Kasseta_FS/FS_PRD_K.state = Constants.STATE_VAL.GOOD
else: else:
if fs_name == 'ФС-1': if fs_name == 'ФС-1':
flag_fs_1_ready = false flag_fs_1_ready = false
if fs_name == 'ФС-2': if fs_name == 'ФС-2':
flag_fs_2_ready = false flag_fs_2_ready = false
if fs_name == 'ФС-3':
flag_fs_3_ready = false
logger.info('🛈 Состояние генератора %s: Отключен' % fs_name) logger.info('🛈 Состояние генератора %s: Отключен' % fs_name)
Constants.CMD.BASE_CAN_MACRO_READ: Constants.CMD.BASE_CAN_MACRO_READ:
if GRP == Constants.GROUP.BASE: if GRP == Constants.GROUP.BASE:
@@ -316,18 +338,18 @@ func _on_data_fs(fs_data:PackedByteArray, fs_name: String):
func _on_yau_received(status_yau): func _on_yau_received(status_yau):
#print(Network.unit.status.decode_u8(Constants.DataIndices.DKM))
if flag_control_add: if flag_control_add:
# Сбор урожая с УКП-1 # Сбор урожая с УКП-1
var arr_power_ukp_1: Array = [] var arr_power_ukp_1: Array = []
for i in range(6): ## Мощность от УКП_1 var numbre_scrape: int = 7 if Constants.CURRENT_MODE == Constants.MODE.PRD_K else 6
for i in range(numbre_scrape): ## Мощность от УКП_1
var power_ukp_1 = status_yau.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * i) var power_ukp_1 = status_yau.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * i)
arr_power_ukp_1.append(power_ukp_1) arr_power_ukp_1.append(power_ukp_1)
if count_packet == 0: if count_packet == 0:
array_pow_1 = arr_power_ukp_1 array_pow_1 = arr_power_ukp_1
else: else:
for i in range(6): for i in range(numbre_scrape):
if arr_power_ukp_1[i] > array_pow_1[i]: if arr_power_ukp_1[i] > array_pow_1[i]:
array_pow_1[i] = arr_power_ukp_1[i] array_pow_1[i] = arr_power_ukp_1[i]
# Сбор урожая с УКП-2 # Сбор урожая с УКП-2
@@ -349,7 +371,7 @@ func _on_yau_feedback_receive(_status_yau):
if logger: if logger:
## Флаг для проверки настройки угла и аттенюации на двух литерах ## Флаг для проверки настройки угла и аттенюации на двух литерах
if Network.unit.isa_ports.has(Constants.BASE_PORTS.UG+6) and Network.unit.isa_ports.has(Constants.BASE_PORTS.UG+8): if Network.unit.isa_ports.has(Constants.BASE_PORTS.UG+6) and Network.unit.isa_ports.has(Constants.BASE_PORTS.UG+8):
if Network.unit.isa_ports[Constants.BASE_PORTS.UG+6] == 58 and Network.unit.isa_ports[Constants.BASE_PORTS.UG+8] == 58: if Network.unit.isa_ports[Constants.BASE_PORTS.UG+6] == prep_set_ug and Network.unit.isa_ports[Constants.BASE_PORTS.UG+8] == prep_set_ug:
flag_ug = true flag_ug = true
else: else:
flag_ug = false flag_ug = false
@@ -361,27 +383,68 @@ func _on_yau_feedback_receive(_status_yau):
logger.info('✅ Модуляция УМ (2, 4, 6) включена!') logger.info('✅ Модуляция УМ (2, 4, 6) включена!')
elif Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+8] == 0x4000 and (flag_modul_on_1): elif Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+8] == 0x4000 and (flag_modul_on_1):
flag_modul_on_1 = false flag_modul_on_1 = false
logger.info(' Модуляция УМ (2, 4, 6) отключена!') logger.info('🛈 Модуляция УМ (2, 4, 6) отключена!')
if Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+2] == Constants.META.MODUL_UM_3: if Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+2] == Constants.META.MODUL_UM_3:
if Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+8] == 0x8000 and (not flag_modul_on_2): if Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+8] == 0x8000 and (not flag_modul_on_2):
flag_modul_on_2 = true flag_modul_on_2 = true
logger.info('✅ Модуляция УМ (3, 5, 7) включена!') logger.info('✅ Модуляция УМ (3, 5, 7) включена!')
elif Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+8] == 0x4000 and (flag_modul_on_2): elif Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+8] == 0x4000 and (flag_modul_on_2):
flag_modul_on_2 = false flag_modul_on_2 = false
logger.info(' Модуляция УМ (3, 5, 7) отключена!') logger.info('🛈 Модуляция УМ (3, 5, 7) отключена!')
func _on_start_super_control(): func _on_start_super_control():
$log_array/await.visible = true $log_array/await.visible = true
logger = Logger.new(get_node('log_array')) logger = Logger.new(get_node('log_array'))
if (past_pribor != Constants.CURRENT_MODE):
_draw_control_panel_prd(Constants.CURRENT_MODE)
for i in count_cell: for i in count_cell:
node_cell_ind[i].state = Constants.STATE_VAL.NONE node_cell_ind[i].state = Constants.STATE_VAL.NONE
flag_dkm = false flag_dkm = false
flag_ug = false flag_ug = false
#timer.start(5) for node in um_cell_ind:
node.value0 = 0
node.value1 = 0
node.state = Constants.STATE_VAL.NONE
if (past_pribor != Constants.CURRENT_MODE): ## Temperature for
_draw_control_panel_prd(Constants.CURRENT_MODE) for i_temperature in range(6): ## Температура от УКП
if len(Network.unit.status) > Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * i_temperature:
var temperature_ukp_1 = Network.unit.status.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * i_temperature)
var temperature_ukp_2 = Network.unit.status.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * i_temperature)
var TMP_1 = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * Constants.TEMP + 3
var TMP_2 = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * Constants.TEMP + 3
if TMP_1 > 70:
um_cell_ind[i_temperature].value0 = TMP_1
_status_prd()
$log_array/await.visible = false
#timer.start(5)
return
else:
um_cell_ind[i_temperature].value0 = TMP_1
if TMP_2 > 70:
um_cell_ind[i_temperature+6].value0 = TMP_2
_status_prd()
$log_array/await.visible = false
#timer.start(5)
return
else:
um_cell_ind[i_temperature+6].value0 = TMP_2
if Constants.CURRENT_MODE == Constants.MODE.PRD_K:
if len(Network.unit.status) > Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * 7:
var temperature_litera_1 = Network.unit.status.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * 7)
var TEMPERATURE = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_litera_1) * Constants.TEMP + 3
if TEMPERATURE > 70:
um_cell_ind[12].value0 = TEMPERATURE
_status_prd()
$log_array/await.visible = false
#timer.start(5)
return
else:
um_cell_ind[12].value0 = TEMPERATURE
if (Network.unit.online): if (Network.unit.online):
$soc_y5/yau_07b.state = Constants.STATE_VAL.GOOD $soc_y5/yau_07b.state = Constants.STATE_VAL.GOOD
logger.info("✅ ЯУ-07Б: Есть связь") logger.info("✅ ЯУ-07Б: Есть связь")
@@ -397,16 +460,30 @@ func _on_start_super_control():
$log_array/await.visible = false $log_array/await.visible = false
if Network.unit_fs.online: if Network.unit_fs.online:
var fs_freq: Array = [0, 0, 0] var fs_freq: Array
var fs_att_1: float
var fs_att_2: float
var fs_att_3: float
if Constants.CURRENT_MODE == Constants.MODE.PRD_H: if Constants.CURRENT_MODE == Constants.MODE.PRD_H:
fs_freq[0] = Constants.FS_FREQ.f2 fs_freq.append(Constants.FS_FREQ.f2)
fs_freq[1] = Constants.FS_FREQ.f3 fs_att_1 = Constants.FS_ATT.att_1_prd_K1
fs_freq.append(Constants.FS_FREQ.f3)
fs_att_2 = Constants.FS_ATT.att_1_prd_K1
elif Constants.CURRENT_MODE == Constants.MODE.PRD_B: elif Constants.CURRENT_MODE == Constants.MODE.PRD_B:
fs_freq[0] = Constants.FS_FREQ.f4 fs_freq.append(Constants.FS_FREQ.f4)
fs_freq[1] = Constants.FS_FREQ.f5 fs_freq.append(Constants.FS_FREQ.f5)
logger.info('Настройка модулей ФС %s Гц' % str(fs_freq)) elif Constants.CURRENT_MODE == Constants.MODE.PRD_K:
fs_1_setup(fs_freq[0]) # Гц fs_freq.append(Constants.FS_FREQ.f6)
fs_2_setup(fs_freq[1]) # Гц fs_att_1 = Constants.FS_ATT.att_1_prd_K1
fs_freq.append(Constants.FS_FREQ.f7)
fs_att_2 = Constants.FS_ATT.att_2_prd_K1
fs_freq.append(Constants.FS_FREQ.f1)
fs_att_3 = Constants.FS_ATT.att_3_prd_K1
fs_3_setup(fs_freq[2], fs_att_3)
logger.info('🛈 Настройка модулей ФС %s Гц, %s, %s АТТ' % [str(fs_freq), str(fs_att_1), str(fs_att_2)])
fs_1_setup(fs_freq[0], fs_att_1) # Гц
fs_2_setup(fs_freq[1], fs_att_2) # Гц
else: else:
logger.info('❌ Настройка модулей ФС') logger.info('❌ Настройка модулей ФС')
@@ -440,42 +517,47 @@ func _status_cell(status):
logger.error("%s : Нет связи" % node_cell_ind[i_node].get('fname')) logger.error("%s : Нет связи" % node_cell_ind[i_node].get('fname'))
if node_cell_ind[3].state == Constants.STATE_VAL.GOOD: if node_cell_ind[3].state == Constants.STATE_VAL.GOOD:
yau_07b_setup() var mask: int = 0x7
logger.info('%s: Настройка угла и аттенюации ...' % node_cell_ind[3].get('fname')) prep_set_ug = 0
var index_ray: int = Constants.RAY_DICT.find(' 25°')
var index_att: int = Constants.ATT_DICT.find(' 10.5 dB')
## Регулировка положением луча 1
prep_set_ug = set_bits(prep_set_ug, index_ray, mask)
## Регулировка положением луча 2
mask = 0x38
prep_set_ug = set_bits(prep_set_ug, index_att << 3, mask)
logger.info('🛈 %s: Настройка угла %s' % [node_cell_ind[2].get('fname'), Constants.RAY_DICT[index_ray]])
logger.info('🛈 %s: Настройка аттенюации %s' % [node_cell_ind[2].get('fname'), Constants.ATT_DICT[index_att]])
yau_07b_setup(prep_set_ug)
else: else:
logger.error('%s: Нет на связи, не буду продолжать' % node_cell_ind[3].get('fname')) logger.error('%s: Нет на связи, не буду продолжать' % node_cell_ind[2].get('fname'))
else: else:
for i_node_unknow in range(5, 13): for i_node_unknow in range(5, 13):
node_cell_ind[i_node_unknow].state = Constants.STATE_VAL.NONE node_cell_ind[i_node_unknow].state = Constants.STATE_VAL.NONE
func _on_timer(): ## Устанавливает биты в соответствии с маской
if (Network.unit.online): ## [param v] - Прежние значения бит
logger = Logger.new(get_node('log_array')) ## [param a] - Новые значения бит
logger.info("✅ ЯУ-07Б: Есть связь") ## [param m] - Маска изменяемых бит
$soc_y5/yau_07b.state = Constants.STATE_VAL.GOOD func set_bits(v, a, m):
_status_cell(Network.unit.status) return (~m) & v | a & m
else:
for i in range(1, count_cell-9):
node_cell_ind[i].state = Constants.STATE_VAL.NONE
$soc_y5/yau_07b.state = Constants.STATE_VAL.ERROR
logger.error("❌ ЯУ-07Б: Нет связи")
if (Network.unit_fs.online):
logger.info('Настройка модулей ФС Гц:') func _on_timer():
fs_1_setup(Constants.FS_FREQ.f2) # Гц _on_start_super_control()
fs_2_setup(Constants.FS_FREQ.f3) # Гц
else:
logger.error('❌ Настройка модулей ФС')
func _on_fs_status(META:int): func _on_fs_status(META:int):
if logger: if logger:
if META == Constants.META.CI_2_OT_FS or META == Constants.META.CI_4_OT_FS: if META == Constants.META.CI_2_OT_FS or META == Constants.META.CI_4_OT_FS or META == Constants.META.CI_6_OT_FS:
flag_fs_1_ready = true flag_fs_1_ready = true
elif META == Constants.META.CI_3_OT_FS or META == Constants.META.CI_5_OT_FS: elif META == Constants.META.CI_3_OT_FS or META == Constants.META.CI_5_OT_FS or META == Constants.META.CI_7_OT_FS:
flag_fs_2_ready = true flag_fs_2_ready = true
elif META == Constants.META.CI_1_OT_FS:
flag_fs_3_ready = true
if flag_fs_1_ready and flag_fs_2_ready: if flag_fs_1_ready and flag_fs_2_ready:
#dkm #dkm
@@ -487,32 +569,48 @@ func _on_fs_status(META:int):
$Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state
$Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state
if (dkm >> 1) & 0x1 == 1: if (dkm >> 1) & 0x1 == 1:
logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено'])
else: else:
logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи'])
if (dkm >> 2) & 0x1 == 1: if (dkm >> 2) & 0x1 == 1:
logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено'])
else: else:
logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи'])
if (dkm >> 1) & 0x1 == 1 and (dkm >> 2) & 0x1 == 1: # Следующий шаг -> if (dkm >> 1) & 0x1 == 1 and (dkm >> 2) & 0x1 == 1: # Следующий шаг ->
flag_dkm = true flag_dkm = true
else:
Network.set_fs_gen_status(true) ## отключен = true
Network.get_gen_state_1()
Network.set_fs_gen_status_2(true) ## отключен = true
Network.get_gen_state_2()
_status_prd()
$log_array/await.visible = false
elif Constants.CURRENT_MODE == Constants.MODE.PRD_B: elif Constants.CURRENT_MODE == Constants.MODE.PRD_B:
$soc_DKM/DKM_2.state = (dkm >> 3) & 0x1 $soc_DKM/DKM_2.state = (dkm >> 3) & 0x1
$soc_DKM/DKM_3.state = (dkm >> 4) & 0x1 $soc_DKM/DKM_3.state = (dkm >> 4) & 0x1
$Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state
$Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state
if (dkm >> 3) & 0x1 == 1: if (dkm >> 3) & 0x1 == 1:
logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено'])
else: else:
logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи']) logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи'])
if (dkm >> 4) & 0x1 == 1: if (dkm >> 4) & 0x1 == 1:
logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено']) logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено'])
else: else:
logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи'])
if (dkm >> 3) & 0x1 == 1 and (dkm >> 4) & 0x1 == 1: # Следующий шаг -> if (dkm >> 3) & 0x1 == 1 and (dkm >> 4) & 0x1 == 1: # Следующий шаг ->
flag_dkm = true flag_dkm = true
else:
Network.set_fs_gen_status(true) ## отключен = true
Network.get_gen_state_1()
Network.set_fs_gen_status_2(true) ## отключен = true
Network.get_gen_state_2()
_status_prd()
$log_array/await.visible = false
elif Constants.CURRENT_MODE == Constants.MODE.PRD_K: elif Constants.CURRENT_MODE == Constants.MODE.PRD_K:
$soc_DKM/DKM_1.state = (dkm >> 0) & 0x1 $soc_DKM/DKM_1.state = (dkm >> 0) & 0x1
$soc_DKM/DKM_2.state = (dkm >> 5) & 0x1 $soc_DKM/DKM_2.state = (dkm >> 5) & 0x1
@@ -520,6 +618,30 @@ func _on_fs_status(META:int):
$Kasseta_FS/Block_FS_PRD_K.state = $soc_DKM/DKM_1.state $Kasseta_FS/Block_FS_PRD_K.state = $soc_DKM/DKM_1.state
$Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state $Kasseta_FS/ref_A3.state = $soc_DKM/DKM_2.state
$Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state
if (dkm >> 0) & 0x1 == 1:
print('OK')
else:
print('FAIL: ', dkm)
if (dkm >> 5) & 0x1 == 1:
logger.info('%s: %s ' % [$Kasseta_FS/ref_A3.fname, 'Включено'])
else:
logger.info('%s: %s' % [$Kasseta_FS/ref_A3.fname, 'Нет связи'])
if (dkm >> 6) & 0x1 == 1:
logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Включено'])
else:
logger.info('%s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи'])
if (dkm >> 5) & 0x1 == 1 and (dkm >> 6) & 0x1 == 1: # Следующий шаг ->
flag_dkm = true
else:
Network.set_fs_gen_status(true) ## отключен = true
Network.get_gen_state_1()
Network.set_fs_gen_status_2(true) ## отключен = true
Network.get_gen_state_2()
Network.set_fs_gen_status_3(true) ## отключен = true
Network.get_gen_state_3()
_status_prd()
$log_array/await.visible = false
func _on_modul_um(): func _on_modul_um():
@@ -548,6 +670,14 @@ func _on_timer_03():
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x4000) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x4000)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_3) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_3)
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x4000) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x4000)
Network.set_fs_gen_status(true) ## отключен = true
Network.get_gen_state_1()
Network.set_fs_gen_status_2(true) ## отключен = true
Network.get_gen_state_2()
if Constants.CURRENT_MODE == Constants.MODE.PRD_K:
Network.set_fs_gen_status_3(true) ## отключен = true
Network.get_gen_state_3()
flag_control_add = false flag_control_add = false
await get_tree().create_timer(1.0).timeout await get_tree().create_timer(1.0).timeout
logger.info('Количество принятых пакетов от ЯУ-07Б: %s пкт.' % count_packet) logger.info('Количество принятых пакетов от ЯУ-07Б: %s пкт.' % count_packet)
@@ -574,27 +704,40 @@ func _status_prd():
var pribor_ispraven: bool = false var pribor_ispraven: bool = false
var min_dopusk: int = 40 var min_dopusk: int = 40
if (status == count_cell-7): var status_need = count_cell-7 if Constants.CURRENT_MODE != Constants.MODE.PRD_K else count_cell-4
if (status == status_need):
pribor_ispraven = true pribor_ispraven = true
var count_um: int = 0
for i_pow in array_pow_1: var count_um: int = 0
for i_pow in array_pow_1:
if count_um == 6:
um_cell_ind[count_um+6].value1 = i_pow
if i_pow < min_dopusk:
pribor_ispraven = false
um_cell_ind[count_um+6].state = Constants.STATE_VAL.ERROR
else:
um_cell_ind[count_um+6].state = Constants.STATE_VAL.GOOD
count_um -=1
else:
um_cell_ind[count_um].value1 = i_pow um_cell_ind[count_um].value1 = i_pow
if i_pow < min_dopusk: if i_pow < min_dopusk:
pribor_ispraven = false pribor_ispraven = false
um_cell_ind[count_um].state = Constants.STATE_VAL.ERROR um_cell_ind[count_um].state = Constants.STATE_VAL.ERROR
else: else:
um_cell_ind[count_um].state = Constants.STATE_VAL.GOOD um_cell_ind[count_um].state = Constants.STATE_VAL.GOOD
count_um += 1 count_um += 1
for i_pow in array_pow_2:
um_cell_ind[count_um].value1 = i_pow for i_pow in array_pow_2:
if i_pow < min_dopusk: um_cell_ind[count_um].value1 = i_pow
pribor_ispraven = false if i_pow < min_dopusk:
um_cell_ind[count_um].state = Constants.STATE_VAL.ERROR pribor_ispraven = false
else: um_cell_ind[count_um].state = Constants.STATE_VAL.ERROR
um_cell_ind[count_um].state = Constants.STATE_VAL.GOOD else:
count_um += 1 um_cell_ind[count_um].state = Constants.STATE_VAL.GOOD
count_um += 1
if pribor_ispraven: if pribor_ispraven:
$lbl_control.text = 'Прибор %s исправен' % Constants.ADDRESSES[Constants.CURRENT_MODE * 4][0] $lbl_control.text = 'Прибор %s исправен' % Constants.ADDRESSES[Constants.CURRENT_MODE * 4][0]
$lbl_control.modulate = Color.AQUAMARINE $lbl_control.modulate = Color.AQUAMARINE

View File

@@ -6,6 +6,7 @@ var shift: int = 2
var button_link_meta: Dictionary = {} var button_link_meta: Dictionary = {}
var status_fs_1 var status_fs_1
var status_fs_2 var status_fs_2
var status_fs_3
func _on_read_ems_g(): func _on_read_ems_g():
@@ -190,21 +191,21 @@ func process_sockets_vert(blank: int, imp: int, count: int, col: int, parent_nod
if i == 8: # СИ_1_от_ФС if i == 8: # СИ_1_от_ФС
var CI_1_FS = parent_node2.get_child(3).get_child(0).get_child(0).get_child(2).get_child(0).get_node2(1, 6).get_child(1) var CI_1_FS = parent_node2.get_child(3).get_child(0).get_child(0).get_child(2).get_child(0).get_node2(1, 6).get_child(1)
set_frame(CI_1_FS, frame_type) set_frame(CI_1_FS, frame_type)
if frame_type == Constants.Frame.CONSTANT and status_fs_2 != Constants.Frame.CONSTANT: if frame_type == Constants.Frame.CONSTANT and status_fs_1 != Constants.Frame.CONSTANT:
emit_signal('signal_FS_is_ready', Constants.META.CI_7_OT_FS) emit_signal('signal_FS_is_ready', Constants.META.CI_1_OT_FS)
status_fs_2 = frame_type status_fs_1 = frame_type
if i == 13: # СИ_6_от_ФС if i == 13: # СИ_6_от_ФС
var CI_6_FS = parent_node2.get_child(3).get_child(0).get_child(0).get_child(0).get_child(0).get_node2(1, 6).get_child(1) var CI_6_FS = parent_node2.get_child(3).get_child(0).get_child(0).get_child(0).get_child(0).get_node2(1, 6).get_child(1)
set_frame(CI_6_FS, frame_type) set_frame(CI_6_FS, frame_type)
if frame_type == Constants.Frame.CONSTANT and status_fs_1 != Constants.Frame.CONSTANT: if frame_type == Constants.Frame.CONSTANT and status_fs_2 != Constants.Frame.CONSTANT:
emit_signal('signal_FS_is_ready', Constants.META.CI_6_OT_FS) emit_signal('signal_FS_is_ready', Constants.META.CI_6_OT_FS)
status_fs_1 = frame_type status_fs_2 = frame_type
if i == 14: # СИ_7_от_ФС if i == 14: # СИ_7_от_ФС
var CI_7_FS = parent_node2.get_child(3).get_child(0).get_child(0).get_child(1).get_child(0).get_node2(1, 6).get_child(1) var CI_7_FS = parent_node2.get_child(3).get_child(0).get_child(0).get_child(1).get_child(0).get_node2(1, 6).get_child(1)
set_frame(CI_7_FS, frame_type) set_frame(CI_7_FS, frame_type)
if frame_type == Constants.Frame.CONSTANT and status_fs_2 != Constants.Frame.CONSTANT: if frame_type == Constants.Frame.CONSTANT and status_fs_3 != Constants.Frame.CONSTANT:
emit_signal('signal_FS_is_ready', Constants.META.CI_7_OT_FS) emit_signal('signal_FS_is_ready', Constants.META.CI_7_OT_FS)
status_fs_2 = frame_type status_fs_3 = frame_type
func set_frame(node: Node, val: int): node.set_frame(val) func set_frame(node: Node, val: int): node.set_frame(val)
@@ -260,7 +261,14 @@ func on_mode_link(mode, list):
## Формирование команды для отправкы команды на устройство ## Формирование команды для отправкы команды на устройство
address_port_wr = Constants.BASE_PORTS.EMS_G+8 address_port_wr = Constants.BASE_PORTS.EMS_G+8
var set_mode = 0x0000 if mode == 0 else 0x2000 if mode == 1 else 0x4000 if mode == 2 else 0x8000 var set_mode: int = 0x0000 if mode == 0 else 0x2000 if mode == 1 else 0x4000 if mode == 2 else 0x8000
var node_prd: Node = get_parent().get_parent()
for i_meta in 3:
if meta == node_prd.current_meta[i_meta]:
node_prd.modul_um[i_meta] = set_mode
if node_prd.modul_um.has(0x8000):
node_prd.timer_modul_um.wait_time = 2.3
node_prd.timer_modul_um.start()
Network.write_port_isa(address_port_wr, set_mode) Network.write_port_isa(address_port_wr, set_mode)

View File

@@ -18,8 +18,8 @@ var send_array: Array = []
var client_fs_1: StreamPeer var client_fs_1: StreamPeer
var ip_fs_1: String = Constants.ADDRESSES[0][4] var ip_fs_1: String = Constants.ADDRESSES[0][4]
var peerstream_fs_1: PacketPeer var peerstream_fs_1: PacketPeer
var state_fs = Constants.STATE.IDLE var state_fs_1 = Constants.STATE.IDLE
var command_stack: Array var command_stack_1: Array
var counter_fs_1: int = 0 var counter_fs_1: int = 0
## 2 ФС ## 2 ФС
@@ -30,6 +30,14 @@ var state_fs_2 = Constants.STATE.IDLE
var command_stack_2: Array var command_stack_2: Array
var counter_fs_2: int = 0 var counter_fs_2: int = 0
## 3 ФС
var client_fs_3: StreamPeer
var ip_fs_3: String = Constants.ADDRESSES[0][5]
var peerstream_fs_3: PacketPeer
var state_fs_3 = Constants.STATE.IDLE
var command_stack_3: Array
var counter_fs_3: int = 0
# Яу-07б # Яу-07б
signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
signal yau_receive(_data_from_yau) signal yau_receive(_data_from_yau)
@@ -38,10 +46,9 @@ signal yau_read_isa(_unit_isa_ports)
# ФС модуль # ФС модуль
signal data_from_fs_1(data:PackedByteArray) signal data_from_fs_1(data:PackedByteArray)
signal data_from_fs_2(data:PackedByteArray) signal data_from_fs_2(data:PackedByteArray)
signal port_fs_opened_1(port_name: String) signal data_from_fs_3(data:PackedByteArray)
signal port_fs_opened_2(port_name: String) signal port_fs_opened(port_name: String)
signal port_fs_closed_1(port_name: String) signal port_fs_closed(port_name: String)
signal port_fs_closed_2(port_name: String)
signal port_error(error_str: String) signal port_error(error_str: String)
@@ -79,27 +86,37 @@ func poll_receive_fs(client: StreamPeerTCP, peerstream: PacketPeer, ip_fs: Strin
if not peer: if not peer:
emit_signal("port_error", ip_fs) emit_signal("port_error", ip_fs)
return return
# Проверяем состояние подключения
if client.get_status() != StreamPeerTCP.STATUS_CONNECTED: if client.get_status() != StreamPeerTCP.STATUS_CONNECTED:
if client == client_fs_1: emit_signal("port_fs_closed", ip_fs)
emit_signal("port_fs_closed_1", ip_fs)
elif client == client_fs_2:
emit_signal("port_fs_closed_2", ip_fs)
return return
# Проверяем состояние подключения
if peer.get_available_bytes() > 0: #if client.get_status() != StreamPeerTCP.STATUS_CONNECTED:
#if client == client_fs_1:
#emit_signal("port_fs_closed", ip_fs)
#elif client == client_fs_2:
#emit_signal("port_fs_closed", ip_fs)
#elif client == client_fs_3:
#emit_signal("port_fs_closed", ip_fs)
#return
while peer.get_available_bytes() > 0:
var rx_data: PackedByteArray var rx_data: PackedByteArray
rx_data.append_array(peer.get_data(peer.get_available_bytes())[1]) rx_data.append_array(peer.get_data(peer.get_available_bytes())[1])
if client == client_fs_1: if client == client_fs_1:
emit_signal("data_from_fs_1", rx_data) emit_signal("data_from_fs_1", rx_data)
emit_signal("port_fs_opened_1", ip_fs) emit_signal("port_fs_opened", ip_fs)
if state_fs == Constants.STATE.SEND: if state_fs_1 == Constants.STATE.SEND:
state_fs = Constants.STATE.DONE state_fs_1 = Constants.STATE.DONE
elif client == client_fs_2: elif client == client_fs_2:
emit_signal("data_from_fs_2", rx_data) emit_signal("data_from_fs_2", rx_data)
emit_signal("port_fs_opened_2", ip_fs) emit_signal("port_fs_opened", ip_fs)
if state_fs_2 == Constants.STATE.SEND: if state_fs_2 == Constants.STATE.SEND:
state_fs_2 = Constants.STATE.DONE state_fs_2 = Constants.STATE.DONE
elif client == client_fs_3:
emit_signal("data_from_fs_3", rx_data)
emit_signal("port_fs_opened", ip_fs)
if state_fs_3 == Constants.STATE.SEND:
state_fs_3 = Constants.STATE.DONE
func _ready() -> void: func _ready() -> void:
@@ -116,7 +133,11 @@ func _ready() -> void:
unit.connect('line_changed', Callable(self, 'on_line_changed')) unit.connect('line_changed', Callable(self, 'on_line_changed'))
unit.connect('command_fail', Callable(self, 'on_command_fail')) unit.connect('command_fail', Callable(self, 'on_command_fail'))
set_config()
func set_config():
write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.CI_2_B_UF) write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.CI_2_B_UF)
read_port_isa([Constants.BASE_PORTS.EMS_G+8]) read_port_isa([Constants.BASE_PORTS.EMS_G+8])
write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.CI_3_B_UF) write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.CI_3_B_UF)
@@ -128,9 +149,11 @@ func _ready() -> void:
write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.FGOZ_3) write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.FGOZ_3)
read_port_isa([Constants.BASE_PORTS.EMS_G+8, Constants.BASE_PORTS.UG+6, Constants.BASE_PORTS.UG+8]) read_port_isa([Constants.BASE_PORTS.EMS_G+8, Constants.BASE_PORTS.UG+6, Constants.BASE_PORTS.UG+8])
connect_fs_1() connect_fs_1()
start_work_fs()
connect_fs_2() connect_fs_2()
connect_fs_3()
start_work_fs()
start_work_fs_2() start_work_fs_2()
start_work_fs_3()
func _process(delta: float) -> void: func _process(delta: float) -> void:
@@ -144,6 +167,9 @@ func _process(delta: float) -> void:
if client_fs_2: if client_fs_2:
poll_receive_fs(client_fs_2, peerstream_fs_2, ip_fs_2) poll_receive_fs(client_fs_2, peerstream_fs_2, ip_fs_2)
state_machine_fs(client_fs_2) state_machine_fs(client_fs_2)
if client_fs_3:
poll_receive_fs(client_fs_3, peerstream_fs_3, ip_fs_3)
state_machine_fs(client_fs_3)
poll_receive_yau07(soc_brodcast) poll_receive_yau07(soc_brodcast)
poll_receive_yau07(soc_unicast) poll_receive_yau07(soc_unicast)
@@ -207,33 +233,41 @@ func on_command_change_device(meta_device):
ip_port_yau = meta_device[1] ip_port_yau = meta_device[1]
ip_fs_1 = meta_device[3] ip_fs_1 = meta_device[3]
ip_fs_2 = meta_device[4] ip_fs_2 = meta_device[4]
#ip_fs_3 = meta_device[5] ip_fs_3 = meta_device[5]
connect_fs_1() connect_fs_1()
connect_fs_2() connect_fs_2()
if Constants.CURRENT_MODE == Constants.MODE.PRD_K:
connect_fs_3()
func state_machine_fs(client_fs): func state_machine_fs(client_fs):
## State fs machine ## State fs machine
if client_fs == client_fs_1: if client_fs == client_fs_1:
if (state_fs == Constants.STATE.IDLE) or (state_fs == Constants.STATE.DONE): if (state_fs_1 == Constants.STATE.IDLE) or (state_fs_1 == Constants.STATE.DONE):
if command_stack: if command_stack_1:
var pack: Array = command_stack.pop_front() var pack: Array = command_stack_1.pop_front()
unit_fs.send_fs_data(pack, client_fs_1, peerstream_fs_1) unit_fs.send_fs_data(pack, client_fs_1, peerstream_fs_1)
state_fs = Constants.STATE.SEND state_fs_1 = Constants.STATE.SEND
if client_fs == client_fs_2: if client_fs == client_fs_2:
if (state_fs_2 == Constants.STATE.IDLE) or (state_fs_2 == Constants.STATE.DONE): if (state_fs_2 == Constants.STATE.IDLE) or (state_fs_2 == Constants.STATE.DONE):
if command_stack_2: if command_stack_2:
var pack: Array = command_stack_2.pop_front() var pack: Array = command_stack_2.pop_front()
unit_fs.send_fs_data(pack, client_fs_2, peerstream_fs_2) unit_fs.send_fs_data(pack, client_fs_2, peerstream_fs_2)
state_fs_2 = Constants.STATE.SEND state_fs_2 = Constants.STATE.SEND
if client_fs == client_fs_3:
if (state_fs_3 == Constants.STATE.IDLE) or (state_fs_3 == Constants.STATE.DONE):
if command_stack_3:
var pack: Array = command_stack_3.pop_front()
unit_fs.send_fs_data(pack, client_fs_3, peerstream_fs_3)
state_fs_3 = Constants.STATE.SEND
# Подключится к модулю ФС # Подключится к модулю ФС
func connect_fs_1(): func connect_fs_1():
if client_fs_1: if client_fs_1:
unit_fs.disconnect_fs(client_fs_1) unit_fs.disconnect_fs(client_fs_1)
state_fs = Constants.STATE.IDLE state_fs_1 = Constants.STATE.IDLE
command_stack = [] command_stack_1 = []
client_fs_1 = StreamPeerTCP.new() client_fs_1 = StreamPeerTCP.new()
peerstream_fs_1 = PacketPeerStream.new() peerstream_fs_1 = PacketPeerStream.new()
@@ -254,6 +288,15 @@ func start_work_fs():
counter_fs_1 += 1 counter_fs_1 += 1
unit_fs.get_gen_state(counter_fs_1, client_fs_1) unit_fs.get_gen_state(counter_fs_1, client_fs_1)
counter_fs_1 += 1 counter_fs_1 += 1
var set_freq = Constants.FS_FREQ.f2 if Constants.CURRENT_MODE == Constants.MODE.PRD_H else Constants.FS_FREQ.f4 if Constants.CURRENT_MODE == Constants.MODE.PRD_B else Constants.FS_FREQ.f6
unit_fs.set_carrier(set_freq * 1_000_000, counter_fs_1, client_fs_1)
counter_fs_1 += 1
unit_fs.set_att_batch(Constants.FS_ATT.att_1_prd_H1, counter_fs_1, client_fs_1)
counter_fs_1 += 1
unit_fs.set_base_can_macro(set_freq, counter_fs_1, client_fs_1)
counter_fs_1 += 1
unit_fs.get_att_batch(counter_fs_1, client_fs_1) unit_fs.get_att_batch(counter_fs_1, client_fs_1)
counter_fs_1 += 1 counter_fs_1 += 1
unit_fs.get_carrier(counter_fs_1, client_fs_1) unit_fs.get_carrier(counter_fs_1, client_fs_1)
@@ -272,8 +315,8 @@ func set_fs_gen_status(state_gen):
func get_gen_state_1(): func get_gen_state_1():
unit_fs.get_gen_state(counter_fs_1, client_fs_1) unit_fs.get_gen_state(counter_fs_1, client_fs_1)
counter_fs_1 += 1 counter_fs_1 += 1
#unit_fs.get_base_current_temp(counter_fs_1, client_fs_1) unit_fs.get_base_current_temp(counter_fs_1, client_fs_1)
#counter_fs_1 += 1 counter_fs_1 += 1
func set_fs_ferq_carrier(freq: int): func set_fs_ferq_carrier(freq: int):
@@ -348,6 +391,15 @@ func start_work_fs_2():
counter_fs_2 += 1 counter_fs_2 += 1
unit_fs.get_gen_state(counter_fs_2, client_fs_2) unit_fs.get_gen_state(counter_fs_2, client_fs_2)
counter_fs_2 += 1 counter_fs_2 += 1
var set_freq = Constants.FS_FREQ.f3 if Constants.CURRENT_MODE == Constants.MODE.PRD_H else Constants.FS_FREQ.f5 if Constants.CURRENT_MODE == Constants.MODE.PRD_B else Constants.FS_FREQ.f7
unit_fs.set_carrier(set_freq * 1_000_000, counter_fs_2, client_fs_2)
counter_fs_2 += 1
unit_fs.set_att_batch(Constants.FS_ATT.att_2_prd_H1, counter_fs_2, client_fs_2)
counter_fs_2 += 1
unit_fs.set_base_can_macro(set_freq, counter_fs_2, client_fs_2)
counter_fs_2 += 1
unit_fs.get_att_batch(counter_fs_2, client_fs_2) unit_fs.get_att_batch(counter_fs_2, client_fs_2)
counter_fs_2 += 1 counter_fs_2 += 1
unit_fs.get_carrier(counter_fs_2, client_fs_2) unit_fs.get_carrier(counter_fs_2, client_fs_2)
@@ -366,8 +418,8 @@ func set_fs_gen_status_2(state_gen: bool):
func get_gen_state_2(): func get_gen_state_2():
unit_fs.get_gen_state(counter_fs_2, client_fs_2) unit_fs.get_gen_state(counter_fs_2, client_fs_2)
counter_fs_2 += 1 counter_fs_2 += 1
#unit_fs.get_base_current_temp(counter_fs_2, client_fs_2) unit_fs.get_base_current_temp(counter_fs_2, client_fs_2)
#counter_fs_2 += 1 counter_fs_2 += 1
func set_fs_ferq_carrier_2(freq: int): func set_fs_ferq_carrier_2(freq: int):
@@ -416,3 +468,108 @@ func set_configure_gen_msk_2():
func set_configure_gen_const_2(): func set_configure_gen_const_2():
unit_fs.set_configure_state_msk_const_1(counter_fs_2, client_fs_2) unit_fs.set_configure_state_msk_const_1(counter_fs_2, client_fs_2)
counter_fs_2 += 1 counter_fs_2 += 1
## 3 ФС коннект
func connect_fs_3():
if client_fs_3:
unit_fs.disconnect_fs(client_fs_3)
state_fs_3 = Constants.STATE.IDLE
command_stack_3 = []
client_fs_3 = StreamPeerTCP.new()
peerstream_fs_3 = PacketPeerStream.new()
var rc = client_fs_3.connect_to_host(ip_fs_3, Constants.PORT_FS)
if rc!= Error.OK:
emit_signal("port_error", ip_fs_3)
else:
peerstream_fs_3.set_stream_peer(client_fs_3)
func start_work_fs_3():
counter_fs_3 = 0
unit_fs.start_session(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.set_gen_state(false, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.set_gen_state(true, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_gen_state(counter_fs_3, client_fs_3)
counter_fs_3 += 1
var set_freq = Constants.FS_FREQ.f1
unit_fs.set_carrier(set_freq * 1_000_000, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.set_att_batch(Constants.FS_ATT.att_3_prd_K1, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.set_base_can_macro(set_freq, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_att_batch(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_carrier(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_current_temp(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_can_macro(counter_fs_3, client_fs_3)
counter_fs_3 += 1
func set_fs_gen_status_3(state_gen: bool):
unit_fs.set_gen_state(state_gen, counter_fs_3, client_fs_3)
counter_fs_3 += 1
func get_gen_state_3():
unit_fs.get_gen_state(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_current_temp(counter_fs_3, client_fs_3)
counter_fs_3 += 1
func set_fs_ferq_carrier_3(freq: int):
unit_fs.set_carrier(freq, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_current_temp(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_carrier(counter_fs_3, client_fs_3)
counter_fs_3 += 1
func set_fs_attenuation_3(attenuation: float):
unit_fs.set_att_batch(attenuation, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_att_batch(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_current_temp(counter_fs_3, client_fs_3)
counter_fs_3 += 1
## Установка CAN частоты для подстройки фильтра ФС
func set_can_macro_3(can_frequency: int):
unit_fs.set_base_can_macro(can_frequency, counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_current_temp(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.get_base_can_macro(counter_fs_3, client_fs_3)
counter_fs_3 += 1
## Установка CAN статуса(вкл/откл) для подстройки фильтра ФС
func status_can_macro_3(state_can: bool):
unit_fs.status_can_macro_exec(state_can, counter_fs_3, client_fs_3)
counter_fs_3 += 1
## Установка модуляции msk на генератор ФС
func set_configure_gen_msk_3():
unit_fs.set_configure_state_msk_modul_3(counter_fs_3, client_fs_3)
counter_fs_3 += 1
unit_fs.set_configure_state_msk_modul_3(counter_fs_3, client_fs_3)
counter_fs_3 += 1
## Установка модуляции const на генератор ФС
func set_configure_gen_const_3():
unit_fs.set_configure_state_msk_const_1(counter_fs_3, client_fs_3)
counter_fs_3 += 1

View File

@@ -239,7 +239,7 @@ size_flags_vertical = 6
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
max_value = 150.0 max_value = 90.0
value_name = "T°" value_name = "T°"
[node name="indicator1" parent="margin/vbox/grid1" instance=ExtResource("5_3i5am")] [node name="indicator1" parent="margin/vbox/grid1" instance=ExtResource("5_3i5am")]