diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 702e849..495e25c 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -129,6 +129,10 @@ func on_interfer_off(ecm, ecms, thrs, table_index): interfer.cu.erase(ecm.ispp) interfer.fs.erase(ecm.ispp) interfer.push_id(ecm.ispp) + var sel_rows: Array + $table.get_selected_rows(sel_rows) + if not len(sel_rows): + signaller.emit_signal('interfer_selected', null) ## Перестраивает индекс таблицы. Вызывать при удалении строки diff --git a/scripts/prd.gd b/scripts/prd.gd index 4328ada..657e6cb 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -37,6 +37,7 @@ const fs_freq: Dictionary = { 5: [2000.0, 3500.0, 450.0, 500.0, 2450.0], 6: [3500.0, 6000.0, 500.0, 550.0, 5800.0] } +## Названия приборов ПРД const prd_names: Array = [ 'уарэп-яу07-1н', 'уарэп-яу07-1в', @@ -51,6 +52,7 @@ const prd_names: Array = [ 'уарэп-яу07-4в', 'уарэп-яу07-4к', ] +## Соответствие модулей ФС их нахождуению в приборе ПРД const fs_prd: Dictionary = { 0: ['уарэп-яу07-1к'], 1: ['уарэп-яу07-4к'], @@ -81,25 +83,39 @@ const fs_prd: Dictionary = { 26: ['уарэп-яу07-3к'], 27: ['уарэп-яу07-2к'], } -var fs_dict: Dictionary -var prd_dict: Dictionary +var fs_dict: Dictionary ## Словарь с модулями ФС +var prd_dict: Dictionary ## Словарь с приборами ПРД class Fs: + const um_ports: Dictionary = { + 1 : 0x6, + 2 : 0xA, + 3 : 0x6, + 4 : 0xA, + 5 : 0x6, + 6 : 0xA } + var index ## Индекс блока усилителей var modulation: bool ## Состояние модуляции var prd_name: String ## Ипя прибора ПРД в котором стоит модуль + var um_port: int = 0 ## Порт для угла места + var um: int = 0 ## Код угла места signal update_modulation(index) func _init(i, p_name): prd_name = p_name index = i + if um_ports.has(index/4): + um_port = um_ports[index/4] func set_modulation(val): modulation = val class PRD: + const ug_addr: int = 0x100 ## адрес ячейки УГ + var prd_name: String ## Имя прибора var unit_yau07 ## Юнит эмс var fs_dic: Dictionary ## Массив блоков ФС @@ -131,6 +147,7 @@ func _ready() -> void: fs.connect('update_modulation', prd_dict[fs.prd_name].on_update_modulation.bind(fs.index)) +## Функция возвращает массив с индексами модулей ФС для выбранной помехи func get_fs_index(ecm, fs_index_arr): var sector: int var band: Array @@ -148,21 +165,22 @@ func get_fs_index(ecm, fs_index_arr): fs_index_arr.append(item * 4 + sector) +## Обновление состояния модулей формирователя сигналов func update_fs_state(ecms): - for fs in fs_dict.values(): + for fs in fs_dict.values(): ## Запрет модуляции для всех ФС fs.set_modulation(false) - for ecm in ecms.values(): + for ecm in ecms.values(): ## Выставление состояния помехи в ФС var fs_ids: Array get_fs_index(ecm, fs_ids) for fs_index in fs_ids: var fs = fs_dict[fs_index] fs.set_modulation(ecm.modulation) - for prd_module in prd_dict.values(): + for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД if not prd_module.unit_yau07.online: continue for fs in prd_module.fs_dic.values(): var dev_mode = prd_module.yemsg_board.get_dev_mode(fs.index) var fs_state = 2 if fs.modulation: fs_state = 3 - if dev_mode != fs_state: + if (dev_mode != fs_state) or (fs_state == 3): fs.emit_signal('update_modulation') diff --git a/scripts/settings.gd b/scripts/settings.gd index 9b835fc..304cd16 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -70,7 +70,12 @@ func _ready() -> void: temp_array.append([]) for i in len(json_data[key]) - 1: if tools.type_is_num(json_data[key][i+1]) == tools.type_is_num(UnitProfiles[key][2][i]): - temp_array[1].append(json_data[key][i+1]) + if typeof(UnitProfiles[key][2][i]) == TYPE_INT: + temp_array[1].append(int(json_data[key][i+1])) + elif typeof(UnitProfiles[key][2][i]) == TYPE_FLOAT: + temp_array[1].append(float(json_data[key][i+1])) + else: + set_from_file = false elif typeof(json_data[key][i+1]) == typeof(UnitProfiles[key][2][i]): temp_array[1].append(json_data[key][i+1]) else: