From 5dac4fae5edade966e643ea744c9f09b6d74a714 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 3 Dec 2025 12:09:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D1=81=D0=B5=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=A4=D0=A1=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81?= =?UTF-8?q?=D0=B8=D1=82=20=D0=BE=D1=82=20=D1=81=D0=B2=D1=8F=D0=B7=D0=B8=20?= =?UTF-8?q?=D1=81=20=D0=9A=D0=90=D0=9F=D0=A1=20=D0=A0=D0=9F=D0=91=20=D0=B8?= =?UTF-8?q?=20=D0=AF=D0=A3-07.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.gd | 4 ++-- scenes/работа/работа.tscn | 2 +- scripts/prd.gd | 35 ++++++++++++++++++++++++++++------- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 6ae374b5..54ab937e 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -160,7 +160,7 @@ func init_fs_failed(): var sectors_count = $canvas.fs_default_colors.size() fs_failed.resize(sectors_count) for i in fs_failed.size(): - fs_failed[i] = AntBandState.ANT_BAND_READY + fs_failed[i] = AntBandState.ANT_BAND_FAILED ## Производит инициализацию. @@ -593,7 +593,7 @@ func on_interfer_prinuditelno(prenuditelno_sectors, btns): ## Вызывается при получении информации о состоянии модулей ФС от КАПС РПБ. func on_fs_update_state(fs_dict: Dictionary): for key in fs_dict.keys(): - fs_failed[key] = fs_dict[key].isg + fs_failed[key] = fs_dict[key].ready func on_btn_center_toggled(toggled_on: bool) -> void: diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 8282d3fc..c1eb2df2 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -383,8 +383,8 @@ texture_normal = ExtResource("14_ggrwd") [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] [connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"] -[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] [connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] +[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] [connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"] [connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"] [connection signal="pressed" from="btn_all_work" to="." method="_on_btn_all_work_pressed"] diff --git a/scripts/prd.gd b/scripts/prd.gd index 33f804f8..33c6e7e8 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -119,6 +119,9 @@ class Fs: var freq_caps_rx: float = 0.0 ## Частота принятая от КАПС РПБ var width_caps_rx: float = 0.0 ## Ширина полосы принятая от КАПС РПБ var msvk: Array + var ready: bool = false ## Готовность сектора к излучению + var caps_online: bool = false ## Состояние связи с КАПС РПБ + var yau_07_online: bool = false ## Состояние связи ЯУ-07 signal update_modulation(index) @@ -148,7 +151,10 @@ class Fs: val = tools.set_bits(u.isa_ports[um_port], um_code_tx, 0x0007) data_arr.append(um_port) data_arr.append(val) - + + # Установка готовности модуля ФС к излучению + func set_ready(): + ready = isg and caps_online and yau_07_online class PRD: enum STATE_DEVICE { @@ -208,7 +214,6 @@ class PRD: if port == fs.um_port: fs.um_code_rx = u.isa_ports[port] & 0x7 - func on_line_changed(unit_ems): if not unit_ems.online: yemsg_board.ems_load = yemsg_board.LoadState.NOT_DEFINED @@ -303,7 +308,6 @@ class PRD: break return STATE_DEVICE.NONE if all_online else STATE_DEVICE.ERROR - func execute_cmd(): if not len(cmd_array): return if unit_yau07.cmd_state != unit_yau07.CmdState.DONE: return @@ -338,21 +342,24 @@ class PRD: yemsg_board.set_wait() log.error('Не удалось прочитать файл настроек ячейки ЭМС-Г %s' %abs_dir) - func on_update_modulation(index): yemsg_board.add_cmd(index/4, fs_dic[index].modulation) func set_um(data_arr): cmd_array.append([unit_yau07.CmdCode.WRITE_ISA, data_arr]) - - + func set_fs_caps_online(caps_online: bool): + for fs in fs_dic.values(): + fs.caps_online = caps_online + fs.set_ready() + func _ready() -> void: check_dir() for prd_name in PRD_NAMES: var unit_prd = network.get_unit_instance(prd_name) var new_prd = PRD.new(prd_name, unit_prd) prd_dict[prd_name] = new_prd + new_prd.unit_yau07.connect('line_changed', on_yau07_line_changed.bind(new_prd)) var unit_control = TestPRD.new({'unit_prd': unit_prd}, new_prd.cmd_array) add_child(unit_control) new_prd.unit_control = unit_control @@ -367,6 +374,7 @@ func _ready() -> void: fs_caps_id[FS_PRD[key][1]] = key var unit_caps = network.get_unit_instance('уарэп-капсрпб') unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received')) + unit_caps.connect('line_changed', Callable(self, 'on_caps_line_changed')) signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(PrdState.CONTROL)) signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(PrdState.WORK)) var unit_nav = network.get_unit_instance('навигация') @@ -433,7 +441,6 @@ func update_fs_state(ecms, trenaz_mode: bool): prd_module.set_um(um_data_array) - ## Проверяет ниличие директории, если их нет, создаёт func check_dir(): var dir = DirAccess.open(yemsconsts.emsg_files_folder) @@ -461,6 +468,7 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb): var fs_module = fs_dict[ii] if fs.has('isg'): fs_module.isg = int(fs['isg']) + fs_module.set_ready() if fs.has('pow'): fs_module.pow_caps_rx = int(fs['pow']) if fs.has('freq'): @@ -479,3 +487,16 @@ func on_mode_changed(changed_mode: int) -> void: func on_navi_data_received(data: Dictionary): course = data.get('k', 0.0) + + +func on_caps_line_changed(unit_caps): + for pribor_prd in prd_dict.values(): + pribor_prd.set_fs_caps_online(unit_caps.online) + signaller.emit_signal('fs_update_state', fs_dict) + + +func on_yau07_line_changed(unit_yau07, prd_pribor): + for fs in prd_pribor.fs_dic.values(): + fs.yau_07_online = unit_yau07.online + fs.set_ready() + signaller.emit_signal('fs_update_state', fs_dict)