From b444bb4d5e36f2fa3dc0ff140d123a435171a407 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Sep 2025 19:37:45 +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=20interfer=5Fresized=20=D0=B8=20=D0=BE=D1=82=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B9=D0=BC=D0=B5=D1=80=D1=83=20=D0=BC=D0=B0=D0=B3=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D1=87=D0=B8=D1=81=D0=BB=D0=BE?= =?UTF-8?q?=20=D0=B2=20=D0=BF=D0=BE=D1=80=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/scroll-ecm-list.gd | 3 +++ scripts/interfer.gd | 6 +++--- scripts/prd.gd | 1 + scripts/pribor-prd.gd | 22 ++++++++-------------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index e437417..7acaa67 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -121,6 +121,7 @@ func on_interfer_new(ecm, table_index): func on_interfer_off(ecm, ecms, thrs, table_index): + var sz = ecms.size() $table.remove_row(table_index[ecm.ispp]) rehash(table_index) ecms.erase(ecm.ispp) @@ -132,6 +133,8 @@ func on_interfer_off(ecm, ecms, thrs, table_index): $table.get_selected_rows(sel_rows) if not len(sel_rows): signaller.emit_signal('interfer_selected', null) + if sz != ecms.size(): + interfer.call_deferred('emit_signal', 'interfer_resized', ecms) ## Перестраивает индекс таблицы. Вызывать при удалении строки diff --git a/scripts/interfer.gd b/scripts/interfer.gd index f3c38ef..c1ca8c5 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -206,7 +206,6 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void: if not unit0.json_dic.has('msvk'): return if not (unit0.json_dic['msvk'] is Array): return var msvk = unit0.json_dic['msvk'] - var sz: = ecms.size() for dic_msvk in msvk: if not (dic_msvk is Dictionary): continue if dic_msvk.has('ispp'): @@ -220,8 +219,6 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void: ecm.set_from_dic(dic_msvk) ecm.krp = INTERFER_OFF send_ecm(ecm, unit0) - if sz != ecms.size(): - call_deferred('emit_signal', 'interfer_resized', ecms) ## Вызыватся, когда пользователь выбрал помеху и выбраны цели. @@ -282,6 +279,7 @@ func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void: func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void: + var sz = ecms.size() var ispp: int = 0 if interfer_name == 'k1': param['dur'] = 1.0 # Необходимо добавить параметры управления @@ -326,6 +324,8 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf thrs.erase(ispp) ecm.tick_tx = Time.get_ticks_msec() send_ecm(ecm, u) + if sz != ecms.size(): + call_deferred('emit_signal', 'interfer_resized', ecms) func send_ecm(ecm, unit0) -> void: diff --git a/scripts/prd.gd b/scripts/prd.gd index 7a8766f..ebc97a3 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -330,6 +330,7 @@ func update_fs_state(ecms): for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД if prd_module.state != PrdState.WORK: continue if not prd_module.unit_yau07.online: continue + prd_module.cmd_array.append([prd_module.unit_yau07.CmdCode.WRITE_ISA, [prd_module.yemsg_board.base_addr_isa, 6666]]) var um_data_array: Array = [] for fs in prd_module.fs_dic.values(): if not prd_module.ug_online: continue diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index af34306..57b145c 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -68,8 +68,9 @@ class TestPRD extends Node: var control_timer: Timer = Timer.new() var ems_6666_timer: Timer = Timer.new() signal control_is_over(control_results, power_result) - var flag_fs_turn_on: bool = false - var flag_fs_turn_off: bool = false + + + var ecms: Dictionary ## Словарь помеховых воздействий ## Инициализация аргуметнов func _init(init_data: Dictionary) -> void: @@ -133,7 +134,7 @@ class TestPRD extends Node: _handle_fs_turn_on_state() state = STATE_MASHINE.FS_WORK STATE_MASHINE.FS_WORK: - if flag_fs_turn_on: + if ecms.size(): _handle_fs_work_state() STATE_MASHINE.CHEK_KASSETA_Y5: if block_kasseta_y5_config['yau07']: @@ -205,7 +206,7 @@ class TestPRD extends Node: func _handle_init_state() -> void: control_label.text = 'Выполняется инициализация ФС-%s' % current_litera if current_litera in [1, 2, 3, 4, 5, 6, 7]: - if flag_fs_turn_off: + if not ecms.size(): state = STATE_MASHINE.FS_TURN_ON else: control_results = on_control_result(block_ip_config, control_results) @@ -268,7 +269,6 @@ class TestPRD extends Node: func _handle_fs_turn_off_state() -> void: control_label.text = 'Выполняется отключение ФС-%s' % current_litera - flag_fs_turn_off = false manage_fs(false, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM) @@ -295,18 +295,12 @@ class TestPRD extends Node: _determine_self_name() var fs_mapping = _create_fs_mapping(self_name) signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping)) - var unit_caps = network.get_unit_instance('уарэп-капсрпб') - unit_caps.connect('data_received', Callable(self, 'on_interfer_status')) + interfer.connect('interfer_resized', Callable(self, 'on_interfer_resized')) unit_prd.connect('data_received', Callable(self, 'on_data_received')) - func on_interfer_status(packet_status: Object) -> void: - if packet_status.json_dic.msvk.size() > 0 and not flag_fs_turn_on: - flag_fs_turn_on = true - print_debug('Излучение') - elif packet_status.json_dic.msvk.size() == 0 and not flag_fs_turn_off: - flag_fs_turn_off = true - print_debug('Все тихо') + func on_interfer_resized(ecms_dic: Dictionary) -> void: + ecms = ecms_dic func _determine_self_name() -> void: