From cb4c3eceafa76b17e0f6da49ce4949a383a44743 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Fri, 26 Dec 2025 11:12:57 +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=9E=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8=20?= =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=205=20=D1=81=D0=B5=D0=BA=D1=83=D0=BD?= =?UTF-8?q?=D0=B4=20=D0=BD=D0=B5=D1=82=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=20=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=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 --- interfers.gd | 37 ++++++++++++++++++++++++------------- main.gd | 2 +- threats.gd | 12 ++++++------ 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/interfers.gd b/interfers.gd index e380951..db6d9e5 100644 --- a/interfers.gd +++ b/interfers.gd @@ -1,11 +1,5 @@ extends Node -var id_array: Array # Массив id целей -var interfers : Dictionary # Словарь целей -var msg_counter : int = 0 # Счётчик отправленных пакетов -var g_table # таблица с помехами - - const TableCellType1 = preload('res://ячейка-1.tscn') const TableCellType2 = preload('res://кнопка-3.tscn') const TableCellType3 = preload('res://кнопка-4.tscn') @@ -83,6 +77,14 @@ const INTERFER_NAMES: Dictionary = { 'SRNI1_LIT4.pcm', 'SRNI1_LIT5.pcm'] } +const INTERFER_OFF_TIMEOUT = 5.0 # Интервал выключения помехи + +var id_array: Array # Массив id целей +var interfers : Dictionary # Словарь целей +var msg_counter : int = 0 # Счётчик отправленных пакетов +var g_table # таблица с помехами +var now = 0.0 # Время с момента запуска приложения + # Помеха class Interfer: var get_data: Dictionary = { @@ -105,6 +107,7 @@ class Interfer: var svk: int = 0 var row_id: int var active_fs: fs.Fs + var rx_tick: = 0 func _init(data: Dictionary): options.merge(data, true) @@ -142,6 +145,7 @@ func set_interfer(data): on_row_add(g_table, interfers[data['ispp']]) var cmd_state: int = fs.set_fs(interfers[data['ispp']]) interfers[data['ispp']].svk = cmd_state + interfers[data['ispp']].rx_tick = now; var cell = g_table.get_node2(COLUMN_SVK, interfers[data['ispp']].row_id) cell.select(cmd_state) @@ -221,14 +225,14 @@ func on_row_pressed(i_row: int, table): pass -func off_interfer(json_data): - if not interfers.has(json_data['ispp']): return - var row_id = interfers[json_data['ispp']].row_id - if interfers[json_data['ispp']] != null: - if interfers[json_data['ispp']].active_fs != null: - fs.fs_off(interfers[json_data['ispp']].active_fs) +func off_interfer(interfer_id): + if not interfers.has(interfer_id): return + var row_id = interfers[interfer_id].row_id + if interfers[interfer_id] != null: + if interfers[interfer_id].active_fs != null: + fs.fs_off(interfers[interfer_id].active_fs) if g_table.get_rows_count() > row_id: - interfers.erase(json_data['ispp']) + interfers.erase(interfer_id) g_table.remove_row(row_id) for i in g_table.get_rows_count(): var interfer = g_table.get_node_user_data(0, i) @@ -245,3 +249,10 @@ func check_interfers_state(): interfer.svk = cmd_state var cell = g_table.get_node2(COLUMN_SVK, interfer.row_id) cell.select(cmd_state) + + +func _process(delta): + now += delta + for key in interfers: + if (now - interfers[key].rx_tick) > INTERFER_OFF_TIMEOUT: + off_interfer(key) diff --git a/main.gd b/main.gd index bb3c9f3..0e11897 100644 --- a/main.gd +++ b/main.gd @@ -64,7 +64,7 @@ func on_receive(data): if not json_data.has('ss'): return if not ((json_data['ss'] is int) or (json_data['ss'] is float)): return if json_data['krp'] == 'off': - Interfers.off_interfer(json_data) + Interfers.off_interfer(json_data['ispp']) sock.put_packet(Interfers.get_msg7_data()) return if not json_data.has('powp'): return diff --git a/threats.gd b/threats.gd index 2bfa493..0a039e2 100644 --- a/threats.gd +++ b/threats.gd @@ -80,17 +80,17 @@ const M_PROTO = ['<неопр.>', '3dlink', 'skyhopperpro', 'picardiooem', 'solo 'mavlink', 'ltm', 'hc12', 'df1', ] const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO, COLUMN_REC] -const ID_ARRAY_LEN = 150 # Размер пула номеров целей -const MIN_FLIC_TIME = 1.0 # минимальное время мерцания цели +const ID_ARRAY_LEN = 150 # Размер пула номеров целей +const MIN_FLIC_TIME = 1.0 # минимальное время мерцания цели -var id_array: Array # Массив id целей +var id_array: Array # Массив id целей var threats : Dictionary # Словарь целей -var msg_counter : int = 0 # Счётчик отправленных пакетов +var msg_counter : int = 0 # Счётчик отправленных пакетов var g_table: GridContainer var send_flag = true var rkrp = [] -var now = 0.0 # Время с момента запуска приложения -var bpo_mode: int = 1 # Режим работы блока БПО +var now = 0.0 # Время с момента запуска приложения +var bpo_mode: int = 1 # Режим работы блока БПО # Номера колонок var COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO], [COLUMN_REC, rkrp]]