@tool class_name rep_settings extends Node ## Параметры. var settings_file = ProjectSettings.get_setting('application/config/settings_path', 'user://settings.json') # Путь к файлу с настройками var settings_program: Dictionary @export var UnitProfiles: = { \ # Название | Протокол | Адрес | Порт | Широковещательное | Привязывать к адресу | Комментарий 'уарэп-яу07-частный': ['yau07rx', '10.1.1.2', [50002], false, true, 'IP-адрес на котором принимают частные сообщения от ЯУ-07'], 'уарэп-яу07-общий': ['yau07rx', '*', [50000], true, true, 'IP-адрес на котором принимают широковещательные сообщения от ЯУ-07'], 'уарэп-капсрпб': ['json-capsrpb', '127.0.0.1', [42023, 42022], false, true, 'IP-адрес на котором принимают сообщения от КАПС РПБ'], 'уарэп-эмс': ['yau07tx', '10.1.1.52', [50052], false, false, 'IP-адрес ЯУ-07 прибора УФ'], 'уарэп-яу07-2в': ['yau07tx', '10.1.1.22', [50022], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'], 'уарэп-яу07-2н': ['yau07tx', '10.1.1.21', [50021], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'], 'уарэп-яу07-2к': ['yau07tx', '10.1.1.23', [50023], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'], 'уарэп-яу07-4в': ['yau07tx', '10.1.1.42', [50042], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'], 'уарэп-яу07-4н': ['yau07tx', '10.1.1.41', [50041], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'], 'уарэп-яу07-4к': ['yau07tx', '10.1.1.43', [50043], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'], 'уарэп-яу07-1в': ['yau07tx', '10.1.1.12', [50012], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'], 'уарэп-яу07-1н': ['yau07tx', '10.1.1.11', [50011], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'], 'уарэп-яу07-1к': ['yau07tx', '10.1.1.13', [50013], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'], 'уарэп-яу07-3в': ['yau07tx', '10.1.1.32', [50032], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'], 'уарэп-яу07-3н': ['yau07tx', '10.1.1.31', [50031], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'], 'уарэп-яу07-3к': ['yau07tx', '10.1.1.33', [50033], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'], # Название: [ Протокол, Адрес, Порт получения, Комментарий ] 'уарэп-5п28': [ '5p28', '192.168.3.109', [50000], 'IP-адрес комплекса 5П-28'], # Название: [ Протокол, Адрес, Скорость, ??, ??, Комментарий 'уарэп-щ3': ['mbcs', '/home/sasha/dev/tty1', [19200, 7, 'N', 8, 1], 'Параметры клиента Modbus Serial'], # Название: [ Протокол, Имя порта, Скорость, Чётность, ??, Комментарий 'уарэп-спт25-1': ['uart', '/home/sasha/dev/tty0', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'], 'уарэп-спт25-2': ['uart', '/home/sasha/dev/tty4', [19200, false, false], 'Адрес прибора СПТ-25 (G2)'], } ## Параметры цели. @export var ThreatParams = { 'time_lost': 5000 ## Время после последнего обновления в мс, через которое цель считается потерянной. } func _ready() -> void: var file = FileAccess.open(settings_file, FileAccess.READ) if file != null: var read = file.get_as_text() file.close() var json_conv: = JSON.new() if Error.OK == json_conv.parse(read): var json_data = json_conv.get_data() settings_program.merge(json_data) for key in UnitProfiles.keys(): if json_data.has(key): 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]) else: UnitProfiles[key][2][i] = json_data[key][i+1] log.info('Модуль настроек готов') ## Возвращает ключ устройства. func get_unit_key(unit_name: String) -> Array: var item = UnitProfiles[unit_name] return [item[1], item[2][0]]