From 022b93845133e344ad0ae2f4a3b2416b7dcef03d Mon Sep 17 00:00:00 2001 From: lepshiy Date: Fri, 7 Feb 2025 11:03:19 +0300 Subject: [PATCH 1/9] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B5=D0=B3=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=B1=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/PRD.gd | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 1959c84..8f5d2c6 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -29,6 +29,7 @@ func _ready() -> void: if args[i] == "testsave-path" and i + 1 < args.size(): save_path = args[i + 1] break + # Таблица УКП_1 node_select1 = $TabContainer/PRD/body_grid/litera_2_4_6/table_ukp_1 draw_tabl(node_select1, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size()) @@ -98,6 +99,7 @@ func _ready() -> void: var node_select_device = $TabContainer/PRD/select_dev draw_tabl(node_select_device, Constants.SELECT_DEVICE, Constants.SELECT_DEVICE.size()) var get_select_device = node_select_device.get_node2(1, 0) + get_select_device.connect('item_selected', Callable(self, 'on_device_selected')) # Заполнение адресов for i_addr in Constants.ADDRESSES.size(): @@ -107,7 +109,7 @@ func _ready() -> void: node_select_device.get_node2(0,0).text = 'ПРИБОР' node_select_device.set_columns_min_size([100, 100]) - # Получаем имя выбранного прибора + # Получение выбранного прибора при загрузке if Constants.ADDRESSES.size() > 0: get_select_device.select(0) status_pribor = get_select_device.get_item_text(0).strip_edges().substr(4) @@ -150,6 +152,11 @@ func _ready() -> void: node_select_fs_2.get_node2(1, 4).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_2')) +func on_device_selected(selected_index: int) -> void: + var get_select_device = $TabContainer/PRD/select_dev.get_node2(1, 0) + status_pribor = get_select_device.get_item_text(selected_index).strip_edges().substr(4) + + func draw_control_panel_prd(mode) -> void: for node_path in Constants.NODE_MAP: var index = Constants.NODE_MAP[node_path] @@ -368,21 +375,6 @@ func _save_selected_file(file_path: String): other_file.close() -func _on_file_selected(file_path: String): - var file = FileAccess.open(file_path, FileAccess.READ) - # Проверка на открытие/чтение файла - if file != OK: - return - var file_content = file.get_as_text() - file.close() - var json = JSON.new() - var data = json.parse(file_content) - # Проверка на разбор содержимого файла - if data.error != OK: - return - Constants.EMS_G_PORT_DATA_HOLDER = data.result - - func _on_load_config(): var file_dialog = FileDialog.new() var base_path = save_path + "save//" @@ -391,9 +383,24 @@ func _on_load_config(): file_dialog.access = FileDialog.ACCESS_FILESYSTEM file_dialog.current_dir = base_path add_child(file_dialog) + file_dialog.connect("file_selected", Callable(self, "_on_file_selected")) file_dialog.popup_centered() +func _on_file_selected(file_path: String): + var file = FileAccess.open(file_path, FileAccess.READ) + if file == null: + return + var file_content = file.get_as_text() + file.close() + var json = JSON.new() + var data = json.parse(file_content) + Constants.EMS_G_PORT_DATA_HOLDER.clear() + for key in data.result.keys(): + var item = [key, data.result[key]] + Constants.EMS_G_PORT_DATA_HOLDER.append(item) + + func set_tab_and_buttons(tab_index: int, button_name: String) -> void: $TabContainer.current_tab = tab_index var side_panel = $Background/side_panel @@ -410,6 +417,7 @@ func on_btn_select(intem_from_sector: int) -> void: Network.on_command_change_device(meta) flag_mode = meta[2] draw_control_panel_prd(flag_mode) + status_pribor = get_select_device.get_item_text(intem_from_sector).strip_edges().substr(4) _on_start_fs_1() _on_start_fs_2() From 2ff430c3815dae1d5d56882001ff8a52e6a9666b Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 7 Feb 2025 08:32:14 +0300 Subject: [PATCH 2/9] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD_MP550.tscn | 45 ++++++- load.gdshader => Shaders/load.gdshader | 0 Shaders/loadead.gdshader | 118 +++++++++++++++++++ opt_btn.gdshader => Shaders/opt_btn.gdshader | 0 ray_2.gdshader => Shaders/ray_2.gdshader | 0 light_ind.tscn | 2 +- scripts/constants.gd | 23 ++-- table/элемент-в.tscn | 2 +- 8 files changed, 172 insertions(+), 18 deletions(-) rename load.gdshader => Shaders/load.gdshader (100%) create mode 100644 Shaders/loadead.gdshader rename opt_btn.gdshader => Shaders/opt_btn.gdshader (100%) rename ray_2.gdshader => Shaders/ray_2.gdshader (100%) diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 3860e19..3c6c464 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=49 format=3 uid="uid://cvor2jm4xk3ha"] +[gd_scene load_steps=53 format=3 uid="uid://cvor2jm4xk3ha"] [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"] @@ -7,14 +7,15 @@ [ext_resource type="Texture2D" uid="uid://cfktmk2rowmul" path="res://table/off.png" id="3_qvuyu"] [ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"] [ext_resource type="Texture2D" uid="uid://co8dxcd8eckjs" path="res://Web.png" id="5_i3nvb"] -[ext_resource type="Shader" path="res://ray_2.gdshader" id="8_12mng"] +[ext_resource type="Shader" path="res://Shaders/ray_2.gdshader" id="8_12mng"] [ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="9_0r2qk"] [ext_resource type="Script" path="res://scripts/control_panel.gd" id="9_akagi"] [ext_resource type="Script" path="res://scripts/ems_g.gd" id="9_g1wia"] -[ext_resource type="Shader" path="res://load.gdshader" id="10_lf1xh"] +[ext_resource type="Shader" path="res://Shaders/load.gdshader" id="10_lf1xh"] [ext_resource type="PackedScene" uid="uid://bdb0bhfu7366l" path="res://kasseta-fs-kd.tscn" id="10_tdh2s"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://table/элемент-в.tscn" id="11_fg7ul"] [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"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eib3t"] bg_color = Color(0.223529, 0.168627, 0.223529, 1) @@ -129,6 +130,35 @@ shader_parameter/inner_radius = 0.32 [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ooo4i"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_cm644"] +shader = ExtResource("16_4osrw") +shader_parameter/dot_scale = 0.5 +shader_parameter/ring_radius = 0.2 +shader_parameter/num_points = 8 +shader_parameter/gap_ratio = 0.102 +shader_parameter/all_dots_same_size = false +shader_parameter/dot_color_start = Color(0.5, 0, 0.5, 1) +shader_parameter/dot_color_end = Color(0.8, 0.5, 1, 1) +shader_parameter/enable_shadow = true +shader_parameter/shadow_color = Color(0, 0, 0, 0.35) +shader_parameter/shadow_offset = Vector2(0.03, 0.01) +shader_parameter/rotation_speed = 1.5 +shader_parameter/icon_size = 0.15 +shader_parameter/enable_icon_rotation = false +shader_parameter/reverse_icon_rotation = false +shader_parameter/icon_rotation_speed = 1.0 +shader_parameter/show_icon = false + +[sub_resource type="Gradient" id="Gradient_kvhy4"] +colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_2sr0p"] +gradient = SubResource("Gradient_kvhy4") +width = 100 +height = 150 +fill = 1 +fill_from = Vector2(0.521368, 0.512821) + [sub_resource type="ShaderMaterial" id="ShaderMaterial_slcfo"] shader = ExtResource("10_lf1xh") shader_parameter/frequency = 5.0 @@ -738,6 +768,14 @@ offset_bottom = 782.0 color = Color(0, 0, 0, 0.596078) metadata/_edit_lock_ = true +[node name="win_load" type="TextureButton" parent="TabContainer/EMS_G/load_boadr"] +material = SubResource("ShaderMaterial_cm644") +offset_left = 730.0 +offset_top = 311.0 +offset_right = 830.0 +offset_bottom = 461.0 +texture_normal = SubResource("GradientTexture2D_2sr0p") + [node name="load" type="Sprite2D" parent="TabContainer/EMS_G/load_boadr"] material = SubResource("ShaderMaterial_slcfo") position = Vector2(785.001, 361.5) @@ -746,6 +784,7 @@ texture = SubResource("GradientTexture2D_0pk2o") metadata/_edit_lock_ = true [node name="Load_text" type="Label" parent="TabContainer/EMS_G/load_boadr"] +visible = false layout_mode = 0 offset_left = 693.0 offset_top = 341.0 diff --git a/load.gdshader b/Shaders/load.gdshader similarity index 100% rename from load.gdshader rename to Shaders/load.gdshader diff --git a/Shaders/loadead.gdshader b/Shaders/loadead.gdshader new file mode 100644 index 0000000..0dc4058 --- /dev/null +++ b/Shaders/loadead.gdshader @@ -0,0 +1,118 @@ +shader_type canvas_item; + +// Конфигурационные униформы для кольца. +uniform float dot_scale : hint_range(0.1, 9.1) = 0.5; // Масштаб точек кольца. +uniform float ring_radius : hint_range(0.1, 1.0) = 0.2; // Радиус кольца. +uniform int num_points : hint_range(3, 10) = 8; // Количество точек на кольце. +uniform float gap_ratio : hint_range(0.0, 0.9) = 0.22; // Отношение пробелов между точками. +uniform bool all_dots_same_size = false; // Флаг, указывающий, должны ли все точки быть одинакового размера. + +// Визуальные свойства точек кольца. +uniform vec4 dot_color_start : source_color = vec4(0.5, 0.0, 0.5, 1.0); // Начальный цвет точек. +uniform vec4 dot_color_end : source_color = vec4(0.8, 0.5, 1.0, 1.0); // Конечный цвет точек. +uniform bool enable_shadow = true; // Флаг для включения/выключения теней. +uniform vec4 shadow_color : source_color = vec4(0.0, 0.0, 0.0, 0.35); // Цвет теней. +uniform vec2 shadow_offset = vec2(0.03, 0.01); // Смещение теней от точек. + +// Контроль анимации кольца. +uniform float rotation_speed : hint_range(0.0, 10.0) = 1.5; // Скорость вращения кольца. + + // Новые униформы для текстуры иконки и её внешнего вида. +uniform sampler2D icon_texture; // Текстура иконки. +uniform float icon_size : hint_range(0.0, 1.0) = 0.15; // Контроль радиуса иконки. + +// Новые униформы для контроля вращения иконки. +uniform bool enable_icon_rotation = false; // Флаг для включения вращения иконки. +uniform bool reverse_icon_rotation = false; // Флаг для инверсии вращения иконки. +uniform float icon_rotation_speed : hint_range(-10.0, 10.0) = 1.0; // Скорость вращения иконки. + +// Униформ для контроля отрисовки иконки. +uniform bool show_icon = false; // Если false, текстура иконки игнорируется. + +void fragment() { + // Преобразование UV-координат для центрирования начала координат и корректировки в зависимости от аспекта экрана. + float aspect_ratio = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y; + vec2 uv = (UV * 2.0 - 1.0) * vec2(0.3, aspect_ratio); // Нормализация UV координат. + + // Подсчет кольца (точек и опциональной тени). + vec4 ring_color = vec4(0.0); // Начальный цвет кольца. + float dot_accum = 0.0; // Накапливаемый вклад от точек. + float shadow_accum = 0.0; // Накапливаемый вклад от теней. + + float total_angle = 6.283185307; // Полный круг в радианах (2π). + float gap = total_angle * gap_ratio; // Вычисление ширины пробела между точками. + float spacing = (total_angle - gap) / float(num_points); // Вычисление интервала между точками. + + // Определение направления вращения кольца. + float direction = 1.0; // Вращение по часовой стрелке или против. + float rotation = TIME * rotation_speed * direction; // Вычисление текущего угла поворота. + + for (int i = 0; i < num_points; i++) { // Проход по каждой точке кольца. + float angle = rotation + spacing * float(i); // Вычисление угла для данной точки. + + vec2 pos = vec2(cos(angle), sin(angle)) * ring_radius; // Вычисление позиции точки по окружности. + + // Вычисление размера точки: + float size_factor = 0.5 + (float(i) / float(num_points)); // Фактор уменьшения размера. + float radius = all_dots_same_size ? 0.1 * dot_scale : 0.1 * size_factor * dot_scale; // Радиус точки. + + // Интерполяция цвета точки вдоль кольца от начала к концу. + float gradient_factor = float(i) / float(num_points - 1); // Фактор градиента для цветовой интерполяции. + vec4 dot_color = mix(dot_color_start, dot_color_end, gradient_factor); // Цвет точки. + + // Вычисление вклада точки на основе расстояния. + float distance = length(uv - pos); // Расстояние до текущей точки. + float contribution = smoothstep(radius + 0.01, radius, distance); // Плавный вклад на основе расстояния. + + if (contribution > 0.0) { // Если вклад точки больше нуля, + ring_color = mix(ring_color, dot_color, contribution); // Смешивание с цветом кольца. + dot_accum += contribution; // Накопление вклада от точки. + } + + // Опциональная тень за каждой точкой. + if (enable_shadow) { + vec2 shadow_pos = pos + shadow_offset; // Позиция для тени. + float shadow_dist = length(uv - shadow_pos); // Расстояние до тени. + float shadow_contrib = smoothstep(radius * 1.2 + 0.005, radius * 1.2, shadow_dist); // Вклад от тени. + shadow_accum += shadow_contrib; // Накопление вклада от теней. + } + } + + // Определение базового цвета для кольца или тени. + vec4 base_color = vec4(0.0); // Начальный цвет. + if (dot_accum > 0.0) { // Если есть вклад от точек, + base_color = ring_color; // Установка базового цвета на цвет кольца. + } else if (enable_shadow && shadow_accum > 0.0) { // Если тени включены и есть вклад от теней, + base_color = shadow_color; // Установка базового цвета на цвет тени. + } + + // Отрисовка иконки - приступаем только если show_icon истинно. + if (show_icon) { + // Создание радиальной маски, чтобы иконка была видимой внутри радиуса icon_size. + float icon_mask = smoothstep(icon_size, icon_size - 0.005, length(uv)); // Маска для иконки. + + // Нормализация UV-координат для иконки. + vec2 icon_uv = (uv / icon_size + vec2(1.0)) / 2.0; // Превращение из диапазона (-icon_size ... +icon_size) в (0 ... 1). + + // Применение вращения иконки, если оно включено. + if (enable_icon_rotation) { + float icon_angle = TIME * icon_rotation_speed; // Угол вращения на основе времени и скорости вращения. + if (reverse_icon_rotation) { + icon_angle = -icon_angle; // Инверсия угла, если требуется. + } + // Вращение вокруг центра (0.5, 0.5) текстуры иконки. + vec2 centered_uv = icon_uv - vec2(0.5); // Смещение UV координат. + float s = sin(icon_angle); // Синус угла. + float c = cos(icon_angle); // Косинус угла. + centered_uv = vec2(centered_uv.x * c - centered_uv.y * s, + centered_uv.x * s + centered_uv.y * c); // Применение матрицы вращения. + icon_uv = centered_uv + vec2(0.5); // Смещение обратно к нормализованным координатам. + } + + vec4 icon_sample = texture(icon_texture, icon_uv); // Получение цвета из текстуры иконки. + // Смешивание текстуры иконки с базовым цветом кольца с учетом маски и альфа-канала текстуры. + base_color = mix(base_color, icon_sample, icon_mask * icon_sample.a); + } + + COLOR = base_color; // Установка финального цвета для текущего пикселя. +} \ No newline at end of file diff --git a/opt_btn.gdshader b/Shaders/opt_btn.gdshader similarity index 100% rename from opt_btn.gdshader rename to Shaders/opt_btn.gdshader diff --git a/ray_2.gdshader b/Shaders/ray_2.gdshader similarity index 100% rename from ray_2.gdshader rename to Shaders/ray_2.gdshader diff --git a/light_ind.tscn b/light_ind.tscn index 3b31873..6ab1605 100644 --- a/light_ind.tscn +++ b/light_ind.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=11 format=3 uid="uid://c7ft3pxeufffh"] -[ext_resource type="Shader" path="res://opt_btn.gdshader" id="1_sq6hl"] +[ext_resource type="Shader" path="res://Shaders/opt_btn.gdshader" id="1_sq6hl"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0dcn8"] bg_color = Color(0, 0, 0, 1) diff --git a/scripts/constants.gd b/scripts/constants.gd index f6d4d2f..bd33954 100644 --- a/scripts/constants.gd +++ b/scripts/constants.gd @@ -100,9 +100,9 @@ const OUT_x128: Array = [ 'Р', 'К', 'Откл.', - '1',] + '1' + ] const RAY_DICT: Array = [ - ' Контроль', ' -5°', ' 5°', ' 15°', @@ -110,7 +110,7 @@ const RAY_DICT: Array = [ ' 35°', ' 45°', ' Контроль', -] + ] const ATT_DICT: Array = [ ' 0 dB', ' 0.5 dB', @@ -120,20 +120,18 @@ const ATT_DICT: Array = [ ' 8.5 dB', ' 10 dB', ' 10.5 dB', -] - + ] enum BASE_PORTS { UG = 0x100, EMS_G = 0x120, UKP_1 = 0x130, UKP_2 = 0x140, } - enum MODE { PRD_K, PRD_B, PRD_H, -} + } enum Frame { WORK, ## В работе CONSTANT, ## Постоянный сигнал @@ -152,7 +150,7 @@ enum DataIndices { TEMPERATURE_UKP_1 = 47, POWER_UKP_2 = 63, TEMPERATURE_UKP_2 = 79, -} + } enum STATE { WAIT, READ_ISA, @@ -160,13 +158,12 @@ enum STATE { DONE, IDLE, SEND, -} - + } enum STATE_VAL { NONE = 0, GOOD = 1, - ERROR = 2 } - + ERROR = 2 + } var EMS_G_PORT_DATA_HOLDER: Array = [] const PORT_FS = 1201 @@ -175,7 +172,7 @@ enum GROUP { BASE = 0x00, GENERATOR = 0x03, RF = 0x06, -} + } enum CMD { START_SESSION = 0x0, diff --git a/table/элемент-в.tscn b/table/элемент-в.tscn index b2ea5f0..2c88d2b 100644 --- a/table/элемент-в.tscn +++ b/table/элемент-в.tscn @@ -3,7 +3,7 @@ [ext_resource type="Texture2D" uid="uid://ce3qpf070wgd2" path="res://состояние-исправности-0.png" id="1_2n7he"] [ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="2_4b43i"] [ext_resource type="Texture2D" uid="uid://byweg7pgt8o4h" path="res://состояние-исправности-1.png" id="2_38t58"] -[ext_resource type="Shader" path="res://opt_btn.gdshader" id="2_ecsml"] +[ext_resource type="Shader" path="res://Shaders/opt_btn.gdshader" id="2_ecsml"] [ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="3_4kmgr"] [ext_resource type="Texture2D" uid="uid://bvikuv0lbvou8" path="res://состояние-исправности-2.png" id="3_i2t3v"] [ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="4_omove"] From 077bdb40f4816149f55eac95974148eb28f2a1b1 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 7 Feb 2025 15:31:16 +0300 Subject: [PATCH 3/9] add command --- PRD_MP550.tscn | 13 +++++++ scripts/FS.gd | 43 +++++++++++++++------ scripts/PRD.gd | 74 +++++++++++++++++++++++++----------- scripts/constants.gd | 4 +- scripts/network.gd | 90 +++++++++++++++++++++++++++----------------- 5 files changed, 157 insertions(+), 67 deletions(-) diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 3c6c464..37c7fd0 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -770,6 +770,7 @@ metadata/_edit_lock_ = true [node name="win_load" type="TextureButton" parent="TabContainer/EMS_G/load_boadr"] material = SubResource("ShaderMaterial_cm644") +layout_mode = 0 offset_left = 730.0 offset_top = 311.0 offset_right = 830.0 @@ -947,6 +948,18 @@ offset_bottom = 827.0 theme = SubResource("Theme_yblys") text = "Сохранить все настройки" +[node name="can_macro" type="Label" parent="."] +offset_left = 226.0 +offset_top = 876.0 +offset_right = 1055.0 +offset_bottom = 916.0 + +[node name="can" type="Label" parent="."] +offset_left = 224.0 +offset_top = 844.0 +offset_right = 959.0 +offset_bottom = 889.0 + [connection signal="pressed" from="Background/side_panel/select_prd" to="." method="_on_prd_select"] [connection signal="pressed" from="Background/side_panel/select_control" to="." method="_on_control_button"] [connection signal="pressed" from="Background/side_panel/select_ems_g" to="." method="_on_emsg_select"] diff --git a/scripts/FS.gd b/scripts/FS.gd index dddf9a2..a8e32c6 100644 --- a/scripts/FS.gd +++ b/scripts/FS.gd @@ -8,14 +8,16 @@ const RETRY_COUNT = 5 ## Количество повторных отпр class FGOS: ## Коды выполняемых команд enum CmdCode { - START_SESSION = 0x0, - READ_CARRIER = 0x1F, - SET_CARRIER = 0x1E, - READ_ATT = 0x1A, - SET_ATT = 0x1B, - READ_GEN_STATUS = 0x05, - SET_GEN_STATUS = 0x06, - BASE_GET_CURRENT_TEMP = 0x36, + START_SESSION = 0x0, ## Команда начала сессии + READ_CARRIER = 0x1F, ## Команда получение несущей частоты + SET_CARRIER = 0x1E, ## Команда установки несущей частоты + READ_ATT = 0x1A, ## Команда чтения аттенюации + SET_ATT = 0x1B, ## Команда установки аттенюации + READ_GEN_STATUS = 0x05, ## Команда получения статуса генератора + SET_GEN_STATUS = 0x06, ## Команда установки статуса генератора + BASE_GET_CURRENT_TEMP = 0x36, ## Команда получения температуры + BASE_CAN_MACRO_WRITE = 0x30, ## Команда для записи последовательности CAN-команд + BASE_CAN_MACRO_READ = 0x33, ## Команда для чтения последовательности CAN-команд } enum GROUP { @@ -164,10 +166,23 @@ class FGOS: var index_size = 0x1C var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size, counter) packet.encode_u16(0x8, 0x10) - packet.encode_float(0x18, attenuation) + packet.encode_float(0x14, attenuation) send_packet_to(packet, client) - + + func set_base_can_macro(installation_can_frequency: int, counter: int, client: StreamPeer): + var index_size = 0x34 + var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_WRITE, index_size, counter) + packet.encode_u16(0x08, 0x28) + packet.encode_u8(0x1C, 0x01) + packet.encode_u8(0x1D, 0x42) + packet.encode_u8(0x1F, 0x04) + packet.encode_u16(0x20, installation_can_frequency) + packet.encode_u16(0x28, 0x2aff) + packet.encode_u8(0x2B, 0x04) + send_packet_to(packet, client) + + func get_carrier(counter: int, client: StreamPeer): var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE, counter) send_packet_to(packet, client) @@ -183,6 +198,12 @@ class FGOS: send_packet_to(packet, client) - func base_get_current_temp(counter: int, client: StreamPeer): + func get_base_current_temp(counter: int, client: StreamPeer): var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE, counter) send_packet_to(packet, client) + + + func get_base_can_macro(counter: int, client: StreamPeer): + var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE, counter) + send_packet_to(packet, client) + diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 67f0e26..5108417 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -83,6 +83,9 @@ func _ready() -> void: node_select_fs_1.set_node_text(0, 4, 'Генератор') node_select_fs_1.set_node_text(0, 5, 'fpga') node_select_fs_1.set_node_text(0, 6, 'СИ 2 от ФС') + node_select_fs_1.set_node_text(0, 7, 'Фильтр CAN') + node_select_fs_1.get_node2(1, 7).placeholder_text = 'в МГц' + node_select_fs_1.get_node2(1, 7).editable = true var 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()) @@ -99,6 +102,9 @@ func _ready() -> void: node_select_fs_2.set_node_text(0, 4, 'Генератор') node_select_fs_2.set_node_text(0, 5, 'fpga') node_select_fs_2.set_node_text(0, 6, 'СИ 3 от ФС') + node_select_fs_2.set_node_text(0, 7, 'Фильтр CAN') + node_select_fs_2.get_node2(1, 7).placeholder_text = 'в МГц' + node_select_fs_2.get_node2(1, 7).editable = true # Выбор прибора для подключения var node_select_device = $TabContainer/PRD/select_dev @@ -144,25 +150,27 @@ func _ready() -> void: 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_2', _on_data_fs_2) - + ## Yau-07b 1 node_select_yau_07b.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret1')) node_select_yau_07b.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um_1')) node_select_yau_07b.get_node2(1, 3).connect('item_selected', Callable(self, '_on_btn_ray_1')) node_select_yau_07b.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_1')) - + ## Yau-07b 2 node_select_yau_07b_2.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret2')) node_select_yau_07b_2.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um_2')) node_select_yau_07b_2.get_node2(1, 3).connect('item_selected', Callable(self, '_on_btn_ray_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')) - + ## FS 1 node_select_fs_1.get_node2(1, 4).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_1')) - node_select_fs_1.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_1')) node_select_fs_1.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_1')) - + node_select_fs_1.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_1')) + node_select_fs_1.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro')) + ## FS 2 node_select_fs_2.get_node2(1, 4).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_2')) - node_select_fs_2.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_2')) node_select_fs_2.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_2')) + node_select_fs_2.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_2')) + node_select_fs_2.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro_2')) func draw_control_panel_prd(pribor) -> void: @@ -286,15 +294,24 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void: $ISA.text = 'ISA: ' + str(len(Constants.EMS_G_PORT_DATA_HOLDER)) if isa_data.has(Constants.BASE_PORTS.UG+6): - $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 3).select(isa_data[0x106] & 0x7) - $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 4).select((isa_data[0x106] & 0x38)>> 3) - $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[0x106] & 0x7)) - $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[0x106] & 0x38)) + $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, 4).select((isa_data[Constants.BASE_PORTS.UG+6] & 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/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+6] & 0x38)) if isa_data.has(Constants.BASE_PORTS.UG+8): - $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 3).select(isa_data[0x108] & 0x7) - $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 4).select((isa_data[0x108] & 0x38)>>3) - $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[0x108] & 0x7)) - $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[0x108] & 0x38)) + $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, 4).select((isa_data[Constants.BASE_PORTS.UG+8] & 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/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x38)) + + if isa_data.has(Constants.BASE_PORTS.EMS_G+2): + print(isa_data[Constants.BASE_PORTS.EMS_G+2]) + if (isa_data[Constants.BASE_PORTS.EMS_G+2]== 48): + if (isa_data[Constants.BASE_PORTS.EMS_G+8]>>14): + print(isa_data) + $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,1).get_child(1).button_pressed = true + else: + $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,1).get_child(1).button_pressed = false func _on_data_fs_1(fs_1_data): @@ -304,22 +321,26 @@ func _on_data_fs_1(fs_1_data): match CMD: Constants.CMD.READ_CARRIER: if GRP == Constants.GROUP.BASE: - node_select_fs_1.set_node_text(2, 2, str(fs_1_data.decode_u64(0xC)) + ' Гц') + node_select_fs_1.set_node_text(2, 2, str(fs_1_data.decode_u64(0xC) / 1_000_000) + ' МГц') Constants.CMD.READ_ATT: if GRP == Constants.GROUP.RF: - node_select_fs_1.set_node_text(2, 3, '-' + str(fs_1_data.decode_float(0x18)) + ' dB') + node_select_fs_1.set_node_text(2, 3, '-' + str(fs_1_data.decode_float(0x14)) + ' dB') Constants.CMD.READ_GEN_STATUS: if GRP == Constants.GROUP.GENERATOR: if fs_1_data.decode_u32(0xC) == 0: node_select_fs_1.set_node_text(2, 4, 'Включен') node_select_fs_1.get_node2(2, 4).modulate = Color.AQUAMARINE else: - node_select_fs_1.set_node_text(2, 4, 'Выключен') + node_select_fs_1.set_node_text(2, 4, 'Отключен') node_select_fs_1.get_node2(2, 4).modulate = Color.CRIMSON Constants.CMD.BASE_GET_CURRENT_TEMP: if GRP == Constants.GROUP.BASE: node_select_fs_1.set_node_text(1, 5, '%.2f' % fs_1_data.decode_float(0xC) + ' °C') - #$read.text = str(fs_1_data.hex_encode()) + Constants.CMD.BASE_CAN_MACRO_READ: + if GRP == Constants.GROUP.BASE: + node_select_fs_1.set_node_text(2, 7, str(fs_1_data.decode_u16(0x20)) + ' МГц') + $can.text = str(fs_1_data) + $can_macro.text = str(fs_1_data.decode_u32(0x04)) func _on_data_fs_2(fs_2_data): @@ -329,7 +350,7 @@ func _on_data_fs_2(fs_2_data): match CMD: Constants.CMD.READ_CARRIER: if GRP == Constants.GROUP.BASE: - node_select_fs_2.set_node_text(2, 2, str(fs_2_data.decode_u64(0xC)) + ' Гц') + node_select_fs_2.set_node_text(2, 2, str(fs_2_data.decode_u64(0xC) / 1_000_000) + ' МГц') Constants.CMD.READ_ATT: if GRP == Constants.GROUP.RF: node_select_fs_2.set_node_text(2, 3, '-' + str(fs_2_data.decode_float(0x18)) + ' dB') @@ -339,12 +360,15 @@ func _on_data_fs_2(fs_2_data): node_select_fs_2.set_node_text(2, 4, 'Включен') node_select_fs_2.get_node2(2, 4).modulate = Color.AQUAMARINE else: - node_select_fs_2.set_node_text(2, 4, 'Выключен') + node_select_fs_2.set_node_text(2, 4, 'Отключен') node_select_fs_2.get_node2(2, 4).modulate = Color.CRIMSON Constants.CMD.BASE_GET_CURRENT_TEMP: if GRP == Constants.GROUP.BASE: node_select_fs_2.set_node_text(1, 5, '%.2f' % fs_2_data.decode_float(0xC) + ' °C') - + Constants.CMD.BASE_CAN_MACRO_READ: + if GRP == Constants.GROUP.BASE: + node_select_fs_2.set_node_text(2, 7, str(fs_2_data.decode_u16(0x20)) + ' МГц') + ## Рисует таблицу func draw_tabl(tbl: Node, row: Array, count_row: int): @@ -635,6 +659,10 @@ func _on_set_att_1(att: String): Network.set_fs_attenuation(float(att)) +func _on_set_base_can_macro(can_freq: String): + Network.set_can_macro(int(can_freq)) + + ## 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) @@ -656,3 +684,7 @@ func _on_set_ferq_2(freq: String): func _on_set_att_2(att: String): Network.set_fs_attenuation_2(float(att)) + + +func _on_set_base_can_macro_2(can_freq: String): + Network.set_can_macro_2(int(can_freq)) diff --git a/scripts/constants.gd b/scripts/constants.gd index bd33954..9913ca5 100644 --- a/scripts/constants.gd +++ b/scripts/constants.gd @@ -45,7 +45,8 @@ const ROWS_FS: Array = [ [TableNode, TableNode, TableNode], [TableNode, Switch, TableNode], [TableNode, TableNode, TableNode], - [TableNode, SocketStatus, TableNode]] + [TableNode, SocketStatus, TableNode], + [TableNode, TableNode, TableNode],] const ADDRESSES: Array = [ ['ПРД-Н1', '10.1.1.11', 50011, MODE.PRD_H, '10.1.2.18', '10.1.2.19', ''], ['ПРД-Н2', '10.1.1.21', 50021, MODE.PRD_H, '10.1.2.34', '10.1.2.35', ''], @@ -183,4 +184,5 @@ enum CMD { READ_GEN_STATUS = 0x05, SET_GEN_STATUS = 0x06, BASE_GET_CURRENT_TEMP = 0x36, + BASE_CAN_MACRO_READ = 0x33, } diff --git a/scripts/network.gd b/scripts/network.gd index 3f84ba0..37f7c8c 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -2,8 +2,7 @@ extends Node # ЯУ-07 Блок var unit = Yau07.YaU07.new('ЯУ-07Б') -var unit_fs_1 = Fs.FGOS.new() -#var unit_fs_2 = Fs.FGOS.new() +var unit_fs = Fs.FGOS.new() var soc_unicast: Socket var soc_brodcast: Socket var ip_address_yau: String = Constants.ADDRESSES[0][1] @@ -116,7 +115,7 @@ func _ready() -> void: unit.connect('command_fail', Callable(self, 'on_command_fail')) connect_fs_1() connect_fs_2() - read_port_isa([0x106, 0x108]) + read_port_isa([Constants.BASE_PORTS.UG+6, Constants.BASE_PORTS.UG+8, Constants.BASE_PORTS.EMS_G+8]) func _process(delta: float) -> void: @@ -203,13 +202,13 @@ func state_machine_fs(client_fs): if (state_fs == Constants.STATE.IDLE) or (state_fs == Constants.STATE.DONE): if command_stack: var pack: Array = command_stack.pop_front() - unit_fs_1.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 if client_fs == client_fs_2: if (state_fs_2 == Constants.STATE.IDLE) or (state_fs_2 == Constants.STATE.DONE): if command_stack_2: var pack: Array = command_stack_2.pop_front() - unit_fs_1.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 @@ -236,42 +235,53 @@ func disconnect_fs(client_for_leave): func start_work_fs(): counter_fs_1 = 0 - unit_fs_1.start_session(counter_fs_1, client_fs_1) + unit_fs.start_session(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.get_gen_state(counter_fs_1, client_fs_1) + unit_fs.get_gen_state(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.get_att_batch(counter_fs_1, client_fs_1) + unit_fs.get_att_batch(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.get_carrier(counter_fs_1, client_fs_1) + unit_fs.get_carrier(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.base_get_current_temp(counter_fs_1, client_fs_1) + unit_fs.get_base_current_temp(counter_fs_1, client_fs_1) + counter_fs_1 += 1 + unit_fs.get_base_can_macro(counter_fs_1, client_fs_1) counter_fs_1 += 1 func get_fs_gen_status(state_gen): - unit_fs_1.set_gen_state(state_gen, counter_fs_1, client_fs_1) + unit_fs.set_gen_state(state_gen, counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.get_gen_state(counter_fs_1, client_fs_1) + unit_fs.get_gen_state(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.base_get_current_temp(counter_fs_1, client_fs_1) + unit_fs.get_base_current_temp(counter_fs_1, client_fs_1) counter_fs_1 += 1 func set_fs_ferq_carrier(freq: int): - unit_fs_1.set_carrier(freq, counter_fs_1, client_fs_1) + unit_fs.set_carrier(freq, counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.base_get_current_temp(counter_fs_1, client_fs_1) + unit_fs.get_base_current_temp(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.get_carrier(counter_fs_1, client_fs_1) + unit_fs.get_carrier(counter_fs_1, client_fs_1) counter_fs_1 += 1 func set_fs_attenuation(attenuation: float): - unit_fs_1.set_att_batch(attenuation, counter_fs_1, client_fs_1) + unit_fs.set_att_batch(attenuation, counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.get_att_batch(counter_fs_1, client_fs_1) + unit_fs.get_att_batch(counter_fs_1, client_fs_1) counter_fs_1 += 1 - unit_fs_1.base_get_current_temp(counter_fs_1, client_fs_1) + unit_fs.get_base_current_temp(counter_fs_1, client_fs_1) + counter_fs_1 += 1 + + +func set_can_macro(can_frequency: int): + unit_fs.set_base_can_macro(can_frequency, counter_fs_1, client_fs_1) + counter_fs_1 += 1 + unit_fs.get_base_current_temp(counter_fs_1, client_fs_1) + counter_fs_1 += 1 + unit_fs.get_base_can_macro(counter_fs_1, client_fs_1) counter_fs_1 += 1 @@ -299,39 +309,51 @@ func disconnect_fs_2(client_for_leave): func start_work_fs_2(): counter_fs_2 = 0 - unit_fs_1.start_session(counter_fs_2, client_fs_2) + unit_fs.start_session(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.get_gen_state(counter_fs_2, client_fs_2) + unit_fs.get_gen_state(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.get_att_batch(counter_fs_2, client_fs_2) + unit_fs.get_att_batch(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.get_carrier(counter_fs_2, client_fs_2) + unit_fs.get_carrier(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.base_get_current_temp(counter_fs_2, client_fs_2) + unit_fs.get_base_current_temp(counter_fs_2, client_fs_2) counter_fs_2 += 1 -# + unit_fs.get_base_can_macro(counter_fs_2, client_fs_2) + counter_fs_2 += 1 + + func get_fs_gen_status_2(state_gen): - unit_fs_1.set_gen_state(state_gen, counter_fs_2, client_fs_2) + unit_fs.set_gen_state(state_gen, counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.get_gen_state(counter_fs_2, client_fs_2) + unit_fs.get_gen_state(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.base_get_current_temp(counter_fs_2, client_fs_2) + unit_fs.get_base_current_temp(counter_fs_2, client_fs_2) counter_fs_2 += 1 func set_fs_ferq_carrier_2(freq: int): - unit_fs_1.set_carrier(freq, counter_fs_2, client_fs_2) + unit_fs.set_carrier(freq, counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.base_get_current_temp(counter_fs_2, client_fs_2) + unit_fs.get_base_current_temp(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.get_carrier(counter_fs_2, client_fs_2) + unit_fs.get_carrier(counter_fs_2, client_fs_2) counter_fs_2 += 1 func set_fs_attenuation_2(attenuation: float): - unit_fs_1.set_att_batch(attenuation, counter_fs_2, client_fs_2) + unit_fs.set_att_batch(attenuation, counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.get_att_batch(counter_fs_2, client_fs_2) + unit_fs.get_att_batch(counter_fs_2, client_fs_2) counter_fs_2 += 1 - unit_fs_1.base_get_current_temp(counter_fs_2, client_fs_2) + unit_fs.get_base_current_temp(counter_fs_2, client_fs_2) + counter_fs_2 += 1 + + +func set_can_macro_2(can_frequency: int): + unit_fs.set_base_can_macro(can_frequency, counter_fs_2, client_fs_2) + counter_fs_2 += 1 + unit_fs.get_base_current_temp(counter_fs_2, client_fs_2) + counter_fs_2 += 1 + unit_fs.get_base_can_macro(counter_fs_2, client_fs_2) counter_fs_2 += 1 From 429dbdf9edfc27b4d344f337a6b5eb020ff1fd2c Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 7 Feb 2025 15:40:58 +0300 Subject: [PATCH 4/9] =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/network.gd | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/network.gd b/scripts/network.gd index 37f7c8c..4e9df60 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -301,7 +301,7 @@ func connect_fs_2(): # Разорвать соединение с ФС -func disconnect_fs_2(client_for_leave): +func disconnect_fs_2(client_for_leave: StreamPeer): client_for_leave.disconnect_from_host() state_fs_2 = Constants.STATE.IDLE command_stack_2 = [] @@ -323,7 +323,7 @@ func start_work_fs_2(): counter_fs_2 += 1 -func get_fs_gen_status_2(state_gen): +func get_fs_gen_status_2(state_gen: bool): unit_fs.set_gen_state(state_gen, counter_fs_2, client_fs_2) counter_fs_2 += 1 unit_fs.get_gen_state(counter_fs_2, client_fs_2) @@ -357,3 +357,8 @@ func set_can_macro_2(can_frequency: int): counter_fs_2 += 1 unit_fs.get_base_can_macro(counter_fs_2, client_fs_2) counter_fs_2 += 1 + + +func can_macro_exec_2(state_can: bool): + unit_fs.set_state_base_can_macro(state_can, counter_fs_2, client_fs_2) + counter_fs_2 += 1 From 6e5f9734058913ccaa6c21f88ae037835c1674a5 Mon Sep 17 00:00:00 2001 From: danil_tim Date: Tue, 11 Feb 2025 13:53:09 +0300 Subject: [PATCH 5/9] =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD_MP550.tscn | 7 +- scripts/PRD.gd | 153 +++++++----------------------- scripts/control_panel.gd | 199 +++++++++++++++++++++++++++++++++------ scripts/network.gd | 20 ++-- scripts/yau07.gd | 3 +- 5 files changed, 219 insertions(+), 163 deletions(-) diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 3860e19..35d64a0 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -264,11 +264,12 @@ theme_override_styles/tab_selected = SubResource("StyleBoxTexture_k08q3") theme_override_styles/tab_hovered = SubResource("StyleBoxTexture_dklg6") theme_override_styles/tab_unselected = SubResource("StyleBoxTexture_17le6") tab_alignment = 2 -current_tab = 0 +current_tab = 2 tab_focus_mode = 0 metadata/_edit_lock_ = true [node name="PRD" type="Panel" parent="TabContainer"] +visible = false layout_mode = 2 theme_override_styles/panel = SubResource("StyleBoxTexture_7u7p7") metadata/_tab_index = 0 @@ -420,13 +421,14 @@ metadata/_tab_index = 1 metadata/_edit_lock_ = true [node name="lbl_control" type="Label" parent="TabContainer/ControlPanel"] +modulate = Color(1, 0, 0, 1) layout_mode = 0 offset_left = 45.0 offset_top = -37.0 offset_right = 665.0 offset_bottom = -6.0 theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора ПРД-Н" +text = "Прибор не исправен" horizontal_alignment = 1 vertical_alignment = 1 @@ -714,7 +716,6 @@ offset_right = 1616.0 offset_bottom = 847.0 [node name="EMS_G" type="Panel" parent="TabContainer"] -visible = false layout_mode = 2 theme_override_styles/panel = SubResource("StyleBoxTexture_ooo4i") script = ExtResource("9_g1wia") diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 7e7fb35..4166f45 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -34,14 +34,14 @@ func _ready() -> void: node_select1.set_columns_min_size([120, 120]) node_select1.set_node_text(0, 0, 'Мощность') node_select1.set_node_text(1, 0, 'Температура') - + # Таблица УКП_2 node_select2 = $TabContainer/PRD/body_grid/litera_3_5_7/table_ukp_2 draw_tabl(node_select2, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size()) node_select2.set_columns_min_size([120, 120]) node_select2.set_node_text(0, 0, 'Мощность') node_select2.set_node_text(1, 0, 'Температура') - + # Таблица ЯУ-07б var node_select_yau_07b = $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control draw_tabl(node_select_yau_07b, Constants.ROWS_YAU_07B_1, Constants.ROWS_YAU_07B_1.size()) @@ -53,7 +53,7 @@ func _ready() -> void: node_select_yau_07b.set_node_text(0, 3, 'Положение луча') node_select_yau_07b.set_node_text(0, 4, 'Аттенюатор') node_select_yau_07b.set_node_text(0, 6, 'СИ 2 в УФ') - + var node_select_yau_07b_2 = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control draw_tabl(node_select_yau_07b_2, Constants.ROWS_YAU_07B_2, Constants.ROWS_YAU_07B_2.size()) node_select_yau_07b_2.set_columns_min_size([160, 120]) @@ -65,7 +65,7 @@ func _ready() -> void: node_select_yau_07b_2.set_node_text(0, 4, 'Аттенюатор') node_select_yau_07b_2.set_node_text(0, 5, 'ФГОЗ 3') node_select_yau_07b_2.set_node_text(0, 6, 'СИ 3 в УФ') - + #Таблица ФС var 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()) @@ -82,7 +82,7 @@ func _ready() -> void: node_select_fs_1.set_node_text(0, 4, 'Генератор') node_select_fs_1.set_node_text(0, 5, 'fpga') node_select_fs_1.set_node_text(0, 6, 'СИ 2 от ФС') - + var 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()) node_select_fs_2.set_columns_min_size([120, 120, 150]) @@ -98,12 +98,13 @@ func _ready() -> void: node_select_fs_2.set_node_text(0, 4, 'Генератор') node_select_fs_2.set_node_text(0, 5, 'fpga') node_select_fs_2.set_node_text(0, 6, 'СИ 3 от ФС') - + # Выбор прибора для подключения var node_select_device = $TabContainer/PRD/select_dev draw_tabl(node_select_device, Constants.SELECT_DEVICE, Constants.SELECT_DEVICE.size()) var get_select_device = node_select_device.get_node2(1, 0) - + get_select_device.connect('item_selected', Callable(self, 'on_device_selected')) + # Заполнение адресов for i_addr in Constants.ADDRESSES.size(): get_select_device.add_item(Constants.ADDRESSES[i_addr][0]) @@ -111,28 +112,27 @@ func _ready() -> void: get_select_device.connect('item_selected', Callable(self, 'on_btn_select')) node_select_device.get_node2(0,0).text = 'ПРИБОР' node_select_device.set_columns_min_size([100, 100]) - + # Получаем имя выбранного прибора if Constants.ADDRESSES.size() > 0: get_select_device.select(0) status_pribor = get_select_device.get_item_text(0).strip_edges().substr(4) - + ## Заполненение списка модуляции УМ for key in Constants.OUT_x128: node_select_yau_07b.get_node2(1, 2).add_item(key) node_select_yau_07b_2.get_node2(1, 2).add_item(key) - + ## Заполненение списка направления луча for key in Constants.RAY_DICT: node_select_yau_07b.get_node2(1, 3).add_item(key) node_select_yau_07b_2.get_node2(1, 3).add_item(key) - + ## Заполненение списка аттенюатора for key in Constants.ATT_DICT: node_select_yau_07b.get_node2(1, 4).add_item(key) node_select_yau_07b_2.get_node2(1, 4).add_item(key) - - draw_control_panel_prd(Constants.ADDRESSES[0][3]) + Network.connect('yau_status_line', Callable(self, '_on_yau_status')) Network.connect('yau_receive', Callable(self, '_on_data_received')) @@ -143,18 +143,18 @@ func _ready() -> void: 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_2', _on_data_fs_2) - + node_select_yau_07b.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret1')) node_select_yau_07b.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um_1')) node_select_yau_07b.get_node2(1, 3).connect('item_selected', Callable(self, '_on_btn_ray_1')) node_select_yau_07b.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_1')) - + node_select_yau_07b_2.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret2')) node_select_yau_07b_2.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um_2')) node_select_yau_07b_2.get_node2(1, 3).connect('item_selected', Callable(self, '_on_btn_ray_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_fs_1.get_node2(1, 4).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_1')) node_select_fs_1.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_1')) node_select_fs_1.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_1')) @@ -164,97 +164,9 @@ func _ready() -> void: node_select_fs_2.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_2')) -func draw_control_panel_prd(pribor) -> void: - if pribor == Constants.MODE.PRD_H: - # Кассета У5 - $TabContainer/ControlPanel/soc_y5/IP5_25.rname = 'А24' - $TabContainer/ControlPanel/soc_y5/ay07.rname = 'А30' - $TabContainer/ControlPanel/soc_y5/ems_g.rname = 'А26' - $TabContainer/ControlPanel/soc_y5/ug.rname = 'А27' - $TabContainer/ControlPanel/soc_y5/ukp_1.rname = 'А28' - $TabContainer/ControlPanel/soc_y5/ukp_2.rname = 'А29' - # Кассета ФС - $TabContainer/ControlPanel/Kasseta_FS/Kasseta.text = 'Кассета ФС-НД' - $TabContainer/ControlPanel/Kasseta_FS/Block_FS_PRD_K.visible = false - $TabContainer/ControlPanel/Kasseta_FS/FS_PRD_K.visible = false - $TabContainer/ControlPanel/Kasseta_FS/ref_A1.rname = 'А1' - $TabContainer/ControlPanel/Kasseta_FS/ref_A1.fname = 'Модуль ФС' - $TabContainer/ControlPanel/Kasseta_FS/ref_A3.rname = 'А3' - $TabContainer/ControlPanel/Kasseta_FS/ref_A3.fname = 'БЛОК ФС-2' - $TabContainer/ControlPanel/Kasseta_FS/ref_A2.rname = 'А2' - $TabContainer/ControlPanel/Kasseta_FS/ref_A2.fname = 'Модуль ФС' - $TabContainer/ControlPanel/Kasseta_FS/ref_A4.rname = 'А4' - $TabContainer/ControlPanel/Kasseta_FS/ref_A4.fname = 'БЛОК ФС-3' - # Кассета П-1 - $TabContainer/ControlPanel/soc_P1/IP12_50.rname = 'А21' - $TabContainer/ControlPanel/soc_P1/IP9_50_1.rname = 'А20' - $TabContainer/ControlPanel/soc_P1/IP9_50_2.rname = 'А19' - $TabContainer/ControlPanel/soc_P1/MAA_1.rname = 'А22' - $TabContainer/ControlPanel/soc_P1/MAA_2.rname = 'А23' - # Кассета П-2 - $TabContainer/ControlPanel/soc_P2.visible = false - - elif pribor == Constants.MODE.PRD_B: - # Кассета У5 - $TabContainer/ControlPanel/soc_y5/IP5_25.rname = 'А24' - $TabContainer/ControlPanel/soc_y5/ay07.rname = 'А30' - $TabContainer/ControlPanel/soc_y5/ems_g.rname = 'А26' - $TabContainer/ControlPanel/soc_y5/ug.rname = 'А27' - $TabContainer/ControlPanel/soc_y5/ukp_1.rname = 'А28' - $TabContainer/ControlPanel/soc_y5/ukp_2.rname = 'А29' - # Кассета ФС - $TabContainer/ControlPanel/Kasseta_FS/Kasseta.text = 'Кассета ФС-ВД' - $TabContainer/ControlPanel/Kasseta_FS/Block_FS_PRD_K.visible = false - $TabContainer/ControlPanel/Kasseta_FS/FS_PRD_K.visible = false - $TabContainer/ControlPanel/Kasseta_FS/ref_A1.rname = 'А1' - $TabContainer/ControlPanel/Kasseta_FS/ref_A1.fname = 'Модуль ФС' - $TabContainer/ControlPanel/Kasseta_FS/ref_A3.rname = 'А3' - $TabContainer/ControlPanel/Kasseta_FS/ref_A3.fname = 'БЛОК ФС-4' - $TabContainer/ControlPanel/Kasseta_FS/ref_A2.rname = 'А2' - $TabContainer/ControlPanel/Kasseta_FS/ref_A2.fname = 'Модуль ФС' - $TabContainer/ControlPanel/Kasseta_FS/ref_A4.rname = 'А4' - $TabContainer/ControlPanel/Kasseta_FS/ref_A4.fname = 'БЛОК ФС-5' - # Кассета П-1 - $TabContainer/ControlPanel/soc_P1/IP12_50.rname = 'А21' - $TabContainer/ControlPanel/soc_P1/IP9_50_1.rname = 'А20' - $TabContainer/ControlPanel/soc_P1/IP9_50_2.rname = 'А19' - $TabContainer/ControlPanel/soc_P1/MAA_1.rname = 'А22' - $TabContainer/ControlPanel/soc_P1/MAA_2.rname = 'А23' - # Кассета П-2 - $TabContainer/ControlPanel/soc_P2.visible = false - - elif pribor == Constants.MODE.PRD_K: - # Кассета У5 - $TabContainer/ControlPanel/soc_y5/IP5_25.rname = 'А31' - $TabContainer/ControlPanel/soc_y5/ay07.rname = 'А37' - $TabContainer/ControlPanel/soc_y5/ems_g.rname = 'А33' - $TabContainer/ControlPanel/soc_y5/ug.rname = 'А34' - $TabContainer/ControlPanel/soc_y5/ukp_1.rname = 'А35' - $TabContainer/ControlPanel/soc_y5/ukp_2.rname = 'А36' - # Кассета ФС - $TabContainer/ControlPanel/Kasseta_FS/Kasseta.text = 'Кассета ФС-КД' - $TabContainer/ControlPanel/Kasseta_FS/Block_FS_PRD_K.visible = true - $TabContainer/ControlPanel/Kasseta_FS/FS_PRD_K.visible = true - $TabContainer/ControlPanel/Kasseta_FS/ref_A1.rname = 'А3' - $TabContainer/ControlPanel/Kasseta_FS/ref_A1.fname = 'Модуль ФС' - $TabContainer/ControlPanel/Kasseta_FS/ref_A3.rname = 'А6' - $TabContainer/ControlPanel/Kasseta_FS/ref_A3.fname = 'БЛОК ФС-6' - $TabContainer/ControlPanel/Kasseta_FS/ref_A2.rname = 'А2' - $TabContainer/ControlPanel/Kasseta_FS/ref_A2.fname = 'Модуль ФС' - $TabContainer/ControlPanel/Kasseta_FS/ref_A4.rname = 'А5' - $TabContainer/ControlPanel/Kasseta_FS/ref_A4.fname = 'БЛОК ФС-7' - # Кассета П-1 - $TabContainer/ControlPanel/soc_P1/IP12_50.rname = 'А23' - $TabContainer/ControlPanel/soc_P1/IP12_50.fname = 'ИП9-50' - $TabContainer/ControlPanel/soc_P1/IP9_50_1.rname = 'А24' - $TabContainer/ControlPanel/soc_P1/IP9_50_1.fname = 'ИП9-50' - $TabContainer/ControlPanel/soc_P1/IP9_50_2.rname = 'А26' - $TabContainer/ControlPanel/soc_P1/IP9_50_2.fname = 'ИП12-50' - - $TabContainer/ControlPanel/soc_P1/MAA_1.rname = 'А27' - $TabContainer/ControlPanel/soc_P1/MAA_2.rname = 'А28' - # Кассета П-2 - $TabContainer/ControlPanel/soc_P2.visible = true +func on_device_selected(selected_index: int) -> void: + var get_select_device = $TabContainer/PRD/select_dev.get_node2(1, 0) + status_pribor = get_select_device.get_item_text(selected_index).strip_edges().substr(4) ## From Network status about yau-07 @@ -267,7 +179,7 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void: var isa_data: Dictionary = {} for key in unit_isa_ports.keys(): isa_data[key] = unit_isa_ports[key] - + if isa_data.has(Constants.BASE_PORTS.EMS_G+2): var tmp = isa_data[Constants.BASE_PORTS.EMS_G+2] isa_data.erase(Constants.BASE_PORTS.EMS_G+2) @@ -283,7 +195,7 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void: if len(Constants.EMS_G_PORT_DATA_HOLDER) == 32: emit_signal('read_ems_g_finish') $ISA.text = 'ISA: ' + str(len(Constants.EMS_G_PORT_DATA_HOLDER)) - + if isa_data.has(Constants.BASE_PORTS.UG+6): $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 3).select(isa_data[0x106] & 0x7) $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 4).select((isa_data[0x106] & 0x38)>> 3) @@ -364,23 +276,23 @@ func _on_data_received(data_from_yau_07): var _DKM: int = data_from_yau_07.decode_u16(Constants.DataIndices.DKM) # ДКМ от УГ #node_select1.set_node_text(2, 0, '%d' % dry_contact) #node_select1.set_node_text(3, 0, '%d' % DKM) - - + + ## УКП for i in range(6): ## Мощность от УКП_1 var power_ukp_1 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * i) node_select1.set_node_text(0, i+1, '%d' % power_ukp_1) - + for i in range(6): ## Температура от УКП_1 var temperature_ukp_1 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * i) var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * Constants.TEMP node_select1.set_node_text(1, i+1, '%d °С' % TMP) - + for i_pow in range(6): ## Мощность от УКП_2 if len(data_from_yau_07) > Constants.DataIndices.POWER_UKP_2 + 2 * i_pow: var power_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_2 + 2 * i_pow) node_select2.set_node_text(0, i_pow+1, '%d' % power_ukp_2) - + for row in range(6): ## Температура от УКП_2 if len(data_from_yau_07) > Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * row: var temperature_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * row) @@ -495,7 +407,7 @@ func _on_load_config(): func set_tab_and_buttons(tab_index: int, button_name: String) -> void: $TabContainer.current_tab = tab_index var side_panel = $Background/side_panel - + for button in side_panel.get_children(): if button is Button: button.button_pressed = (button.name == button_name) @@ -506,8 +418,7 @@ func on_btn_select(intem_from_sector: int) -> void: var get_select_device = node_select_device.get_node2(1, 0) var meta = get_select_device.get_item_metadata(intem_from_sector) Network.on_command_change_device(meta) - flag_mode = meta[2] - draw_control_panel_prd(flag_mode) + Constants.CURRENT_MODE = meta[2] _on_start_fs_1() _on_start_fs_2() @@ -534,7 +445,7 @@ func _on_modul_um_1(item_from_ray_1: int): 2: 0x4000, 3: 0x8000 } - + var modul_um = modul_um_values.get(item_from_ray_1, 0) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um) @@ -551,7 +462,7 @@ func _on_modul_um_2(item_from_ray_1: int): Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um) -## Включение/отключение сигнала ФГОЗ +## Включение/отключение сигнала ФГОЗ func _on_fgos_2(toggled_on: bool): var meta = 56 Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta) @@ -567,8 +478,8 @@ func _on_btn_ray_1(item_from_ray_1: int) -> void: Network.read_port_isa([Constants.BASE_PORTS.UG+6]) else: print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0x6)) - - + + ## Регулировка положением луча 2 func _on_btn_ray_2(item_from_ray_2: int) -> void: if isa_from_yau07b.has(Constants.BASE_PORTS.UG+8): diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd index 36e72bb..614d6bd 100644 --- a/scripts/control_panel.gd +++ b/scripts/control_panel.gd @@ -1,37 +1,182 @@ extends Panel -var unit_yau07 = Yau07.YaU07.new('ЯУ07') - +var timer = Timer.new() +var node_cell_ind: Array +var count_cell: int +var past_pribor: int func _ready() -> void: - Network.connect('yau_receive', Callable(self, '_on_data_received')) - Network.connect('yau_status_line', Callable(self, '_control_pribor')) + self.add_child(timer) + timer.connect('timeout', Callable(self, '_on_timer').bind(Network.unit)) + timer.start(1) - '''sockets_ind = [ - $soc_y5/ems_g/light_ind, - $soc_y5/ug/light_ind, - $soc_y5/ukp_1/light_ind, - $soc_y5/ukp_2/light_ind] + node_cell_ind = [ + $soc_y5/ay07, + $soc_y5/ems_g, + $soc_y5/ug, + $soc_y5/ukp_1, + $soc_y5/ukp_2, - node_power_ind = [ - $soc_P1/MAA_1/light_ind, - $soc_P1/MAA_2/light_ind, - $soc_P1/IP9_50_2/light_ind, - $soc_P1/IP9_50_1/light_ind, - $soc_P1/IP12_50/light_ind, - $soc_P2/IP9_50/light_ind, - $soc_P2/IP12_50/light_ind, - $soc_y5/IP5_25/light_ind]''' + $soc_P1/MAA_1, + $soc_P1/MAA_2, + $soc_P1/IP9_50_1, + $soc_P1/IP9_50_2, + $soc_P1/IP12_50, -func on_timer(unit): - print(unit) + $soc_P2/IP9_50, + $soc_P2/IP12_50, -func _on_data_received(data_from_yau_07): - var _status_board = data_from_yau_07.decode_u8(Constants.DataIndices.STATUS_BOARD) - var _dry_contact: int = data_from_yau_07.decode_u16(Constants.DataIndices.DRY_CONTACT) # Контроль сухих контактов (УГ) + $soc_y5/IP5_25] + count_cell = len(node_cell_ind) -## From Network status about yau-07 -func _control_pribor(_yau_status:bool) -> void: - #$device.text = str(Constants.CURRENT_MODE) - $soc_y5/ay07.state = Constants.STATE_VAL.GOOD +func _on_timer(pribor_prd): + if (past_pribor != Constants.CURRENT_MODE): + _draw_control_panel_prd(Constants.CURRENT_MODE) + if (pribor_prd.online): + $soc_y5/ay07.state = Constants.STATE_VAL.GOOD + _status_cell(pribor_prd.status) + else: + $soc_y5/ay07.state = Constants.STATE_VAL.ERROR + for i in range(1,count_cell): + node_cell_ind[i].state = Constants.STATE_VAL.NONE + _status_prd() + past_pribor = Constants.CURRENT_MODE + + +func _status_cell(status): + var status_board: int = status.decode_u8(Constants.DataIndices.STATUS_BOARD) + var dry_contact: int = status.decode_u8(Constants.DataIndices.DRY_CONTACT+1) + + # status_board + for i in range(1, count_cell-8): + if ((status_board >> (i-1)) & 0x1) == 1: + node_cell_ind[i].state = Constants.STATE_VAL.GOOD + else: + node_cell_ind[i].state = Constants.STATE_VAL.ERROR + + #dry_contact + if (node_cell_ind[2].state == Constants.STATE_VAL.GOOD): + for i in range(5, count_cell): + if ((dry_contact >> (i-5)) & 0x1) == 0: + node_cell_ind[i].state = Constants.STATE_VAL.GOOD + else: + node_cell_ind[i].state = Constants.STATE_VAL.ERROR + else: + for i in range(5, count_cell): + node_cell_ind[i].state = Constants.STATE_VAL.NONE + +func _status_prd(): + var status: int + for i in range(count_cell-3): + status += 1 if (node_cell_ind[i].state == Constants.STATE_VAL.GOOD) else 0 + status += 1 if (node_cell_ind[count_cell-1].state == Constants.STATE_VAL.GOOD) else 0 + + if (Constants.CURRENT_MODE == Constants.MODE.PRD_K): + status += 1 if (node_cell_ind[count_cell-3].state == Constants.STATE_VAL.GOOD) else 0 + status += 1 if (node_cell_ind[count_cell-2].state == Constants.STATE_VAL.GOOD) else 0 + if (status == count_cell): + $lbl_control.text = 'Прибор исправен' + $lbl_control.modulate = Color(0,1,0,1) + else: + $lbl_control.text = 'Прибор не исправен' + $lbl_control.modulate = Color(1,0,0,1) + else: + if (status == count_cell-2): + $lbl_control.text = 'Прибор исправен' + $lbl_control.modulate = Color(0,1,0,1) + else: + $lbl_control.text = 'Прибор не исправен' + $lbl_control.modulate = Color(1,0,0,1) + +func _draw_control_panel_prd(pribor): + if pribor == Constants.MODE.PRD_H: + # Кассета У5 + $soc_y5/IP5_25.rname = 'А24' + $soc_y5/ay07.rname = 'А30' + $soc_y5/ems_g.rname = 'А26' + $soc_y5/ug.rname = 'А27' + $soc_y5/ukp_1.rname = 'А28' + $soc_y5/ukp_2.rname = 'А29' + # Кассета ФС + $Kasseta_FS/Kasseta.text = 'Кассета ФС-НД' + $Kasseta_FS/Block_FS_PRD_K.visible = false + $Kasseta_FS/FS_PRD_K.visible = false + $Kasseta_FS/ref_A1.rname = 'А1' + $Kasseta_FS/ref_A1.fname = 'Модуль ФС' + $Kasseta_FS/ref_A3.rname = 'А3' + $Kasseta_FS/ref_A3.fname = 'БЛОК ФС-2' + $Kasseta_FS/ref_A2.rname = 'А2' + $Kasseta_FS/ref_A2.fname = 'Модуль ФС' + $Kasseta_FS/ref_A4.rname = 'А4' + $Kasseta_FS/ref_A4.fname = 'БЛОК ФС-3' + # Кассета П-1 + $soc_P1/IP12_50.rname = 'А21' + $soc_P1/IP9_50_1.rname = 'А20' + $soc_P1/IP9_50_2.rname = 'А19' + $soc_P1/MAA_1.rname = 'А22' + $soc_P1/MAA_2.rname = 'А23' + # Кассета П-2 + $soc_P2.visible = false + + elif pribor == Constants.MODE.PRD_B: + # Кассета У5 + $soc_y5/IP5_25.rname = 'А24' + $soc_y5/ay07.rname = 'А30' + $soc_y5/ems_g.rname = 'А26' + $soc_y5/ug.rname = 'А27' + $soc_y5/ukp_1.rname = 'А28' + $soc_y5/ukp_2.rname = 'А29' + # Кассета ФС + $Kasseta_FS/Kasseta.text = 'Кассета ФС-ВД' + $Kasseta_FS/Block_FS_PRD_K.visible = false + $Kasseta_FS/FS_PRD_K.visible = false + $Kasseta_FS/ref_A1.rname = 'А1' + $Kasseta_FS/ref_A1.fname = 'Модуль ФС' + $Kasseta_FS/ref_A3.rname = 'А3' + $Kasseta_FS/ref_A3.fname = 'БЛОК ФС-4' + $Kasseta_FS/ref_A2.rname = 'А2' + $Kasseta_FS/ref_A2.fname = 'Модуль ФС' + $Kasseta_FS/ref_A4.rname = 'А4' + $Kasseta_FS/ref_A4.fname = 'БЛОК ФС-5' + # Кассета П-1 + $soc_P1/IP12_50.rname = 'А21' + $soc_P1/IP9_50_1.rname = 'А20' + $soc_P1/IP9_50_2.rname = 'А19' + $soc_P1/MAA_1.rname = 'А22' + $soc_P1/MAA_2.rname = 'А23' + # Кассета П-2 + $soc_P2.visible = false + + elif pribor == Constants.MODE.PRD_K: + # Кассета У5 + $soc_y5/IP5_25.rname = 'А31' + $soc_y5/ay07.rname = 'А37' + $soc_y5/ems_g.rname = 'А33' + $soc_y5/ug.rname = 'А34' + $soc_y5/ukp_1.rname = 'А35' + $soc_y5/ukp_2.rname = 'А36' + # Кассета ФС + $Kasseta_FS/Kasseta.text = 'Кассета ФС-КД' + $Kasseta_FS/Block_FS_PRD_K.visible = true + $Kasseta_FS/FS_PRD_K.visible = true + $Kasseta_FS/ref_A1.rname = 'А3' + $Kasseta_FS/ref_A1.fname = 'Модуль ФС' + $Kasseta_FS/ref_A3.rname = 'А6' + $Kasseta_FS/ref_A3.fname = 'БЛОК ФС-6' + $Kasseta_FS/ref_A2.rname = 'А2' + $Kasseta_FS/ref_A2.fname = 'Модуль ФС' + $Kasseta_FS/ref_A4.rname = 'А5' + $Kasseta_FS/ref_A4.fname = 'БЛОК ФС-7' + # Кассета П-1 + $soc_P1/IP12_50.rname = 'А23' + $soc_P1/IP12_50.fname = 'ИП9-50' + $soc_P1/IP9_50_1.rname = 'А24' + $soc_P1/IP9_50_1.fname = 'ИП9-50' + $soc_P1/IP9_50_2.rname = 'А26' + $soc_P1/IP9_50_2.fname = 'ИП12-50' + + $soc_P1/MAA_1.rname = 'А27' + $soc_P1/MAA_2.rname = 'А28' + # Кассета П-2 + $soc_P2.visible = true diff --git a/scripts/network.gd b/scripts/network.gd index 3f84ba0..69ca08e 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -58,7 +58,7 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник broadcast_packet = sock.get_packet() var addr_receive = sock.get_packet_ip() var port_receive = sock.get_packet_port() - + if (ip_address_yau == addr_receive) and (ip_port_yau == port_receive): last_update_time_yau07 = 0.0 unit.parse(broadcast_packet) @@ -84,7 +84,7 @@ func poll_receive_fs(client: StreamPeerTCP, peerstream: PacketPeer, ip_fs: Strin elif client == client_fs_2: emit_signal("port_fs_closed_2", ip_fs) return - + if peer.get_available_bytes() > 0: var rx_data: PackedByteArray rx_data.append_array(peer.get_data(peer.get_available_bytes())[1]) @@ -106,11 +106,11 @@ func _ready() -> void: var rc = soc_brodcast.bind(Constants.BROADCAST_PORT, '*') if rc != OK: print_debug('Ошибка: Неудачная привязка широковещательного адреса') - + soc_unicast = Socket.new() rc = soc_unicast.bind(Constants.UNICAST_PORT, Constants.UNICAST_ADDRESS) if rc != OK: - print_debug('Ошибка: неудачная привязка адреса: ', ip_address_yau) + print_debug('Ошибка: неудачная привязка адреса: ', ip_address_yau) unit.connect('line_changed', Callable(self, 'on_line_changed')) unit.connect('command_fail', Callable(self, 'on_command_fail')) @@ -123,17 +123,17 @@ func _process(delta: float) -> void: last_update_time_yau07 += delta last_update_time_fs += delta - + if client_fs_1: poll_receive_fs(client_fs_1, peerstream_fs_1, ip_fs_1) state_machine_fs(client_fs_1) if client_fs_2: poll_receive_fs(client_fs_2, peerstream_fs_2, ip_fs_2) state_machine_fs(client_fs_2) - + poll_receive_yau07(soc_brodcast) poll_receive_yau07(soc_unicast) - + state_machine_yau07() match unit.process(delta): @@ -167,12 +167,12 @@ func state_machine_yau07(): state = Constants.STATE.WAIT -# Записать команду в ИСА +# Записать команду в ИСА func read_port_isa(read_ports: Array) -> void: send_array.append(['rd', read_ports]) -# Прочитать данные из порта от ИСА +# Прочитать данные из порта от ИСА func write_port_isa(port_isa: int, data_isa: int) -> void: var write_data: Dictionary = {port_isa: data_isa} send_array.append(['wr', write_data]) @@ -217,7 +217,7 @@ func state_machine_fs(client_fs): func connect_fs_1(): if client_fs_1: disconnect_fs(client_fs_1) - + client_fs_1 = StreamPeerTCP.new() peerstream_fs_1 = PacketPeerStream.new() var rc = client_fs_1.connect_to_host(ip_fs_1, Constants.PORT_FS) diff --git a/scripts/yau07.gd b/scripts/yau07.gd index a0f0255..7d1c660 100644 --- a/scripts/yau07.gd +++ b/scripts/yau07.gd @@ -37,7 +37,7 @@ class YaU07: signal command_done(unit: YaU07) ## Вызывается после выполнения команды signal command_fail(unit: YaU07) ## Вызывается если возникла ошибка при выполнении команды и команда не выполнена signal parse_failed(unit: YaU07) - signal data_received(unit: YaU07) ## Вызывается, когда получены данные + signal data_received(unit: YaU07) ## Вызывается, когда получены данные var name: = String() var cmd_num_rx: = 0 ## Номер команды принятый @@ -262,7 +262,6 @@ class YaU07: status[i] = rx_data[byte_i] # Массив байтовый "состояние прибора" i += 1 emit_signal('data_received', self) - if rx_data_len == (status_len + 6): return true # Нет поля "ответ на команду", разбор пакета завершить From bb50790ce8a0e2e2868caeab6204dca168ffda26 Mon Sep 17 00:00:00 2001 From: danil_tim Date: Wed, 12 Feb 2025 08:37:32 +0300 Subject: [PATCH 6/9] =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=80=D0=B4=D0=B6=D0=B0=20=D1=81=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=BB=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD57EF.tmp | 1003 -------------------------------------- PRD95A4.tmp | 42 -- PRD_MP550.tscn | 4 +- scripts/control_panel.gd | 6 +- 4 files changed, 5 insertions(+), 1050 deletions(-) delete mode 100644 PRD57EF.tmp delete mode 100644 PRD95A4.tmp diff --git a/PRD57EF.tmp b/PRD57EF.tmp deleted file mode 100644 index 1bcb40f..0000000 --- a/PRD57EF.tmp +++ /dev/null @@ -1,1003 +0,0 @@ -[gd_scene load_steps=50 format=3 uid="uid://cvor2jm4xk3ha"] - -[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="Script" path="res://table/table.gd" id="2_vmbyo"] -[ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://Shaders/shader_edu.tres" id="3_3syd3"] -[ext_resource type="Texture2D" uid="uid://cfktmk2rowmul" path="res://table/off.png" id="3_qvuyu"] -[ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"] -[ext_resource type="Texture2D" uid="uid://co8dxcd8eckjs" path="res://Web.png" id="5_i3nvb"] -[ext_resource type="Shader" path="res://ray_2.gdshader" id="8_12mng"] -[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="9_0r2qk"] -[ext_resource type="Script" path="res://scripts/control_panel.gd" id="9_akagi"] -[ext_resource type="Script" path="res://scripts/ems_g.gd" id="9_g1wia"] -[ext_resource type="Shader" path="res://load.gdshader" id="10_lf1xh"] -[ext_resource type="PackedScene" uid="uid://bdb0bhfu7366l" path="res://kasseta-fs-kd.tscn" id="10_tdh2s"] -[ext_resource type="PackedScene" uid="uid://bnlkbbn7b4a3k" path="res://table/элемент-эмс.tscn" id="11_d60jk"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://table/элемент-в.tscn" id="11_fg7ul"] -[ext_resource type="Script" path="res://scripts/modul_fs.gd" id="15_b4pr1"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eib3t"] -bg_color = Color(0.223529, 0.168627, 0.223529, 1) -border_width_bottom = 6 -border_color = Color(0.228592, 0.173062, 0.22863, 1) -border_blend = true - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o0too"] -bg_color = Color(0.223529, 0.168627, 0.223529, 1) -border_width_bottom = 6 -border_color = Color(0.339047, 0.26316, 0.339004, 1) -border_blend = true - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gooip"] -bg_color = Color(0.143, 0.103, 0.143, 0.799) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lqhgx"] -bg_color = Color(0, 0, 0, 0.490196) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_148rs"] -bg_color = Color(0.141176, 0.101961, 0.141176, 0.8) -border_width_bottom = 4 -border_color = Color(0.223529, 0.168627, 0.223529, 1) -border_blend = true -corner_radius_top_left = 2 -corner_radius_top_right = 2 -corner_radius_bottom_right = 2 -corner_radius_bottom_left = 2 - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ldbvf"] -bg_color = Color(0.141176, 0.101961, 0.141176, 0.8) - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_h8aei"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_d322q"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_8j02b"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ls6vm"] - -[sub_resource type="Theme" id="Theme_k5ur4"] -Button/styles/focus = SubResource("StyleBoxFlat_eib3t") -Button/styles/hover = SubResource("StyleBoxFlat_o0too") -Button/styles/normal = SubResource("StyleBoxFlat_o0too") -Button/styles/pressed = SubResource("StyleBoxFlat_eib3t") -CheckButton/icons/checked = ExtResource("2_dv7xx") -CheckButton/icons/unchecked = ExtResource("3_qvuyu") -OptionButton/font_sizes/font_size = 17 -OptionButton/styles/focus = SubResource("StyleBoxFlat_gooip") -OptionButton/styles/hover = SubResource("StyleBoxFlat_lqhgx") -OptionButton/styles/normal = SubResource("StyleBoxFlat_148rs") -OptionButton/styles/pressed = SubResource("StyleBoxFlat_ldbvf") -TabContainer/styles/panel = SubResource("StyleBoxTexture_h8aei") -TabContainer/styles/tab_focus = SubResource("StyleBoxTexture_d322q") -TabContainer/styles/tab_selected = SubResource("StyleBoxTexture_8j02b") -TabContainer/styles/tabbar_background = SubResource("StyleBoxTexture_ls6vm") - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pxarn"] -bg_color = Color(0.356863, 0.278431, 0.356863, 1) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p247y"] -bg_color = Color(0.356863, 0.278431, 0.356863, 1) - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rh6pm"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_x11tp"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mn8w2"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_21lc8"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_k08q3"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_dklg6"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_17le6"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_7u7p7"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_1as41"] - -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_723du"] -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_dgiai"] -shader = ExtResource("4_uy5o2") -shader_parameter/color_signal = Color(0.588235, 0.466667, 0, 1) -shader_parameter/turn = 0.785 -shader_parameter/inner_radius = 0.32 - -[sub_resource type="Gradient" id="Gradient_ki0n7"] - -[sub_resource type="GradientTexture2D" id="GradientTexture2D_0pk2o"] -gradient = SubResource("Gradient_ki0n7") -fill_from = Vector2(0.474359, 0.5) -metadata/_snap_enabled = true - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_2pxu2"] -shader = ExtResource("8_12mng") -shader_parameter/color_signal = Color(0.588242, 0.466356, 0, 1) -shader_parameter/turn = 0.785 -shader_parameter/inner_radius = 0.32 - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tn8m6"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ooo4i"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_slcfo"] -shader = ExtResource("10_lf1xh") -shader_parameter/frequency = 5.0 -shader_parameter/amplitude = 600.0 -shader_parameter/speed = 5.0 -shader_parameter/direction = -1.0 -shader_parameter/color1 = Color(0, 0, 0, 1) -shader_parameter/color2 = Color(0.235, 0.18, 0.235, 1) -shader_parameter/color3 = Color(0.235, 0.18, 0.235, 0.5) -shader_parameter/color4 = Color(0, 0, 0, 0) -shader_parameter/opacity = 0.218 -shader_parameter/turn = 0.785 - -[sub_resource type="Theme" id="Theme_yblys"] -CheckBox/font_sizes/font_size = 14 - -[node name="Node2D" type="Node2D"] -script = ExtResource("1_v273n") - -[node name="Background" type="ColorRect" parent="."] -offset_right = 3025.0 -offset_bottom = 1060.0 -theme = SubResource("Theme_k5ur4") -color = Color(0.356863, 0.278431, 0.356863, 1) -metadata/_edit_lock_ = true - -[node name="side_panel" type="ColorRect" parent="Background"] -layout_mode = 0 -offset_right = 216.0 -offset_bottom = 988.0 -color = Color(0.586231, 0.481877, 0.585869, 1) - -[node name="select_prd" type="Button" parent="Background/side_panel"] -layout_mode = 0 -offset_top = 120.0 -offset_right = 216.0 -offset_bottom = 156.0 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_pxarn") -toggle_mode = true -button_pressed = true -text = "ПРД" - -[node name="select_control" type="Button" parent="Background/side_panel"] -layout_mode = 0 -offset_top = 160.0 -offset_right = 216.0 -offset_bottom = 196.0 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y") -toggle_mode = true -text = "КОНТРОЛЬ" - -[node name="select_ems_g" type="Button" parent="Background/side_panel"] -layout_mode = 0 -offset_top = 200.0 -offset_right = 216.0 -offset_bottom = 236.0 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y") -toggle_mode = true -text = "ЭМС Г" - -[node name="select_fs" type="Button" parent="Background/side_panel"] -layout_mode = 0 -offset_top = 241.0 -offset_right = 216.0 -offset_bottom = 277.0 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y") -toggle_mode = true -text = "Модуль ФС" - -[node name="save_config" type="Button" parent="Background/side_panel"] -layout_mode = 0 -offset_top = 832.0 -offset_right = 216.0 -offset_bottom = 868.0 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y") -text = "Сохранить" - -[node name="load_config" type="Button" parent="Background/side_panel"] -layout_mode = 0 -offset_top = 872.0 -offset_right = 216.0 -offset_bottom = 908.0 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y") -text = "Загрузить" - -[node name="Litera_3_5_7" type="ColorRect" parent="Background"] -visible = false -layout_mode = 0 -offset_top = 48.0 -offset_right = 1941.0 -offset_bottom = 352.0 -color = Color(0.669446, 0.567301, 0.66881, 1) - -[node name="Litera_1" type="ColorRect" parent="Background"] -visible = false -layout_mode = 0 -offset_top = 359.0 -offset_right = 2182.0 -offset_bottom = 638.0 -color = Color(0.669446, 0.567301, 0.66881, 1) - -[node name="ISA" type="Label" parent="."] -offset_left = 225.0 -offset_top = 11.0 -offset_right = 409.0 -offset_bottom = 48.0 -autowrap_mode = 3 -metadata/_edit_lock_ = true - -[node name="read_isa" type="Button" parent="."] -offset_left = 85.0 -offset_top = 7.0 -offset_right = 210.0 -offset_bottom = 38.0 -text = "Прочитать ISA" -metadata/_edit_lock_ = true - -[node name="TabContainer" type="TabContainer" parent="."] -offset_left = 216.0 -offset_top = 39.0 -offset_right = 2420.0 -offset_bottom = 917.0 -theme = SubResource("Theme_k5ur4") -theme_override_colors/font_unselected_color = Color(0, 0, 0, 0.0392157) -theme_override_colors/font_selected_color = Color(0, 0, 0, 0) -theme_override_styles/tab_focus = SubResource("StyleBoxTexture_rh6pm") -theme_override_styles/tab_disabled = SubResource("StyleBoxTexture_x11tp") -theme_override_styles/tabbar_background = SubResource("StyleBoxTexture_mn8w2") -theme_override_styles/panel = SubResource("StyleBoxTexture_21lc8") -theme_override_styles/tab_selected = SubResource("StyleBoxTexture_k08q3") -theme_override_styles/tab_hovered = SubResource("StyleBoxTexture_dklg6") -theme_override_styles/tab_unselected = SubResource("StyleBoxTexture_17le6") -tab_alignment = 2 -current_tab = 0 -tab_focus_mode = 0 -metadata/_edit_lock_ = true - -[node name="PRD" type="Panel" parent="TabContainer"] -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_7u7p7") -metadata/_tab_index = 0 -metadata/_edit_lock_ = true - -[node name="body_grid" type="GridContainer" parent="TabContainer/PRD"] -layout_mode = 0 -offset_left = 376.0 -offset_top = -4.0 -offset_right = 1648.0 -offset_bottom = 718.0 - -[node name="litera_2_4_6" type="GridContainer" parent="TabContainer/PRD/body_grid"] -clip_contents = true -custom_minimum_size = Vector2(700, 300) -layout_mode = 2 -size_flags_horizontal = 3 -columns = 5 - -[node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_2_4_6"] -custom_minimum_size = Vector2(350, 0) -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="space" type="Panel" parent="TabContainer/PRD/body_grid/litera_2_4_6"] -custom_minimum_size = Vector2(50, 0) -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_1as41") - -[node name="yau07b_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_2_4_6"] -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="space2" type="Panel" parent="TabContainer/PRD/body_grid/litera_2_4_6"] -custom_minimum_size = Vector2(50, 0) -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_1as41") - -[node name="table_ukp_1" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_2_4_6"] -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="PSK" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_2_4_6"] -modulate = Color(1, 1, 0.941176, 0.733333) -material = ExtResource("3_3syd3") -position = Vector2(955, 5) -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_2_4_6/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") -expand_mode = 1 -metadata/_edit_lock_ = true - -[node name="ray_1" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_2_4_6/PSK"] -material = SubResource("ShaderMaterial_dgiai") -position = Vector2(549.221, 543.623) -scale = Vector2(21.8765, 21.6782) -texture = SubResource("GradientTexture2D_0pk2o") -metadata/_edit_lock_ = true - -[node name="litera_3_5_7" type="GridContainer" parent="TabContainer/PRD/body_grid"] -custom_minimum_size = Vector2(500, 350) -layout_mode = 2 -columns = 5 - -[node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_3_5_7"] -custom_minimum_size = Vector2(350, 0) -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="space" type="Panel" parent="TabContainer/PRD/body_grid/litera_3_5_7"] -custom_minimum_size = Vector2(50, 0) -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_1as41") - -[node name="yau07b_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_3_5_7"] -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="space2" type="Panel" parent="TabContainer/PRD/body_grid/litera_3_5_7"] -custom_minimum_size = Vector2(50, 0) -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_1as41") - -[node name="table_ukp_2" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_3_5_7"] -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="PSK2" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_3_5_7"] -modulate = Color(1, 1, 0.941176, 0.733333) -material = ExtResource("3_3syd3") -position = Vector2(955, -6) -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_3_5_7/PSK2"] -modulate = Color(1, 1, 0.941176, 0.784314) -show_behind_parent = true -material = SubResource("ShaderMaterial_o7txs") -offset_left = 554.954 -offset_top = -30.0 -offset_right = 1290.95 -offset_bottom = 1134.0 -texture = ExtResource("5_i3nvb") -expand_mode = 1 -metadata/_edit_lock_ = true - -[node name="ray_2" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_3_5_7/PSK2"] -material = SubResource("ShaderMaterial_2pxu2") -position = Vector2(549.221, 539.353) -scale = Vector2(21.8765, 21.6782) -texture = SubResource("GradientTexture2D_0pk2o") -metadata/_edit_lock_ = true - -[node name="select_dev" type="GridContainer" parent="TabContainer/PRD"] -layout_mode = 2 -offset_left = 16.0 -offset_top = 11.0 -offset_right = 16.0 -offset_bottom = 11.0 -script = ExtResource("2_vmbyo") -node_gap = Vector2(100, 50) - -[node name="ControlPanel" type="Panel" parent="TabContainer"] -visible = false -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_tn8m6") -script = ExtResource("9_akagi") -metadata/_tab_index = 1 -metadata/_edit_lock_ = true - -[node name="lbl_control" type="Label" parent="TabContainer/ControlPanel"] -layout_mode = 0 -offset_left = 4.0 -offset_top = 21.0 -offset_right = 624.0 -offset_bottom = 52.0 -theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора ПРД-Н" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="soc_y5" type="NinePatchRect" parent="TabContainer/ControlPanel"] -layout_mode = 0 -offset_left = 199.0 -offset_top = 103.0 -offset_right = 516.0 -offset_bottom = 293.0 -texture = ExtResource("9_0r2qk") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_A24" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")] -offset_left = 9.0 -offset_top = 34.0 -offset_right = 59.0 -offset_bottom = 184.0 -textures = Array[Texture]([]) -fname = "ИП-25" -rname = "A24" -metadata/_edit_lock_ = true - -[node name="ref_A30" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")] -offset_left = 59.0 -offset_top = 34.0 -offset_right = 109.0 -offset_bottom = 184.0 -textures = Array[Texture]([]) -fname = "ЯУ-07" -rname = "A30" -metadata/_edit_lock_ = true - -[node name="ref_A26" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")] -offset_left = 109.0 -offset_top = 34.0 -offset_right = 159.0 -offset_bottom = 184.0 -textures = Array[Texture]([]) -fname = "ЭМС-Г" -rname = "A26" -metadata/_edit_lock_ = true - -[node name="ref_A27" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")] -offset_left = 159.0 -offset_top = 34.0 -offset_right = 209.0 -offset_bottom = 184.0 -textures = Array[Texture]([]) -fname = "УГ" -rname = "A27" -metadata/_edit_lock_ = true - -[node name="ref_A28" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")] -offset_left = 209.0 -offset_top = 34.0 -offset_right = 259.0 -offset_bottom = 183.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 149) -fname = "УКП-1" -rname = "A28" -metadata/_edit_lock_ = true - -[node name="ref_A29" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")] -offset_left = 259.0 -offset_top = 34.0 -offset_right = 309.0 -offset_bottom = 184.0 -textures = Array[Texture]([]) -fname = "УКП-2" -rname = "A29" -metadata/_edit_lock_ = true - -[node name="lbl_fname" type="Label" parent="TabContainer/ControlPanel/soc_y5"] -self_modulate = Color(1, 1, 1, 0.62) -layout_mode = 0 -offset_left = 7.0 -offset_top = 8.0 -offset_right = 309.0 -offset_bottom = 33.0 -text = "Кассета У5" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="soc_fs-nkvd" parent="TabContainer/ControlPanel" instance=ExtResource("10_tdh2s")] -layout_mode = 0 -offset_left = 198.0 -offset_top = 311.0 -offset_right = 516.0 -offset_bottom = 538.0 -script = null - -[node name="lbl_fname" type="Label" parent="TabContainer/ControlPanel/soc_fs-nkvd"] -self_modulate = Color(1, 1, 1, 0.62) -layout_mode = 0 -offset_left = 7.0 -offset_top = 8.0 -offset_right = 299.0 -offset_bottom = 33.0 -text = "Кассета ФС-НД" -horizontal_alignment = 1 -vertical_alignment = 1 -metadata/_edit_lock_ = true - -[node name="ref_A3" parent="TabContainer/ControlPanel/soc_fs-nkvd" instance=ExtResource("11_fg7ul")] -offset_left = 109.0 -offset_top = 68.0 -offset_right = 159.0 -offset_bottom = 218.0 -textures = Array[Texture]([]) -fname = "ФС-2" -rname = "A3" -metadata/_edit_lock_ = true - -[node name="ref_A1" parent="TabContainer/ControlPanel/soc_fs-nkvd" instance=ExtResource("11_fg7ul")] -offset_left = 159.0 -offset_top = 68.0 -offset_right = 209.0 -offset_bottom = 218.0 -textures = Array[Texture]([]) -fname = "Модуль" -rname = "A1" -metadata/_edit_lock_ = true - -[node name="ref_A2" parent="TabContainer/ControlPanel/soc_fs-nkvd" instance=ExtResource("11_fg7ul")] -offset_left = 209.0 -offset_top = 68.0 -offset_right = 259.0 -offset_bottom = 217.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 149) -fname = "Модуль" -rname = "A2" -metadata/_edit_lock_ = true - -[node name="ref_A4" parent="TabContainer/ControlPanel/soc_fs-nkvd" instance=ExtResource("11_fg7ul")] -offset_left = 259.0 -offset_top = 68.0 -offset_right = 309.0 -offset_bottom = 218.0 -textures = Array[Texture]([]) -fname = "ФС-3" -rname = "A4" -metadata/_edit_lock_ = true - -[node name="soc_P1" type="NinePatchRect" parent="TabContainer/ControlPanel"] -layout_mode = 0 -offset_left = 96.0 -offset_top = 560.0 -offset_right = 516.0 -offset_bottom = 776.0 -texture = ExtResource("9_0r2qk") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="lbl_fname" type="Label" parent="TabContainer/ControlPanel/soc_P1"] -self_modulate = Color(1, 1, 1, 0.62) -layout_mode = 0 -offset_left = 7.0 -offset_top = 8.0 -offset_right = 409.0 -offset_bottom = 33.0 -text = "Кассета П-1" -horizontal_alignment = 1 -vertical_alignment = 1 -metadata/_edit_lock_ = true - -[node name="ref_A23" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -offset_left = 40.0 -offset_top = -206.0 -offset_right = 90.0 -offset_bottom = -32.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) - -[node name="ref_A24" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -offset_left = 40.0 -offset_top = -448.0 -offset_right = 90.0 -offset_bottom = -274.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) - -[node name="ref_A25" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -offset_left = 109.0 -offset_top = 34.0 -offset_right = 159.0 -offset_bottom = 208.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) -metadata/_edit_lock_ = true - -[node name="ref_A26" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -offset_left = 159.0 -offset_top = 34.0 -offset_right = 209.0 -offset_bottom = 208.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) -metadata/_edit_lock_ = true - -[node name="ref_A27" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -offset_left = 209.0 -offset_top = 34.0 -offset_right = 259.0 -offset_bottom = 208.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) -metadata/_edit_lock_ = true - -[node name="ref_A28" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -visible = false -offset_left = 259.0 -offset_top = 34.0 -offset_right = 309.0 -offset_bottom = 208.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) -metadata/_edit_lock_ = true - -[node name="ref_A29" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")] -visible = false -offset_left = 309.0 -offset_top = 34.0 -offset_right = 359.0 -offset_bottom = 208.0 -textures = Array[Texture]([]) -self_size = Vector2i(50, 174) -metadata/_edit_lock_ = true - -[node name="Signal_EMS_G" type="NinePatchRect" parent="TabContainer/ControlPanel"] -layout_mode = 0 -offset_left = 536.0 -offset_top = 550.0 -offset_right = 1055.0 -offset_bottom = 777.0 -texture = ExtResource("9_0r2qk") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="lbl_fname" type="Label" parent="TabContainer/ControlPanel/Signal_EMS_G"] -self_modulate = Color(1, 1, 1, 0.62) -layout_mode = 0 -offset_left = 7.0 -offset_top = 8.0 -offset_right = 508.0 -offset_bottom = 33.0 -text = "ЭМС-Г" -horizontal_alignment = 1 -vertical_alignment = 1 -metadata/_edit_lock_ = true - -[node name="ref_A22" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 9.0 -offset_top = 38.0 -offset_right = 59.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A22" -metadata/_edit_lock_ = true - -[node name="ref_A23" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 59.0 -offset_top = 38.0 -offset_right = 109.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A23" -metadata/_edit_lock_ = true - -[node name="ref_A26" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 109.0 -offset_top = 38.0 -offset_right = 159.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A26" -metadata/_edit_lock_ = true - -[node name="ref_A27" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 159.0 -offset_top = 38.0 -offset_right = 209.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A27" -metadata/_edit_lock_ = true - -[node name="ref_A28" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 209.0 -offset_top = 38.0 -offset_right = 259.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A28" -metadata/_edit_lock_ = true - -[node name="ref_A29" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 259.0 -offset_top = 38.0 -offset_right = 309.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A29" -metadata/_edit_lock_ = true - -[node name="ref_A31" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 309.0 -offset_top = 38.0 -offset_right = 359.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "УМ2" -metadata/_edit_lock_ = true - -[node name="ref_A32" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 359.0 -offset_top = 38.0 -offset_right = 409.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "УМ3" -metadata/_edit_lock_ = true - -[node name="ref_A33" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 409.0 -offset_top = 38.0 -offset_right = 459.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A33" -metadata/_edit_lock_ = true - -[node name="ref_A34" parent="TabContainer/ControlPanel/Signal_EMS_G" instance=ExtResource("11_d60jk")] -offset_left = 459.0 -offset_top = 38.0 -offset_right = 509.0 -offset_bottom = 216.0 -self_size = Vector2i(50, 178) -rname = "A33" -metadata/_edit_lock_ = true - -[node name="EMS_G" type="Panel" parent="TabContainer"] -visible = false -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_ooo4i") -script = ExtResource("9_g1wia") -metadata/_tab_index = 2 -metadata/_edit_lock_ = true - -[node name="table1" type="GridContainer" parent="TabContainer/EMS_G"] -layout_mode = 2 -offset_left = 35.0 -offset_top = 60.0 -offset_right = 35.0 -offset_bottom = 60.0 -script = ExtResource("2_vmbyo") - -[node name="load_boadr" type="ColorRect" parent="TabContainer/EMS_G"] -layout_mode = 0 -offset_left = 35.0 -offset_top = 58.0 -offset_right = 1604.0 -offset_bottom = 782.0 -color = Color(0, 0, 0, 0.596078) -metadata/_edit_lock_ = true - -[node name="load" type="Sprite2D" parent="TabContainer/EMS_G/load_boadr"] -material = SubResource("ShaderMaterial_slcfo") -position = Vector2(785.001, 361.5) -scale = Vector2(24.5313, 11.2656) -texture = SubResource("GradientTexture2D_0pk2o") -metadata/_edit_lock_ = true - -[node name="Load_text" type="Label" parent="TabContainer/EMS_G/load_boadr"] -layout_mode = 0 -offset_left = 693.0 -offset_top = 341.0 -offset_right = 849.0 -offset_bottom = 380.0 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_shadow_color = Color(0.427493, 0.427493, 0.427493, 1) -theme_override_font_sizes/font_size = 28 -text = "Загрузка ..." - -[node name="Modul_fs" type="Panel" parent="TabContainer"] -visible = false -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxTexture_ooo4i") -script = ExtResource("15_b4pr1") -metadata/_tab_index = 3 -metadata/_edit_lock_ = true - -[node name="set_space" type="GridContainer" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 211.0 -offset_top = 378.0 -offset_right = 854.0 -offset_bottom = 418.0 -columns = 2 - -[node name="set_ferq" type="Button" parent="TabContainer/Modul_fs/set_space"] -custom_minimum_size = Vector2(100, 0) -layout_mode = 2 -text = " Set н/ч" - -[node name="write_to_set_freq" type="LineEdit" parent="TabContainer/Modul_fs/set_space"] -custom_minimum_size = Vector2(300, 0) -layout_mode = 2 -text = "500" -placeholder_text = "Частота" - -[node name="measurement" type="Label" parent="TabContainer/Modul_fs/set_space/write_to_set_freq"] -layout_mode = 0 -offset_left = 313.0 -offset_top = 2.0 -offset_right = 365.0 -offset_bottom = 30.0 -text = "МГц" - -[node name="set_att2" type="Button" parent="TabContainer/Modul_fs/set_space"] -custom_minimum_size = Vector2(100, 0) -layout_mode = 2 -text = " Set att" - -[node name="write_to_set_att" type="LineEdit" parent="TabContainer/Modul_fs/set_space"] -custom_minimum_size = Vector2(300, 0) -layout_mode = 2 -text = "38.75" -placeholder_text = "-38.75 to 0" - -[node name="measurement" type="Label" parent="TabContainer/Modul_fs/set_space/write_to_set_att"] -layout_mode = 0 -offset_left = 313.0 -offset_top = 2.0 -offset_right = 351.0 -offset_bottom = 30.0 -text = "dB" - -[node name="manage_panel" type="GridContainer" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 200.0 -offset_top = 186.0 -offset_right = 805.0 -offset_bottom = 308.0 -columns = 5 -metadata/_edit_lock_ = true - -[node name="con" type="Button" parent="TabContainer/Modul_fs/manage_panel"] -layout_mode = 2 -text = " Подключение " - -[node name="ip_connect" type="Label" parent="TabContainer/Modul_fs/manage_panel/con"] -layout_mode = 0 -offset_top = 32.0 -offset_right = 118.0 -offset_bottom = 55.0 - -[node name="get_freq" type="Button" parent="TabContainer/Modul_fs/manage_panel"] -layout_mode = 2 -text = " Получить н/ч " - -[node name="freq_ind" type="Label" parent="TabContainer/Modul_fs/manage_panel/get_freq"] -layout_mode = 0 -offset_top = 32.0 -offset_right = 106.0 -offset_bottom = 55.0 - -[node name="get_att" type="Button" parent="TabContainer/Modul_fs/manage_panel"] -layout_mode = 2 -text = " Получить att " - -[node name="att_ind" type="Label" parent="TabContainer/Modul_fs/manage_panel/get_att"] -layout_mode = 0 -offset_top = 32.0 -offset_right = 105.0 -offset_bottom = 55.0 - -[node name="get_gen_status" type="Button" parent="TabContainer/Modul_fs/manage_panel"] -layout_mode = 2 -toggle_mode = true -text = "Переключатель генератора " - -[node name="status_ind" type="Label" parent="TabContainer/Modul_fs/manage_panel/get_gen_status"] -layout_mode = 0 -offset_top = 33.0 -offset_right = 84.0 -offset_bottom = 56.0 - -[node name="read" type="LineEdit" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 216.0 -offset_top = 818.0 -offset_right = 971.0 -offset_bottom = 849.0 -metadata/_edit_lock_ = true - -[node name="fs_connect" type="Label" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 206.0 -offset_top = 88.0 -offset_right = 377.0 -offset_bottom = 111.0 -text = "Связь с модулем ФС" - -[node name="temp_1" type="Label" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 1015.0 -offset_top = 119.0 -offset_right = 1102.0 -offset_bottom = 152.0 -text = "Темп" - -[node name="temp_2" type="Label" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 1016.0 -offset_top = 156.0 -offset_right = 1103.0 -offset_bottom = 189.0 -text = "Темп" - -[node name="temp_3" type="Label" parent="TabContainer/Modul_fs"] -layout_mode = 0 -offset_left = 1015.0 -offset_top = 193.0 -offset_right = 1102.0 -offset_bottom = 226.0 -text = "Темп" - -[node name="save_other" type="CheckBox" parent="."] -offset_left = 2.0 -offset_top = 799.0 -offset_right = 215.0 -offset_bottom = 827.0 -theme = SubResource("Theme_yblys") -text = "Сохранить все настройки" - -[connection signal="pressed" from="Background/side_panel/select_prd" to="." method="_on_prd_select"] -[connection signal="pressed" from="Background/side_panel/select_control" to="." method="_on_control_button"] -[connection signal="pressed" from="Background/side_panel/select_ems_g" to="." method="_on_emsg_select"] -[connection signal="pressed" from="Background/side_panel/select_fs" to="." method="_on_mfs_select"] -[connection signal="pressed" from="Background/side_panel/save_config" to="." method="_on_save_config"] -[connection signal="pressed" from="Background/side_panel/load_config" to="." method="_on_load_config"] -[connection signal="pressed" from="read_isa" to="." method="_on_read_isa_pressed"] -[connection signal="pressed" from="TabContainer/Modul_fs/set_space/set_ferq" to="TabContainer/Modul_fs" method="_on_set_ferq"] -[connection signal="pressed" from="TabContainer/Modul_fs/set_space/set_att2" to="TabContainer/Modul_fs" method="_on_set_att"] -[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/get_freq" to="TabContainer/Modul_fs" method="_on_send_pressed"] -[connection signal="pressed" from="TabContainer/Modul_fs/manage_panel/get_att" to="TabContainer/Modul_fs" method="_on_get_att"] -[connection signal="toggled" from="TabContainer/Modul_fs/manage_panel/get_gen_status" to="TabContainer/Modul_fs" method="_on_get_status"] diff --git a/PRD95A4.tmp b/PRD95A4.tmp deleted file mode 100644 index ee610de..0000000 --- a/PRD95A4.tmp +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene load_steps=6 format=3 uid="uid://cvor2jm4xk3ha"] - -[ext_resource type="Script" path="res://PRD.gd" id="1_v273n"] -[ext_resource type="Script" path="res://table/table.gd" id="2_vmbyo"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5yjx2"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kofy6"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hdj8q"] - -[node name="Node2D" type="Node2D"] -script = ExtResource("1_v273n") - -[node name="Background" type="ColorRect" parent="."] -offset_right = 1321.0 -offset_bottom = 790.0 -color = Color(0.356863, 0.278431, 0.356863, 1) -metadata/_edit_lock_ = true - -[node name="scroll1" type="ScrollContainer" parent="."] -offset_left = 586.0 -offset_top = 45.0 -offset_right = 949.0 -offset_bottom = 629.0 - -[node name="table1" type="GridContainer" parent="scroll1"] -layout_mode = 2 -script = ExtResource("2_vmbyo") -metadata/_edit_lock_ = true - -[node name="TextEdit" type="TextEdit" parent="."] -offset_left = 1028.0 -offset_top = 602.0 -offset_right = 1140.0 -offset_bottom = 640.0 -theme_override_colors/font_readonly_color = Color(1, 1, 1, 1) -theme_override_styles/normal = SubResource("StyleBoxTexture_5yjx2") -theme_override_styles/focus = SubResource("StyleBoxTexture_kofy6") -theme_override_styles/read_only = SubResource("StyleBoxTexture_hdj8q") -text = "Test PRD" -editable = false diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index b47625f..be16a47 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -294,12 +294,11 @@ theme_override_styles/tab_selected = SubResource("StyleBoxTexture_k08q3") theme_override_styles/tab_hovered = SubResource("StyleBoxTexture_dklg6") theme_override_styles/tab_unselected = SubResource("StyleBoxTexture_17le6") tab_alignment = 2 -current_tab = 2 +current_tab = 0 tab_focus_mode = 0 metadata/_edit_lock_ = true [node name="PRD" type="Panel" parent="TabContainer"] -visible = false layout_mode = 2 theme_override_styles/panel = SubResource("StyleBoxTexture_7u7p7") metadata/_tab_index = 0 @@ -746,6 +745,7 @@ offset_right = 1616.0 offset_bottom = 847.0 [node name="EMS_G" type="Panel" parent="TabContainer"] +visible = false layout_mode = 2 theme_override_styles/panel = SubResource("StyleBoxTexture_ooo4i") script = ExtResource("9_g1wia") diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd index 614d6bd..8bb9327 100644 --- a/scripts/control_panel.gd +++ b/scripts/control_panel.gd @@ -14,13 +14,13 @@ func _ready() -> void: $soc_y5/ay07, $soc_y5/ems_g, $soc_y5/ug, - $soc_y5/ukp_1, $soc_y5/ukp_2, + $soc_y5/ukp_1, $soc_P1/MAA_1, $soc_P1/MAA_2, - $soc_P1/IP9_50_1, $soc_P1/IP9_50_2, + $soc_P1/IP9_50_1, $soc_P1/IP12_50, $soc_P2/IP9_50, @@ -46,7 +46,7 @@ func _on_timer(pribor_prd): func _status_cell(status): var status_board: int = status.decode_u8(Constants.DataIndices.STATUS_BOARD) - var dry_contact: int = status.decode_u8(Constants.DataIndices.DRY_CONTACT+1) + var dry_contact: int = status.decode_u8(Constants.DataIndices.DRY_CONTACT) # status_board for i in range(1, count_cell-8): From cd83c97d6ab223fa08ed2c824ca87b3def3473ed Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 11 Feb 2025 19:11:15 +0300 Subject: [PATCH 7/9] =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD_MP550.tscn | 12 --------- scripts/PRD.gd | 58 +++++++++++++++++++++++++++++----------- scripts/constants.gd | 4 +-- scripts/control_panel.gd | 2 +- scripts/network.gd | 2 +- 5 files changed, 46 insertions(+), 32 deletions(-) diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index be16a47..fff5805 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -949,18 +949,6 @@ offset_bottom = 827.0 theme = SubResource("Theme_yblys") text = "Сохранить все настройки" -[node name="can_macro" type="Label" parent="."] -offset_left = 226.0 -offset_top = 876.0 -offset_right = 1055.0 -offset_bottom = 916.0 - -[node name="can" type="Label" parent="."] -offset_left = 224.0 -offset_top = 844.0 -offset_right = 959.0 -offset_bottom = 889.0 - [connection signal="pressed" from="Background/side_panel/select_prd" to="." method="_on_prd_select"] [connection signal="pressed" from="Background/side_panel/select_control" to="." method="_on_control_button"] [connection signal="pressed" from="Background/side_panel/select_ems_g" to="." method="_on_emsg_select"] diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 8e3f1a1..b8929bf 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -139,7 +139,17 @@ func _ready() -> void: for key in Constants.ATT_DICT: node_select_yau_07b.get_node2(1, 4).add_item(key) node_select_yau_07b_2.get_node2(1, 4).add_item(key) - + + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 48) + Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8]) + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 49) + Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8]) + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 51) + Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8]) + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 52) + Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8]) + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 56) + Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8]) Network.connect('yau_status_line', Callable(self, '_on_yau_status')) Network.connect('yau_receive', Callable(self, '_on_data_received')) @@ -207,25 +217,43 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void: $ISA.text = 'ISA: ' + str(len(Constants.EMS_G_PORT_DATA_HOLDER)) if isa_data.has(Constants.BASE_PORTS.UG+6): - $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, 4).select((isa_data[Constants.BASE_PORTS.UG+6] & 0x38)>> 3) + if (isa_data[Constants.BASE_PORTS.UG+6] & 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, 4).select((isa_data[Constants.BASE_PORTS.UG+6] & 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/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+6] & 0x38)) if isa_data.has(Constants.BASE_PORTS.UG+8): - $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, 4).select((isa_data[Constants.BASE_PORTS.UG+8] & 0x38)>>3) + 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, 4).select((isa_data[Constants.BASE_PORTS.UG+8] & 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/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x38)) - if isa_data.has(Constants.BASE_PORTS.EMS_G+2): - print(isa_data[Constants.BASE_PORTS.EMS_G+2]) - if (isa_data[Constants.BASE_PORTS.EMS_G+2]== 48): - if (isa_data[Constants.BASE_PORTS.EMS_G+8]>>14): - print(isa_data) - $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,1).get_child(1).button_pressed = true - else: - $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,1).get_child(1).button_pressed = false - + for index in Constants.EMS_G_PORT_DATA_HOLDER.size(): + var tmp_device_mode = Constants.EMS_G_PORT_DATA_HOLDER[index][0] + if tmp_device_mode == 48: + var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1] + if Constants.BASE_PORTS.EMS_G+8 in data_dict: + $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,1).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 14 + if tmp_device_mode == 49: + var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1] + 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 + if tmp_device_mode == 51: + 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_2_4_6/yau07b_control.get_node2(1,2).select(select) + if tmp_device_mode == 52: + 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_3_5_7/yau07b_control.get_node2(1,2).select(select) + if tmp_device_mode == 56: + var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1] + if Constants.BASE_PORTS.EMS_G+8 in data_dict: + $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,5).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 + func _on_data_fs_1(fs_1_data): var node_select_fs_1 = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control @@ -252,8 +280,6 @@ func _on_data_fs_1(fs_1_data): Constants.CMD.BASE_CAN_MACRO_READ: if GRP == Constants.GROUP.BASE: node_select_fs_1.set_node_text(2, 7, str(fs_1_data.decode_u16(0x20)) + ' МГц') - $can.text = str(fs_1_data) - $can_macro.text = str(fs_1_data.decode_u32(0x04)) func _on_data_fs_2(fs_2_data): diff --git a/scripts/constants.gd b/scripts/constants.gd index 9913ca5..7665ba8 100644 --- a/scripts/constants.gd +++ b/scripts/constants.gd @@ -1,6 +1,6 @@ extends Node -const UNICAST_PORT: int = 50014 -const UNICAST_ADDRESS: String = '10.1.1.14' +const UNICAST_PORT: int = 50003 +const UNICAST_ADDRESS: String = '10.1.1.3' const BROADCAST_PORT: int = 50000 const DEFAULT_ADDRESS: String = '10.1.1.11' const DEFAULT_PORT: String = '50011' diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd index 8bb9327..fd5ea87 100644 --- a/scripts/control_panel.gd +++ b/scripts/control_panel.gd @@ -67,7 +67,7 @@ func _status_cell(status): node_cell_ind[i].state = Constants.STATE_VAL.NONE func _status_prd(): - var status: int + var status: int = 0 for i in range(count_cell-3): status += 1 if (node_cell_ind[i].state == Constants.STATE_VAL.GOOD) else 0 status += 1 if (node_cell_ind[count_cell-1].state == Constants.STATE_VAL.GOOD) else 0 diff --git a/scripts/network.gd b/scripts/network.gd index 2d53b7d..8f078ac 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -109,7 +109,7 @@ func _ready() -> void: soc_unicast = Socket.new() rc = soc_unicast.bind(Constants.UNICAST_PORT, Constants.UNICAST_ADDRESS) if rc != OK: - print_debug('Ошибка: неудачная привязка адреса: ', ip_address_yau) + print_debug('Ошибка: неудачная привязка адреса: ', Constants.UNICAST_ADDRESS) unit.connect('line_changed', Callable(self, 'on_line_changed')) unit.connect('command_fail', Callable(self, 'on_command_fail')) From b686c0f137b88554ba06d0cbfa702995b07f0803 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 11 Feb 2025 19:15:36 +0300 Subject: [PATCH 8/9] =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0?= =?UTF-8?q?=20(=D0=BD=D0=B0=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC=20=D0=BA=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D0=BE=D1=82=D1=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD_MP550.tscn | 4 ++-- Shaders/loadead.gdshader | 14 +++++++------- kasseta-fs-kd.tscn | 2 +- Web.png => pictures/Web.png | Bin Web.png.import => pictures/Web.png.import | 6 +++--- .../nine-patch-round.png | Bin .../nine-patch-round.png.import | 6 +++--- pictures/бургер.png | Bin 0 -> 3705 bytes pictures/клад.png | Bin 0 -> 4985 bytes pictures/контролер.png | Bin 0 -> 5702 bytes pictures/серпимолот.png | Bin 0 -> 7207 bytes pictures/состояние-исправности-0.png | Bin 0 -> 8125 bytes .../состояние-исправности-0.png.import | 6 +++--- pictures/состояние-исправности-1.png | Bin 0 -> 4935 bytes .../состояние-исправности-1.png.import | 6 +++--- pictures/состояние-исправности-2.png | Bin 0 -> 5164 bytes .../состояние-исправности-2.png.import | 6 +++--- .../эмс-бланк-перем.png | Bin .../эмс-бланк-перем.png.import | 6 +++--- .../эмс-бланк-пост.png | Bin .../эмс-бланк-пост.png.import | 6 +++--- эмс-бланк.png => pictures/эмс-бланк.png | Bin .../эмс-бланк.png.import | 6 +++--- table/socket_status.tscn | 6 +++--- table/элемент-в.tscn | 14 +++++++------- table/элемент-эмс.tscn | 8 ++++---- состояние-исправности-0.png | Bin 4148 -> 0 bytes состояние-исправности-1.png | Bin 2606 -> 0 bytes состояние-исправности-2.png | Bin 2275 -> 0 bytes 29 files changed, 48 insertions(+), 48 deletions(-) rename Web.png => pictures/Web.png (100%) rename Web.png.import => pictures/Web.png.import (74%) rename nine-patch-round.png => pictures/nine-patch-round.png (100%) rename nine-patch-round.png.import => pictures/nine-patch-round.png.import (70%) create mode 100644 pictures/бургер.png create mode 100644 pictures/клад.png create mode 100644 pictures/контролер.png create mode 100644 pictures/серпимолот.png create mode 100644 pictures/состояние-исправности-0.png rename состояние-исправности-0.png.import => pictures/состояние-исправности-0.png.import (78%) create mode 100644 pictures/состояние-исправности-1.png rename состояние-исправности-1.png.import => pictures/состояние-исправности-1.png.import (78%) create mode 100644 pictures/состояние-исправности-2.png rename состояние-исправности-2.png.import => pictures/состояние-исправности-2.png.import (78%) rename эмс-бланк-перем.png => pictures/эмс-бланк-перем.png (100%) rename эмс-бланк-перем.png.import => pictures/эмс-бланк-перем.png.import (75%) rename эмс-бланк-пост.png => pictures/эмс-бланк-пост.png (100%) rename эмс-бланк-пост.png.import => pictures/эмс-бланк-пост.png.import (75%) rename эмс-бланк.png => pictures/эмс-бланк.png (100%) rename эмс-бланк.png.import => pictures/эмс-бланк.png.import (70%) delete mode 100644 состояние-исправности-0.png delete mode 100644 состояние-исправности-1.png delete mode 100644 состояние-исправности-2.png diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index fff5805..c83c1b2 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -6,9 +6,9 @@ [ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://Shaders/shader_edu.tres" id="3_3syd3"] [ext_resource type="Texture2D" uid="uid://cfktmk2rowmul" path="res://table/off.png" id="3_qvuyu"] [ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"] -[ext_resource type="Texture2D" uid="uid://co8dxcd8eckjs" path="res://Web.png" id="5_i3nvb"] +[ext_resource type="Texture2D" uid="uid://co8dxcd8eckjs" path="res://pictures/Web.png" id="5_i3nvb"] [ext_resource type="Shader" path="res://Shaders/ray_2.gdshader" id="8_12mng"] -[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="9_0r2qk"] +[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://pictures/nine-patch-round.png" id="9_0r2qk"] [ext_resource type="Script" path="res://scripts/control_panel.gd" id="9_akagi"] [ext_resource type="Script" path="res://scripts/ems_g.gd" id="9_g1wia"] [ext_resource type="Shader" path="res://Shaders/load.gdshader" id="10_lf1xh"] diff --git a/Shaders/loadead.gdshader b/Shaders/loadead.gdshader index 0dc4058..26865a5 100644 --- a/Shaders/loadead.gdshader +++ b/Shaders/loadead.gdshader @@ -31,7 +31,7 @@ uniform bool show_icon = false; // Если false, текстура иконки void fragment() { // Преобразование UV-координат для центрирования начала координат и корректировки в зависимости от аспекта экрана. - float aspect_ratio = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y; + float aspect_ratio = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y; vec2 uv = (UV * 2.0 - 1.0) * vec2(0.3, aspect_ratio); // Нормализация UV координат. // Подсчет кольца (точек и опциональной тени). @@ -42,7 +42,7 @@ void fragment() { float total_angle = 6.283185307; // Полный круг в радианах (2π). float gap = total_angle * gap_ratio; // Вычисление ширины пробела между точками. float spacing = (total_angle - gap) / float(num_points); // Вычисление интервала между точками. - + // Определение направления вращения кольца. float direction = 1.0; // Вращение по часовой стрелке или против. float rotation = TIME * rotation_speed * direction; // Вычисление текущего угла поворота. @@ -63,7 +63,7 @@ void fragment() { // Вычисление вклада точки на основе расстояния. float distance = length(uv - pos); // Расстояние до текущей точки. float contribution = smoothstep(radius + 0.01, radius, distance); // Плавный вклад на основе расстояния. - + if (contribution > 0.0) { // Если вклад точки больше нуля, ring_color = mix(ring_color, dot_color, contribution); // Смешивание с цветом кольца. dot_accum += contribution; // Накопление вклада от точки. @@ -90,10 +90,10 @@ void fragment() { if (show_icon) { // Создание радиальной маски, чтобы иконка была видимой внутри радиуса icon_size. float icon_mask = smoothstep(icon_size, icon_size - 0.005, length(uv)); // Маска для иконки. - + // Нормализация UV-координат для иконки. vec2 icon_uv = (uv / icon_size + vec2(1.0)) / 2.0; // Превращение из диапазона (-icon_size ... +icon_size) в (0 ... 1). - + // Применение вращения иконки, если оно включено. if (enable_icon_rotation) { float icon_angle = TIME * icon_rotation_speed; // Угол вращения на основе времени и скорости вращения. @@ -108,11 +108,11 @@ void fragment() { centered_uv.x * s + centered_uv.y * c); // Применение матрицы вращения. icon_uv = centered_uv + vec2(0.5); // Смещение обратно к нормализованным координатам. } - + vec4 icon_sample = texture(icon_texture, icon_uv); // Получение цвета из текстуры иконки. // Смешивание текстуры иконки с базовым цветом кольца с учетом маски и альфа-канала текстуры. base_color = mix(base_color, icon_sample, icon_mask * icon_sample.a); } - + COLOR = base_color; // Установка финального цвета для текущего пикселя. } \ No newline at end of file diff --git a/kasseta-fs-kd.tscn b/kasseta-fs-kd.tscn index 20c9779..03649ee 100644 --- a/kasseta-fs-kd.tscn +++ b/kasseta-fs-kd.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bdb0bhfu7366l"] -[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="1_1jljp"] +[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://pictures/nine-patch-round.png" id="1_1jljp"] [ext_resource type="Script" path="res://scripts/кассета.gd" id="2_20xal"] [node name="kasseta_fs_kd" type="NinePatchRect"] diff --git a/Web.png b/pictures/Web.png similarity index 100% rename from Web.png rename to pictures/Web.png diff --git a/Web.png.import b/pictures/Web.png.import similarity index 74% rename from Web.png.import rename to pictures/Web.png.import index eb499ab..256dd19 100644 --- a/Web.png.import +++ b/pictures/Web.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://co8dxcd8eckjs" -path="res://.godot/imported/Web.png-c71665e7797af3c541effa7e6a335fc8.ctex" +path="res://.godot/imported/Web.png-dc8815faf5efba2116da493712c8f347.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Web.png" -dest_files=["res://.godot/imported/Web.png-c71665e7797af3c541effa7e6a335fc8.ctex"] +source_file="res://pictures/Web.png" +dest_files=["res://.godot/imported/Web.png-dc8815faf5efba2116da493712c8f347.ctex"] [params] diff --git a/nine-patch-round.png b/pictures/nine-patch-round.png similarity index 100% rename from nine-patch-round.png rename to pictures/nine-patch-round.png diff --git a/nine-patch-round.png.import b/pictures/nine-patch-round.png.import similarity index 70% rename from nine-patch-round.png.import rename to pictures/nine-patch-round.png.import index 84476b2..6fd23cd 100644 --- a/nine-patch-round.png.import +++ b/pictures/nine-patch-round.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cgtg4gbqnuxrc" -path="res://.godot/imported/nine-patch-round.png-61bc031153ce0d2485f8ba950a72df3f.ctex" +path="res://.godot/imported/nine-patch-round.png-d67b419565e5d3ad11857c28e4e157e8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://nine-patch-round.png" -dest_files=["res://.godot/imported/nine-patch-round.png-61bc031153ce0d2485f8ba950a72df3f.ctex"] +source_file="res://pictures/nine-patch-round.png" +dest_files=["res://.godot/imported/nine-patch-round.png-d67b419565e5d3ad11857c28e4e157e8.ctex"] [params] diff --git a/pictures/бургер.png b/pictures/бургер.png new file mode 100644 index 0000000000000000000000000000000000000000..4687854544dbec083fa2ffb9587c209444a9c70f GIT binary patch literal 3705 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 literal 0 HcmV?d00001 diff --git a/pictures/клад.png b/pictures/клад.png new file mode 100644 index 0000000000000000000000000000000000000000..abf97df18e9294179ac0a0a06ed262093fb3e4d1 GIT binary patch literal 4985 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 literal 0 HcmV?d00001 diff --git a/pictures/контролер.png b/pictures/контролер.png new file mode 100644 index 0000000000000000000000000000000000000000..9d205a841fce8f8e874a8940ff45246c3212deb5 GIT binary patch literal 5702 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 literal 0 HcmV?d00001 diff --git a/pictures/серпимолот.png b/pictures/серпимолот.png new file mode 100644 index 0000000000000000000000000000000000000000..009269cbf3bc766b6c8a2ade565e03b26fc95487 GIT binary patch literal 7207 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 literal 0 HcmV?d00001 diff --git a/состояние-исправности-0.png.import b/pictures/состояние-исправности-0.png.import similarity index 78% rename from состояние-исправности-0.png.import rename to pictures/состояние-исправности-0.png.import index 4f6075b..ec0667a 100644 --- a/состояние-исправности-0.png.import +++ b/pictures/состояние-исправности-0.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ce3qpf070wgd2" -path="res://.godot/imported/состояние-исправности-0.png-5c54b931fdcaaeea20ccd26e18d4b7de.ctex" +path="res://.godot/imported/состояние-исправности-0.png-ec804b9c19d2b9ac0d14165a8b0d572a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://состояние-исправности-0.png" -dest_files=["res://.godot/imported/состояние-исправности-0.png-5c54b931fdcaaeea20ccd26e18d4b7de.ctex"] +source_file="res://pictures/состояние-исправности-0.png" +dest_files=["res://.godot/imported/состояние-исправности-0.png-ec804b9c19d2b9ac0d14165a8b0d572a.ctex"] [params] diff --git a/pictures/состояние-исправности-1.png b/pictures/состояние-исправности-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad156fa5581074b4ca00a06c80a61f5c85278d5 GIT binary patch literal 4935 zcmZWtYgiN47M;8w4iX{aB#_FZK+vclPX!?$$U|ch(F*EqK&}l4f{KV(%Onvg5D|P( z1V0;t(ufp+4=Sj)4IpBzT0}&o;O}d@A=>h@?(Xg&1T;A*l+{<*pNLo#OgRZ@7wOdt0`=>^HyGs5kO$6xPC_{48WetxqmTMMKhDtE zafvr%-(k3PNpt)9pz9Z&cXMAd;uJsaKk~5^*z4_P#;jccO?vFCWBG#Rsfl?MNrBH; z*Hus3w{(OU9VaM-i&AE@JR=LH)7M>d7VKdxD9LjH)iW*M6D*KdCL<+Rr99t22e!<+ z%Q{P2{{*$iD)&#BYoGzXK3`CC($Hn^d_Am8bRi%WF6;?lQ|Vs|~-5qzgWslnO*>ZPCBwaueru#=ywPi?l=Q=WFxsS{fuwCMNcO zYL|rhpPHSHAg?FXTY}mL>f{E4!NlNwU;yb4ZvVB-HOZm--rUeFKq)5cvDgmm)S$nu zj_mpaq;=mpFT*^70^8#8Qt{diQs_bl#4t}lEFGyfjQfkdbDjFq?wO~)21@6mU!U(s zj!WvQ+45wrHnZuzdE3}a)4AEY-{@L4??*mFGfNJd2NsbUw)XdCN86Gf@-oVkCUeW5 z6vWIiL?i<_(rCnKL9WO$8O2?0T1;p*lKKud1BrbHqrsP|A;c_AhynM#gNeFNyN&U( zCU`f@a)PD~5Ay9Z0|J=l+rz_m`Ousz%=DcO9P{AJ;X8c$oLEw6xh1m}~W4mSkp^}EH#(O5L@$*4AC`D$q-93 zOokwh4?~M9HL=b0yVA{$;1anHbuuGjv`-Rgr_T28qxQ5ZRzigI+biV9In7Yvc!Ris z#c;$%)l2aUkN;g|<}Apjt8P?7Fy1EZ3agA0m2~iT06LVCS}sMVV_OTel#C8f7Fx9nx zrsoe5GzW&Wj^~s+x`P1pDj8)yK4L=N>x)7?q^qv{G6IOlqrjbkyQ^H+=(~K{Uv#DC zB5A^ICZKkifl~|l!Vfy!IJ2!bXmUv zqi2F>Vj^05a~YO?7*Lqj3NH@mEN}$9G!T0h6;HaoHGUJY^@h#_OZ`j2E2(^w#BvLnAO#$xQWuyd;ARF zGHt~jr)D>ZiKp*4s}1D$8EaTZnZpPiOJ2|mIklP@G^V;;l}qw9N|r3Lu|zRMMoU$qD3B3H6$}$xJ_LaPmq%Q9HDS3H_y+?ni$0W>5D!n? zCY9)_u_Qc`lI-C4msc{Ytm$eIu5{flEC3(?l5xb75th*X%Z=yaKomo$x5{$&wg64N zm?(y@o<4;^8!#r|fzuLp)BQ_iwBk(b{2R^G#l#52X4)irz5;xw>J1oUZCg{0SOxI) zt9yP896$Qg>znf~hwKGyW(l&M3pif(lBZ$ zEtEJ*WZ@Q4j#clHPM5mVZp)_oBTK>=3XICzZyH`48?K_y3mQC_7jvM|-J@ln4`Z(l zE^J{e$7bzKH2zBm738N3$v-D`VuLS%u^u}>|G5&iNd-GuMlqeE{nHZ0PEZwFmGM}I znpk9F8)Zc|?rntB`}cX>x@rq`TtwH||69N&|g23R$qymL4B(xxG zdP7^w2j)y-9twLoS@k~HaheETIO;sAO%-C6Y+}EsAOcf%6R>ng35{3*e=noI35Qw0 zUt#noZZ_e3%)i#ywsgWjhLfc=YAl#a)Hua?6g37_WACK5h2IMNhx?2g!(L=>(F2^a zf4ymY8gYy@&XQ}DOzq%QaHj+lZz*Bpn!z+b;^Su)P4MH`NgE+= z(L%16=slqg$L2rDP|B{lg=2e8gieW>5;d%)TQam4pSTZf7KIX3nd>a6P3~s@eDHuG zI7OOrV__TvY}+bzdQ?o^YNF?lH?6P+uStnC@D3w$v(2#Baov~a(F%(8!1Or{HsC)u z8{518c*ZtScowIOvQ)>QgeAYnbn*_)Zf6{>nUQ{BgWu$R>#d#;9dmL~Ch*}vBEK@= z1Birg`fI~MnrQ0tSFFBjs=}pcqpx~Dl^FTLuYuhb<|zH);-W3+{_X;$1#PH*h15g? zeH)nDWRz`?V*lcR NBEy!4)`iGb{|Chr=b!)p literal 0 HcmV?d00001 diff --git a/состояние-исправности-1.png.import b/pictures/состояние-исправности-1.png.import similarity index 78% rename from состояние-исправности-1.png.import rename to pictures/состояние-исправности-1.png.import index 0e27798..0545032 100644 --- a/состояние-исправности-1.png.import +++ b/pictures/состояние-исправности-1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://byweg7pgt8o4h" -path="res://.godot/imported/состояние-исправности-1.png-3675cd90cab151ef6fac9b2e3babeb44.ctex" +path="res://.godot/imported/состояние-исправности-1.png-b3ce72ab96220f1713af3c4876cdbccb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://состояние-исправности-1.png" -dest_files=["res://.godot/imported/состояние-исправности-1.png-3675cd90cab151ef6fac9b2e3babeb44.ctex"] +source_file="res://pictures/состояние-исправности-1.png" +dest_files=["res://.godot/imported/состояние-исправности-1.png-b3ce72ab96220f1713af3c4876cdbccb.ctex"] [params] diff --git a/pictures/состояние-исправности-2.png b/pictures/состояние-исправности-2.png new file mode 100644 index 0000000000000000000000000000000000000000..759ce223aec3b5135682a385a4341203fe8000d7 GIT binary patch literal 5164 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 literal 0 HcmV?d00001 diff --git a/состояние-исправности-2.png.import b/pictures/состояние-исправности-2.png.import similarity index 78% rename from состояние-исправности-2.png.import rename to pictures/состояние-исправности-2.png.import index aa075f9..e5be007 100644 --- a/состояние-исправности-2.png.import +++ b/pictures/состояние-исправности-2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bvikuv0lbvou8" -path="res://.godot/imported/состояние-исправности-2.png-deccaddb215e53d76d5a2f5971888569.ctex" +path="res://.godot/imported/состояние-исправности-2.png-bca7b95f6cde89856ef4da574dc4c166.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://состояние-исправности-2.png" -dest_files=["res://.godot/imported/состояние-исправности-2.png-deccaddb215e53d76d5a2f5971888569.ctex"] +source_file="res://pictures/состояние-исправности-2.png" +dest_files=["res://.godot/imported/состояние-исправности-2.png-bca7b95f6cde89856ef4da574dc4c166.ctex"] [params] diff --git a/эмс-бланк-перем.png b/pictures/эмс-бланк-перем.png similarity index 100% rename from эмс-бланк-перем.png rename to pictures/эмс-бланк-перем.png diff --git a/эмс-бланк-перем.png.import b/pictures/эмс-бланк-перем.png.import similarity index 75% rename from эмс-бланк-перем.png.import rename to pictures/эмс-бланк-перем.png.import index 3e2fb03..300a1e8 100644 --- a/эмс-бланк-перем.png.import +++ b/pictures/эмс-бланк-перем.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ijdfo2mml54" -path="res://.godot/imported/эмс-бланк-перем.png-011e0d06ef6ddca754d1f3d8e11a448c.ctex" +path="res://.godot/imported/эмс-бланк-перем.png-033d3a20f21f565460affa02e225fff8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://эмс-бланк-перем.png" -dest_files=["res://.godot/imported/эмс-бланк-перем.png-011e0d06ef6ddca754d1f3d8e11a448c.ctex"] +source_file="res://pictures/эмс-бланк-перем.png" +dest_files=["res://.godot/imported/эмс-бланк-перем.png-033d3a20f21f565460affa02e225fff8.ctex"] [params] diff --git a/эмс-бланк-пост.png b/pictures/эмс-бланк-пост.png similarity index 100% rename from эмс-бланк-пост.png rename to pictures/эмс-бланк-пост.png diff --git a/эмс-бланк-пост.png.import b/pictures/эмс-бланк-пост.png.import similarity index 75% rename from эмс-бланк-пост.png.import rename to pictures/эмс-бланк-пост.png.import index 0ed9c66..ca59d41 100644 --- a/эмс-бланк-пост.png.import +++ b/pictures/эмс-бланк-пост.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b15flrfytxkop" -path="res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex" +path="res://.godot/imported/эмс-бланк-пост.png-61a20a1f6fe7b6142ff882433918f09a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://эмс-бланк-пост.png" -dest_files=["res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex"] +source_file="res://pictures/эмс-бланк-пост.png" +dest_files=["res://.godot/imported/эмс-бланк-пост.png-61a20a1f6fe7b6142ff882433918f09a.ctex"] [params] diff --git a/эмс-бланк.png b/pictures/эмс-бланк.png similarity index 100% rename from эмс-бланк.png rename to pictures/эмс-бланк.png diff --git a/эмс-бланк.png.import b/pictures/эмс-бланк.png.import similarity index 70% rename from эмс-бланк.png.import rename to pictures/эмс-бланк.png.import index 7b5478d..aefe55c 100644 --- a/эмс-бланк.png.import +++ b/pictures/эмс-бланк.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dkef6xwxwdxi8" -path="res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex" +path="res://.godot/imported/эмс-бланк.png-8ff830647ca6b31294e66f002eb30e08.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://эмс-бланк.png" -dest_files=["res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex"] +source_file="res://pictures/эмс-бланк.png" +dest_files=["res://.godot/imported/эмс-бланк.png-8ff830647ca6b31294e66f002eb30e08.ctex"] [params] diff --git a/table/socket_status.tscn b/table/socket_status.tscn index 1f6040a..09ea766 100644 --- a/table/socket_status.tscn +++ b/table/socket_status.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=6 format=3 uid="uid://dn3jp4r8ij3rf"] -[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="1_bsrew"] -[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="2_b2kjm"] -[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://эмс-бланк-перем.png" id="3_odpjv"] +[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://pictures/эмс-бланк.png" id="1_bsrew"] +[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://pictures/эмс-бланк-пост.png" id="2_b2kjm"] +[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://pictures/эмс-бланк-перем.png" id="3_odpjv"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q1ixs"] bg_color = Color(0, 0, 0, 0.490196) diff --git a/table/элемент-в.tscn b/table/элемент-в.tscn index 2c88d2b..6e77dee 100644 --- a/table/элемент-в.tscn +++ b/table/элемент-в.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=12 format=3 uid="uid://p2suppildvq0"] -[ext_resource type="Texture2D" uid="uid://ce3qpf070wgd2" path="res://состояние-исправности-0.png" id="1_2n7he"] -[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="2_4b43i"] -[ext_resource type="Texture2D" uid="uid://byweg7pgt8o4h" path="res://состояние-исправности-1.png" id="2_38t58"] +[ext_resource type="Texture2D" uid="uid://ce3qpf070wgd2" path="res://pictures/состояние-исправности-0.png" id="1_2n7he"] +[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://pictures/nine-patch-round.png" id="2_4b43i"] +[ext_resource type="Texture2D" uid="uid://byweg7pgt8o4h" path="res://pictures/состояние-исправности-1.png" id="2_38t58"] [ext_resource type="Shader" path="res://Shaders/opt_btn.gdshader" id="2_ecsml"] -[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="3_4kmgr"] -[ext_resource type="Texture2D" uid="uid://bvikuv0lbvou8" path="res://состояние-исправности-2.png" id="3_i2t3v"] -[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="4_omove"] -[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://эмс-бланк-перем.png" id="5_jia67"] +[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://pictures/эмс-бланк.png" id="3_4kmgr"] +[ext_resource type="Texture2D" uid="uid://bvikuv0lbvou8" path="res://pictures/состояние-исправности-2.png" id="3_i2t3v"] +[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://pictures/эмс-бланк-пост.png" id="4_omove"] +[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://pictures/эмс-бланк-перем.png" id="5_jia67"] [sub_resource type="GDScript" id="GDScript_fbktk"] script/source = "@tool diff --git a/table/элемент-эмс.tscn b/table/элемент-эмс.tscn index b4d32e3..9659f4d 100644 --- a/table/элемент-эмс.tscn +++ b/table/элемент-эмс.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=7 format=3 uid="uid://bnlkbbn7b4a3k"] -[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="1_lmmwb"] -[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="3_2trq1"] -[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="4_vgjvf"] -[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://эмс-бланк-перем.png" id="5_1heoc"] +[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://pictures/nine-patch-round.png" id="1_lmmwb"] +[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://pictures/эмс-бланк.png" id="3_2trq1"] +[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://pictures/эмс-бланк-пост.png" id="4_vgjvf"] +[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://pictures/эмс-бланк-перем.png" id="5_1heoc"] [sub_resource type="GDScript" id="GDScript_fbktk"] script/source = "@tool diff --git a/состояние-исправности-0.png b/состояние-исправности-0.png deleted file mode 100644 index 33966d1ec3af8bef1ca840fc33cf3c0883d6ab5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4148 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 From 4ec99ce48137d157fb46868cd83407932d27908d Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 11 Feb 2025 20:01:26 +0300 Subject: [PATCH 9/9] =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD_MP550.tscn | 26 +++++++++++++++++++++----- Shaders/gradient.gdshader | 11 +++++++++++ pictures/бургер.png.import | 34 ++++++++++++++++++++++++++++++++++ pictures/клад.png.import | 34 ++++++++++++++++++++++++++++++++++ pictures/контролер.png.import | 34 ++++++++++++++++++++++++++++++++++ pictures/серпимолот.png.import | 34 ++++++++++++++++++++++++++++++++++ scripts/PRD.gd | 4 +++- 7 files changed, 171 insertions(+), 6 deletions(-) create mode 100644 Shaders/gradient.gdshader create mode 100644 pictures/бургер.png.import create mode 100644 pictures/клад.png.import create mode 100644 pictures/контролер.png.import create mode 100644 pictures/серпимолот.png.import diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index c83c1b2..403553a 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=53 format=3 uid="uid://cvor2jm4xk3ha"] +[gd_scene load_steps=55 format=3 uid="uid://cvor2jm4xk3ha"] [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="Script" path="res://table/table.gd" id="2_vmbyo"] +[ext_resource type="Shader" path="res://Shaders/gradient.gdshader" id="2_vn1it"] [ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://Shaders/shader_edu.tres" id="3_3syd3"] [ext_resource type="Texture2D" uid="uid://cfktmk2rowmul" path="res://table/off.png" id="3_qvuyu"] [ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"] @@ -73,6 +74,11 @@ TabContainer/styles/tab_focus = SubResource("StyleBoxTexture_d322q") TabContainer/styles/tab_selected = SubResource("StyleBoxTexture_8j02b") TabContainer/styles/tabbar_background = SubResource("StyleBoxTexture_ls6vm") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_3q35w"] +shader = ExtResource("2_vn1it") +shader_parameter/outerRadius = 8.258 +shader_parameter/MainAlpha = 0.653 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pxarn"] bg_color = Color(0.356863, 0.278431, 0.356863, 1) @@ -137,12 +143,12 @@ shader_parameter/ring_radius = 0.2 shader_parameter/num_points = 8 shader_parameter/gap_ratio = 0.102 shader_parameter/all_dots_same_size = false -shader_parameter/dot_color_start = Color(0.5, 0, 0.5, 1) -shader_parameter/dot_color_end = Color(0.8, 0.5, 1, 1) +shader_parameter/dot_color_start = Color(0.893646, 0.893797, 0.859099, 1) +shader_parameter/dot_color_end = Color(0.888169, 0.740534, 1, 1) shader_parameter/enable_shadow = true shader_parameter/shadow_color = Color(0, 0, 0, 0.35) shader_parameter/shadow_offset = Vector2(0.03, 0.01) -shader_parameter/rotation_speed = 1.5 +shader_parameter/rotation_speed = 4.995 shader_parameter/icon_size = 0.15 shader_parameter/enable_icon_rotation = false shader_parameter/reverse_icon_rotation = false @@ -185,11 +191,21 @@ theme = SubResource("Theme_k5ur4") color = Color(0.356863, 0.278431, 0.356863, 1) metadata/_edit_lock_ = true +[node name="gradient" type="ColorRect" parent="Background"] +material = SubResource("ShaderMaterial_3q35w") +layout_mode = 0 +offset_left = -1149.0 +offset_top = -31.0 +offset_right = 3008.0 +offset_bottom = 1103.0 +metadata/_edit_lock_ = true + [node name="side_panel" type="ColorRect" parent="Background"] layout_mode = 0 offset_right = 216.0 offset_bottom = 988.0 -color = Color(0.586231, 0.481877, 0.585869, 1) +color = Color(0.6, 0.5, 0.6, 0.9) +metadata/_edit_lock_ = true [node name="select_prd" type="Button" parent="Background/side_panel"] layout_mode = 0 diff --git a/Shaders/gradient.gdshader b/Shaders/gradient.gdshader new file mode 100644 index 0000000..4f01989 --- /dev/null +++ b/Shaders/gradient.gdshader @@ -0,0 +1,11 @@ +shader_type canvas_item; + +uniform float outerRadius : hint_range(0.0, 900.0) = 1.0; +uniform float MainAlpha : hint_range(0.0, 1.0) = 1.0; + +void fragment() { + float x = abs(UV.x-.5)*2.0; + float y = abs(UV.y-.5)*2.0; + float v = (sqrt((x*x)+(y*y))/outerRadius); + COLOR = vec4(0,0,0,v*MainAlpha); +} diff --git a/pictures/бургер.png.import b/pictures/бургер.png.import new file mode 100644 index 0000000..ef7a8f3 --- /dev/null +++ b/pictures/бургер.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://671got5vbput" +path="res://.godot/imported/бургер.png-a4597b7e50068e8e31a811680c5fcb22.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://pictures/бургер.png" +dest_files=["res://.godot/imported/бургер.png-a4597b7e50068e8e31a811680c5fcb22.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/pictures/клад.png.import b/pictures/клад.png.import new file mode 100644 index 0000000..ce391ef --- /dev/null +++ b/pictures/клад.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://didrk0pcfgirg" +path="res://.godot/imported/клад.png-9e9ce66d03446d5f22e89a61ca4eb967.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://pictures/клад.png" +dest_files=["res://.godot/imported/клад.png-9e9ce66d03446d5f22e89a61ca4eb967.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/pictures/контролер.png.import b/pictures/контролер.png.import new file mode 100644 index 0000000..42422a2 --- /dev/null +++ b/pictures/контролер.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckvwvec0hop37" +path="res://.godot/imported/контролер.png-05a38fc04c4e4ced2b9f7faad6a4134d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://pictures/контролер.png" +dest_files=["res://.godot/imported/контролер.png-05a38fc04c4e4ced2b9f7faad6a4134d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/pictures/серпимолот.png.import b/pictures/серпимолот.png.import new file mode 100644 index 0000000..094ffd8 --- /dev/null +++ b/pictures/серпимолот.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxn1guhi7lg3i" +path="res://.godot/imported/серпимолот.png-2793ea1f438c319da5ed90b40bb55968.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://pictures/серпимолот.png" +dest_files=["res://.godot/imported/серпимолот.png-2793ea1f438c319da5ed90b40bb55968.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scripts/PRD.gd b/scripts/PRD.gd index b8929bf..79c305d 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -215,7 +215,9 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void: if len(Constants.EMS_G_PORT_DATA_HOLDER) == 32: emit_signal('read_ems_g_finish') $ISA.text = 'ISA: ' + str(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[Constants.BASE_PORTS.UG+6] & 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)