Доработка. Отключение помехи если 5 секунд нет команд на подавление.
This commit is contained in:
37
interfers.gd
37
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)
|
||||
|
||||
2
main.gd
2
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
|
||||
|
||||
12
threats.gd
12
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]]
|
||||
|
||||
Reference in New Issue
Block a user