Исправление. Ошибка в автомате при обновлении информации о помехе.

This commit is contained in:
MaD_CaT
2025-10-21 16:32:42 +03:00
parent e22fba469f
commit 10389cf818
2 changed files with 46 additions and 17 deletions

View File

@@ -64,7 +64,9 @@ const SETTING_TABLE = [
['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'], ['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'],
['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ], ['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ],
['Период опроса состояния АФСП, секунды', TableEdit, TableEdit, 'Время в секундах' ], ['Период опроса состояния АФСП, секунды', TableEdit, TableEdit, 'Время в секундах' ],
['уареп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'] ] ['уареп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'],
['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'],
['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], ]
const EXTERNAL_CU = 16 ## Внешнее целеуказание const EXTERNAL_CU = 16 ## Внешнее целеуказание
const TRASSA = 17 const TRASSA = 17
@@ -72,6 +74,7 @@ const SUPPRESS = 18 ## Строка - Подавление
const KEYBOARD = 19 ## Строка - Виртуальная клавиатура const KEYBOARD = 19 ## Строка - Виртуальная клавиатура
const HIDE_EMS2 = 20 ## Строка - Скрыть вкладку ЭМС 2 const HIDE_EMS2 = 20 ## Строка - Скрыть вкладку ЭМС 2
const COMMIT = 21 ## Строка - Версия УАРЭП const COMMIT = 21 ## Строка - Версия УАРЭП
const GOS_BTN = 51 ## Разрешить работу по своим целям
var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки
@@ -102,6 +105,10 @@ func on_vk_pressed(btn) -> void:
signaller.emit_signal('kb_pressed', btn.button_pressed) signaller.emit_signal('kb_pressed', btn.button_pressed)
func on_gos_pressed(btn) -> void:
ProjectSettings.set_setting('application/config/Включить работу по своим целям', btn.button_pressed)
func on_ems2_pressed(btn) -> void: func on_ems2_pressed(btn) -> void:
var state = btn.button_pressed var state = btn.button_pressed
signaller.emit_signal('ems2_hide_pressed', state) signaller.emit_signal('ems2_hide_pressed', state)
@@ -222,6 +229,8 @@ func button_settings():
ems2_hide_node.connect('pressed', on_ems2_pressed.bind(ems2_hide_node)) ems2_hide_node.connect('pressed', on_ems2_pressed.bind(ems2_hide_node))
ems2_hide_node.set_pressed(true) ems2_hide_node.set_pressed(true)
on_ems2_pressed(ems2_hide_node) on_ems2_pressed(ems2_hide_node)
var gos_node = $scroll_set/table.get_node2(1, GOS_BTN).get_children()[0]
gos_node.connect('pressed', on_gos_pressed.bind(gos_node))
func _on_btn_save_settings_pressed(): func _on_btn_save_settings_pressed():

View File

@@ -93,17 +93,19 @@ const ID_INTERFERS_LEN = 63 ## Размер пула номеров целе
const INTERFER_OFF = 'off' const INTERFER_OFF = 'off'
const INTERFER_IQFILE = 'IQ-файл' const INTERFER_IQFILE = 'IQ-файл'
const POW_DEFAULT: float = 50.0 const POW_DEFAULT: float = 50.0
var msg6_num: int = 0 ## Счётчик сообщений "тип 6" var msg6_num: int = 0 ## Счётчик сообщений "тип 6"
var msg8_num: int = 0 ## Счётчик сообщений "тип 8" var msg8_num: int = 0 ## Счётчик сообщений "тип 8"
var id_array: Array ## Массив id воздействий. var id_array: Array ## Массив id воздействий.
var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия. var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия.
var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия. var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия.
var cu: Dictionary ## Словарь воздействий для 5П-28, ключ - id воздействия. var cu: Dictionary ## Словарь воздействий для 5П-28, ключ - id воздействия.
var thrs_dict: Dictionary ## Ссылка на словарь целей var thrs_dict: Dictionary ## Ссылка на словарь целей
var auto_enabled: bool = false ## Режим автомата var auto_enabled: bool = false ## Режим автомата
var emit_enable: bool = true ## Разрешить излучение var emit_enable: bool = true ## Разрешить излучение
var trenazh_mode: bool = false ## Переключение режима Тренаж var trenazh_mode: bool = false ## Переключение режима Тренаж
var course = 0.0 ## Курс корабля var course = 0.0 ## Курс корабля
var gos_flag = true ## Флаг работать по своим целям
var gos_protocols: PackedStringArray ## Список протоколов своих целей
## Сеанс помехи. ## Сеанс помехи.
class Interfer: class Interfer:
@@ -207,6 +209,7 @@ func _ready() -> void:
threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps)) threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps))
threats.connect('threats_resized', Callable(self, 'on_threats_resized')) threats.connect('threats_resized', Callable(self, 'on_threats_resized'))
threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms, unit_caps)) threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms, unit_caps))
ProjectSettings.connect('settings_changed', on_settings_changed)
var unit_nav = network.get_unit_instance('навигация') var unit_nav = network.get_unit_instance('навигация')
unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps)) unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps))
@@ -257,6 +260,7 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
ecm.kni = thr.aoa - course ecm.kni = thr.aoa - course
if ecm.kni < 0: if ecm.kni < 0:
ecm.kni += 360 ecm.kni += 360
call_ecm_proc(ecm)
send_ecm(ecm, unit_instance) send_ecm(ecm, unit_instance)
signaller.emit_signal('fs_update_color', ecms) signaller.emit_signal('fs_update_color', ecms)
prd.update_fs_state(ecms, trenazh_mode) prd.update_fs_state(ecms, trenazh_mode)
@@ -267,6 +271,12 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
if auto_enabled: if auto_enabled:
for thr in threats.values(): for thr in threats.values():
thr.auto_selected = true thr.auto_selected = true
if (thr.rkrp != '') and thr.fflags.rkrp and auto_enabled:
var krp = get_krp(thr)
if krp != '':
signaller.emit_signal('interfer_init', krp, [], interfer.POW_DEFAULT)
thr.auto_selected = false
continue
signaller.emit_signal('interfer_init', 'lchm1', [], interfer.POW_DEFAULT) signaller.emit_signal('interfer_init', 'lchm1', [], interfer.POW_DEFAULT)
thr.auto_selected = false thr.auto_selected = false
@@ -414,10 +424,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
ecm.source_interfer = source_interfer ecm.source_interfer = source_interfer
ecm.modulation = emit_enable ecm.modulation = emit_enable
ecm.um = param.get('um', 15.0) # Значение по умолчанию ecm.um = param.get('um', 15.0) # Значение по умолчанию
var ecm_params = ITERFER_MODE[interfer_name][1] call_ecm_proc(ecm)
if ecm_params.has('call_proc'):
var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params)
call_set_params.call()
var set_nmfs_ok = set_nmfs(ecm) var set_nmfs_ok = set_nmfs(ecm)
if set_nmfs_ok != Error.OK: if set_nmfs_ok != Error.OK:
log.error('Ошибка выбора модуля ФС для помехи: %s' %[ecm.ispp]) log.error('Ошибка выбора модуля ФС для помехи: %s' %[ecm.ispp])
@@ -528,7 +535,10 @@ func on_threats_update(threat, ecms, unit_caps):
if krp != '': if krp != '':
ecm.krp = krp ecm.krp = krp
set_rparams(threat, ecm.params) set_rparams(threat, ecm.params)
call_ecm_proc(ecm)
emit_signal('interfer_recommendate', ecm) emit_signal('interfer_recommendate', ecm)
else:
call_ecm_proc(ecm)
ecm.kni = threat.aoa - course ecm.kni = threat.aoa - course
if ecm.kni < 0: if ecm.kni < 0:
ecm.kni += 360 ecm.kni += 360
@@ -644,8 +654,18 @@ func on_interfer_off(ecm: Interfer, ecms):
func on_interfer_new(ecm, unit_caps): func on_interfer_new(ecm, unit_caps):
call_ecm_proc(ecm)
send_ecm(ecm, unit_caps)
func on_settings_changed():
gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true)
var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '')
gos_protocols = protocols.split(",", true)
func call_ecm_proc(ecm):
var ecm_params = ITERFER_MODE[ecm.krp][1] var ecm_params = ITERFER_MODE[ecm.krp][1]
if ecm_params.has('call_proc'): if ecm_params.has('call_proc'):
var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params) var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params)
call_set_params.call() call_set_params.call()
send_ecm(ecm, unit_caps)