Доработка. Управление модуляцией усилителей. Кнопка подавление определяет режим по умолчанию для всех помех.

This commit is contained in:
MaD_CaT
2025-02-17 16:09:30 +03:00
parent 7676966c9c
commit 33ee5bbf96
10 changed files with 94 additions and 33 deletions

View File

@@ -4,6 +4,15 @@ class EmsBoard:
enum {WAIT, WR_DEV_NUM_W, WRITE, WR_DEV_NUM_R, READ, READ_FLASH, WRITE_FLASH,
WRITE_FLASH_BEGIN, LOAD_KEMS, WRITE_FLASH_END, LOAD_FAIL} ## Состояния платы
const modulation_dev: Dictionary = { ## Словарь соответствия диапазона номеру устройства
0 : 50,
1 : 51,
2 : 52,
3 : 51,
4 : 52,
5 : 51,
6 : 52, }
var id_board: int ## id платы
var in_devs: Dictionary ## Словарь с входными устройствами.
var out_devs: Dictionary ## Словарь с выходными устройствами.
@@ -26,6 +35,7 @@ class EmsBoard:
var need_flash_wr: bool = false ## Флаг, что надо записать данные в флеш
var need_write: bool = false ## Флаг, что надо записать данные в ячейку ЭМС
var ems_g_fn: String = '' ## Имя файла настроек ЭМС-Г
var cmd_array: Array ## Очередь выполнения команд
signal upd_delay_offset(board, cur_dev) ## Сигнал о обновлении данных задержек
signal upd_o_state(board, cur_dev) ## Сигнал о обновлении данных режима выходов
@@ -284,3 +294,17 @@ class EmsBoard:
func set_load_done():
unit_ems.send_load_ems_done(unit_ems.CmdCode.LOAD_EMS_DONE)
func execute_cmd():
if len(cmd_array):
var cmd: Array = cmd_array.pop_front()
change_mode(cmd[0], cmd[1])
func add_cmd(band, mode_state):
var state = 2
if mode_state:
state = 3
cmd_array.append([modulation_dev[band], state])
func get_dev_mode(fs_index):
return out_devs[modulation_dev[fs_index/4]].mode

View File

@@ -1,15 +1,5 @@
extends Node
const modulation_dev: Dictionary = {
0 : 50,
1 : 51,
2 : 52,
3 : 51,
4 : 52,
5 : 51,
6 : 52,
}
var ems_board: Dictionary = {}
# Called when the node enters the scene tree for the first time.
@@ -51,10 +41,12 @@ func on_data_ems_received(unit_ems, board):
board.set_status(unit_ems.status)
if board.state_board == board.WAIT and board.state_cmd == board.WAIT:
if board.online:
if board.need_write:
if board.need_write and (not board.ems_load):
start_load(board)
elif not board.ems_load:
board.set_load_done()
elif board.ems_load and len(board.cmd_array):
board.execute_cmd()
else:
board.need_write = true