Доработка. Отключение помехи если 5 секунд нет команд на подавление.
This commit is contained in:
37
interfers.gd
37
interfers.gd
@@ -1,11 +1,5 @@
|
|||||||
extends Node
|
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 TableCellType1 = preload('res://ячейка-1.tscn')
|
||||||
const TableCellType2 = preload('res://кнопка-3.tscn')
|
const TableCellType2 = preload('res://кнопка-3.tscn')
|
||||||
const TableCellType3 = preload('res://кнопка-4.tscn')
|
const TableCellType3 = preload('res://кнопка-4.tscn')
|
||||||
@@ -83,6 +77,14 @@ const INTERFER_NAMES: Dictionary = {
|
|||||||
'SRNI1_LIT4.pcm',
|
'SRNI1_LIT4.pcm',
|
||||||
'SRNI1_LIT5.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:
|
class Interfer:
|
||||||
var get_data: Dictionary = {
|
var get_data: Dictionary = {
|
||||||
@@ -105,6 +107,7 @@ class Interfer:
|
|||||||
var svk: int = 0
|
var svk: int = 0
|
||||||
var row_id: int
|
var row_id: int
|
||||||
var active_fs: fs.Fs
|
var active_fs: fs.Fs
|
||||||
|
var rx_tick: = 0
|
||||||
|
|
||||||
func _init(data: Dictionary):
|
func _init(data: Dictionary):
|
||||||
options.merge(data, true)
|
options.merge(data, true)
|
||||||
@@ -142,6 +145,7 @@ func set_interfer(data):
|
|||||||
on_row_add(g_table, interfers[data['ispp']])
|
on_row_add(g_table, interfers[data['ispp']])
|
||||||
var cmd_state: int = fs.set_fs(interfers[data['ispp']])
|
var cmd_state: int = fs.set_fs(interfers[data['ispp']])
|
||||||
interfers[data['ispp']].svk = cmd_state
|
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)
|
var cell = g_table.get_node2(COLUMN_SVK, interfers[data['ispp']].row_id)
|
||||||
cell.select(cmd_state)
|
cell.select(cmd_state)
|
||||||
|
|
||||||
@@ -221,14 +225,14 @@ func on_row_pressed(i_row: int, table):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
func off_interfer(json_data):
|
func off_interfer(interfer_id):
|
||||||
if not interfers.has(json_data['ispp']): return
|
if not interfers.has(interfer_id): return
|
||||||
var row_id = interfers[json_data['ispp']].row_id
|
var row_id = interfers[interfer_id].row_id
|
||||||
if interfers[json_data['ispp']] != null:
|
if interfers[interfer_id] != null:
|
||||||
if interfers[json_data['ispp']].active_fs != null:
|
if interfers[interfer_id].active_fs != null:
|
||||||
fs.fs_off(interfers[json_data['ispp']].active_fs)
|
fs.fs_off(interfers[interfer_id].active_fs)
|
||||||
if g_table.get_rows_count() > row_id:
|
if g_table.get_rows_count() > row_id:
|
||||||
interfers.erase(json_data['ispp'])
|
interfers.erase(interfer_id)
|
||||||
g_table.remove_row(row_id)
|
g_table.remove_row(row_id)
|
||||||
for i in g_table.get_rows_count():
|
for i in g_table.get_rows_count():
|
||||||
var interfer = g_table.get_node_user_data(0, i)
|
var interfer = g_table.get_node_user_data(0, i)
|
||||||
@@ -245,3 +249,10 @@ func check_interfers_state():
|
|||||||
interfer.svk = cmd_state
|
interfer.svk = cmd_state
|
||||||
var cell = g_table.get_node2(COLUMN_SVK, interfer.row_id)
|
var cell = g_table.get_node2(COLUMN_SVK, interfer.row_id)
|
||||||
cell.select(cmd_state)
|
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.has('ss'): return
|
||||||
if not ((json_data['ss'] is int) or (json_data['ss'] is float)): return
|
if not ((json_data['ss'] is int) or (json_data['ss'] is float)): return
|
||||||
if json_data['krp'] == 'off':
|
if json_data['krp'] == 'off':
|
||||||
Interfers.off_interfer(json_data)
|
Interfers.off_interfer(json_data['ispp'])
|
||||||
sock.put_packet(Interfers.get_msg7_data())
|
sock.put_packet(Interfers.get_msg7_data())
|
||||||
return
|
return
|
||||||
if not json_data.has('powp'): 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', ]
|
'mavlink', 'ltm', 'hc12', 'df1', ]
|
||||||
|
|
||||||
const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO, COLUMN_REC]
|
const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO, COLUMN_REC]
|
||||||
const ID_ARRAY_LEN = 150 # Размер пула номеров целей
|
const ID_ARRAY_LEN = 150 # Размер пула номеров целей
|
||||||
const MIN_FLIC_TIME = 1.0 # минимальное время мерцания цели
|
const MIN_FLIC_TIME = 1.0 # минимальное время мерцания цели
|
||||||
|
|
||||||
var id_array: Array # Массив id целей
|
var id_array: Array # Массив id целей
|
||||||
var threats : Dictionary # Словарь целей
|
var threats : Dictionary # Словарь целей
|
||||||
var msg_counter : int = 0 # Счётчик отправленных пакетов
|
var msg_counter : int = 0 # Счётчик отправленных пакетов
|
||||||
var g_table: GridContainer
|
var g_table: GridContainer
|
||||||
var send_flag = true
|
var send_flag = true
|
||||||
var rkrp = []
|
var rkrp = []
|
||||||
var now = 0.0 # Время с момента запуска приложения
|
var now = 0.0 # Время с момента запуска приложения
|
||||||
var bpo_mode: int = 1 # Режим работы блока БПО
|
var bpo_mode: int = 1 # Режим работы блока БПО
|
||||||
|
|
||||||
# Номера колонок
|
# Номера колонок
|
||||||
var COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO], [COLUMN_REC, rkrp]]
|
var COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO], [COLUMN_REC, rkrp]]
|
||||||
|
|||||||
Reference in New Issue
Block a user