From c10b484396c14cfe02f0b358c9ac9a8208aebff4 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 15 Apr 2025 15:32:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=A0=D0=B0=D1=81=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82?= =?UTF-8?q?=D0=B0=207=20=D0=BE=D1=82=20=D0=9A=D0=90=D0=9F=D0=A1=20=D0=A0?= =?UTF-8?q?=D0=9F=D0=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.gd | 7 ++- scripts/prd.gd | 98 ++++++++++++++++++++++++++++------------- scripts/signaller.gd | 5 +++ 3 files changed, 78 insertions(+), 32 deletions(-) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index bd6e549c..f072984a 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -130,7 +130,7 @@ func _ready(): signaller.connect('fs_update_color', Callable(self, 'on_fs_update_color')) interfer.connect('interfer_update', Callable(self, 'on_interfer_new')) signaller.connect('interfer_prinuditelno', Callable(self, 'on_chk_interfer_prinuditelno')) - + signaller.connect('fs_update_state', Callable(self, 'on_fs_update_state')) func on_chk_interfer_prinuditelno(_interfer_sectors): $chk_auto.set_pressed_no_signal(false) @@ -505,3 +505,8 @@ func on_interfer_prinuditelno (prenuditelno_sectors, btns): for btn in btns: btn.set_pressed(false) set_btns_disabled(true, btn) + + +## Вызывается при получении информации о состоянии модулей ФС от КАПС РПБ. +func on_fs_update_state(fs_dict: Dictionary): + pass diff --git a/scripts/prd.gd b/scripts/prd.gd index 69dedf2b..40917a02 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -53,39 +53,42 @@ const PRD_NAMES: Array = [ 'уарэп-яу07-4в', 'уарэп-яу07-4к', ] -## Соответствие модулей ФС их нахождуению в приборе ПРД +## Соответствие модулей ФС их нахождуению в приборе ПРД и номеру от КАПС РПБ const FS_PRD: Dictionary = { - 0: ['уарэп-яу07-1к'], - 1: ['уарэп-яу07-4к'], - 2: ['уарэп-яу07-3к'], - 3: ['уарэп-яу07-2к'], - 4: ['уарэп-яу07-1н'], - 5: ['уарэп-яу07-4н'], - 6: ['уарэп-яу07-3н'], - 7: ['уарэп-яу07-2н'], - 8: ['уарэп-яу07-1н'], - 9: ['уарэп-яу07-4н'], - 10: ['уарэп-яу07-3н'], - 11: ['уарэп-яу07-2н'], - 12: ['уарэп-яу07-1в'], - 13: ['уарэп-яу07-4в'], - 14: ['уарэп-яу07-3в'], - 15: ['уарэп-яу07-2в'], - 16: ['уарэп-яу07-1в'], - 17: ['уарэп-яу07-4в'], - 18: ['уарэп-яу07-3в'], - 19: ['уарэп-яу07-2в'], - 20: ['уарэп-яу07-1к'], - 21: ['уарэп-яу07-4к'], - 22: ['уарэп-яу07-3к'], - 23: ['уарэп-яу07-2к'], - 24: ['уарэп-яу07-1к'], - 25: ['уарэп-яу07-4к'], - 26: ['уарэп-яу07-3к'], - 27: ['уарэп-яу07-2к'], } + 0: ['уарэп-яу07-1к', 17], + 1: ['уарэп-яу07-4к', 65], + 2: ['уарэп-яу07-3к', 49], + 3: ['уарэп-яу07-2к', 33], + 4: ['уарэп-яу07-1н', 18], + 5: ['уарэп-яу07-4н', 66], + 6: ['уарэп-яу07-3н', 50], + 7: ['уарэп-яу07-2н', 34], + 8: ['уарэп-яу07-1н', 19], + 9: ['уарэп-яу07-4н', 66], + 10: ['уарэп-яу07-3н', 51], + 11: ['уарэп-яу07-2н', 35], + 12: ['уарэп-яу07-1в', 20], + 13: ['уарэп-яу07-4в', 68], + 14: ['уарэп-яу07-3в', 52], + 15: ['уарэп-яу07-2в', 36], + 16: ['уарэп-яу07-1в', 21], + 17: ['уарэп-яу07-4в', 69], + 18: ['уарэп-яу07-3в', 53], + 19: ['уарэп-яу07-2в', 37], + 20: ['уарэп-яу07-1к', 22], + 21: ['уарэп-яу07-4к', 70], + 22: ['уарэп-яу07-3к', 38], + 23: ['уарэп-яу07-2к', 54], + 24: ['уарэп-яу07-1к', 23], + 25: ['уарэп-яу07-4к', 71], + 26: ['уарэп-яу07-3к', 39], + 27: ['уарэп-яу07-2к', 55], } + +var fs_dict: Dictionary ## Словарь с модулями ФС +var prd_dict: Dictionary ## Словарь с приборами ПРД + +var fs_caps_id: Dictionary ## Словарь соответствия номеров ФС от КАПС РПБ внутрипрограммной нумерации -var fs_dict: Dictionary ## Словарь с модулями ФС -var prd_dict: Dictionary ## Словарь с приборами ПРД class Fs: const UM_PORTS: Dictionary = { @@ -111,6 +114,10 @@ class Fs: var um_port: int = 0 ## Порт для угла места var um_code_tx: int = 0 ## Код угла места для отправки в прибор var um_code_rx: int = 0 ## Текущий код угла места + var isg: int = 2 ## Состояние модуля fs от КАПС РПБ + var pow_caps_rx: float = 0.0 ## Мощность излучения принятая от КАПС РПБ + var freq_caps_rx: float = 0.0 ## Частота принятая от КАПС РПБ + var width_caps_rx: float = 0.0 ## Ширина полосы принятая от КАПС РПБ signal update_modulation(index) @@ -268,6 +275,12 @@ func _ready() -> void: prd_dict[fs.prd_name].fs_dic[key] = fs fs.connect('update_modulation', prd_dict[fs.prd_name].on_update_modulation.bind(fs.index)) + for key in FS_PRD.keys(): + fs_caps_id[FS_PRD[key][1]] = key + var unit_caps_key = settings.get_unit_key('уарэп-капсрпб') + var unit_caps = network.units[unit_caps_key] + unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind()) + ## Функция возвращает массив с индексами модулей ФС для выбранной помехи func get_fs_index(ecm, fs_index_arr): @@ -325,3 +338,26 @@ func check_dir(): var dir = DirAccess.open(yemsconsts.emsg_files_folder) if dir: return else: DirAccess.make_dir_absolute(yemsconsts.emsg_files_folder) + + +## Производит приём состояния модулей ФС. +func on_data_capsrpb_received(unit: capsrpb.CapsRpb): + if not unit.json_dic.has('ts'): return + if unit.json_dic['ts'] != 7: return + if not unit.json_dic.has('msfs'): return + + var msfs = unit.json_dic['msfs'] + for fs in msfs: + if fs is Dictionary: + if not fs.has('nmfs'): return + var nmfs = int(fs['nmfs']) + var fs_module = fs_dict[fs_caps_id[nmfs]] + if fs.has('isg'): + fs_module.isg = int(fs['isg']) + if fs.has('pow'): + fs_module.pow_caps_rx = int(fs['pow']) + if fs.has('freq'): + fs_module.freq_caps_rx = int(fs['freq']) + if fs.has('width'): + fs_module.width_caps_rx = int(fs['width']) + signaller.emit_signal('fs_update_state', fs_dict) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index 51fdd010..447a12e9 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -152,6 +152,11 @@ signal th_aoa_update(threats: Dictionary) signal fs_update_color(ecms: Dictionary) +## Вызывается при получении информации о состоянии модулей ФС от КАПС РПБ.[br] +## [param ecms] - <...> +signal fs_update_state(fs_dict: Dictionary) + + signal socket_error(error: String)