Доработка interfer_resized и отправка по таймеру магическое число в порт

This commit is contained in:
Maxim
2025-09-01 19:37:45 +03:00
parent b5f5496d55
commit b444bb4d5e
4 changed files with 15 additions and 17 deletions

View File

@@ -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)
## Перестраивает индекс таблицы. Вызывать при удалении строки

View File

@@ -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:

View File

@@ -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

View File

@@ -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: