From 022b93845133e344ad0ae2f4a3b2416b7dcef03d Mon Sep 17 00:00:00 2001 From: lepshiy Date: Fri, 7 Feb 2025 11:03:19 +0300 Subject: [PATCH 1/4] =?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/4] =?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/4] 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/4] =?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