From 54292b276038e55fb787eda1e793b27d1b772250 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 5 Mar 2025 15:23:44 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9F=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F=D1=86=D0=B8=D0=B8?= =?UTF-8?q?,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D1=8F=20setting.g?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/prd.gd | 2 +- scripts/settings.gd | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/prd.gd b/scripts/prd.gd index 4328ada9..789e3667 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -164,5 +164,5 @@ func update_fs_state(ecms): 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 1ce31659..eff466a4 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -60,8 +60,11 @@ func _ready() -> void: if not json_data.has(key): continue UnitProfiles[key][1] = json_data[key][0] for i in len(json_data[key]) - 1: - if json_data[key][1][i+1].is_valid_int(): - UnitProfiles[key][2][i] = int(json_data[key][i+1]) + if typeof(json_data[key][i+1]) == TYPE_STRING: + if json_data[key][i+1].is_valid_int(): + UnitProfiles[key][2][i] = int(json_data[key][i+1]) + else: + UnitProfiles[key][2][i] = json_data[key][i+1] else: UnitProfiles[key][2][i] = json_data[key][i+1] log.info('Модуль настроек готов') From fb42f5bc00d641d2ce5a7391011fe58c6e7ac238 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Thu, 6 Mar 2025 14:25:39 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5?= =?UTF-8?q?=D1=80=20setting.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/settings.gd | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/scripts/settings.gd b/scripts/settings.gd index eff466a4..d4642439 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -30,7 +30,7 @@ var settings_program: Dictionary 'уарэп-5п28': [ '5p28', '127.0.0.1', [50000], 'IP-адрес комплекса 5П-28'], # Название: [ Протокол, Адрес, Скорость, ??, ??, Комментарий - 'уарэп-щ3': ['mbcs', '/home/sasha/dev/tty1', [19200, 7, 'N', 8, 1], 'Параметры клиента Modbus Serial'], + 'уарэп-щ3': ['mbcs', '/home/sasha/dev/tty1', [7, 19200, 'N', 8, 1], 'Параметры клиента Modbus Serial'], # Название: [ Протокол, Имя порта, Скорость, Чётность, ??, Комментарий 'уарэп-спт25-1': ['uart', '/home/sasha/dev/tty0', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'], @@ -58,15 +58,29 @@ func _ready() -> void: settings_program.merge(json_data) for key in UnitProfiles.keys(): if not json_data.has(key): continue - UnitProfiles[key][1] = json_data[key][0] + var temp_array = [] + var set_from_file = true + if typeof(json_data[key][0]) == typeof(UnitProfiles[key][1]): + temp_array.append(json_data[key][0]) + else: + set_from_file = false + if (len(json_data[key]) - 1) != len(UnitProfiles[key][2]): + log.info('Не удалось прочитать файл настроек %s, ошибка длинны массива' % settings_file) + continue + temp_array.append([]) for i in len(json_data[key]) - 1: - if typeof(json_data[key][i+1]) == TYPE_STRING: - if json_data[key][i+1].is_valid_int(): - UnitProfiles[key][2][i] = int(json_data[key][i+1]) - else: - UnitProfiles[key][2][i] = json_data[key][i+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]) + elif typeof(json_data[key][i+1]) == typeof(UnitProfiles[key][2][i]): + temp_array[1].append(json_data[key][i+1]) else: - UnitProfiles[key][2][i] = json_data[key][i+1] + set_from_file = false + if set_from_file: + UnitProfiles[key][1] = temp_array[0] + UnitProfiles[key][2] = temp_array[1] + else: + log.info('Не удалось прочитать ключ %s из файла настроек, использованы настройики по умолчанию' % key) + log.info('Модуль настроек готов') From b9595e43328a352c38496ae2354e56bdb91e391d Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 10 Mar 2025 10:20:45 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D0=B8=20=D0=B2=20PRD=20=D0=B8=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BD=D0=B5=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20=D0=BF=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D1=85=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/scroll-ecm-list.gd | 4 ++++ scripts/prd.gd | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 702e849a..495e25c1 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 789e3667..ff099628 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,8 +83,8 @@ 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: var index ## Индекс блока усилителей @@ -131,6 +133,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,16 +151,17 @@ 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) From e25c89fbf93a5993a7a7d094b1fd0355594c8be9 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 10 Mar 2025 16:21:50 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=A0=D0=B0=D1=81=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= =?UTF-8?q?=20setting.json,=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B8=D0=BF=D0=B0=20?= =?UTF-8?q?=D1=87=D0=B8=D1=81=D0=BB=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/prd.gd | 14 ++++++++++++++ scripts/settings.gd | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/prd.gd b/scripts/prd.gd index ff099628..657e6cb4 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -87,21 +87,35 @@ 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 ## Массив блоков ФС diff --git a/scripts/settings.gd b/scripts/settings.gd index d4642439..552a6cb1 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: