Рефактор. Сетевой модуль и формат данных настроек
This commit is contained in:
@@ -6,34 +6,34 @@ class_name uarep_settings extends Node
|
||||
var settings_program: Dictionary
|
||||
|
||||
@export var UnitProfiles: Dictionary[StringName, Array] = { \
|
||||
# Название | Протокол | Адрес | Порт | Широковещательное | Привязывать к адресу | Комментарий
|
||||
'уарэп-яу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 прибора ПРД-Н'],
|
||||
'навигация': ['udprx','*', [60000], true, true, 'IP-адрес на котором принимают сообщения от навигации'],
|
||||
# Название | Протокол | Адрес | Порт | Широковещательное | Привязывать к адресу | Внешнее | Комментарий
|
||||
'уарэп-яу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-адрес для приёма сообщений от службы \"МП550\"'],
|
||||
'уарэп-эмс': ['yau07tx', ['10.1.1.52', 50052, false, false], 'IP-адрес прибора УФ'],
|
||||
'уарэп-яу07-2в': ['yau07tx', ['10.1.1.22', 50022, false, false], 'IP-адрес прибора ПРД-В'],
|
||||
'уарэп-яу07-2н': ['yau07tx', ['10.1.1.21', 50021, false, false], 'IP-адрес прибора ПРД-Н'],
|
||||
'уарэп-яу07-2к': ['yau07tx', ['10.1.1.23', 50023, false, false], 'IP-адрес прибора ПРД-К'],
|
||||
'уарэп-яу07-4в': ['yau07tx', ['10.1.1.42', 50042, false, false], 'IP-адрес прибора ПРД-В'],
|
||||
'уарэп-яу07-4н': ['yau07tx', ['10.1.1.41', 50041, false, false], 'IP-адрес прибора ПРД-Н'],
|
||||
'уарэп-яу07-4к': ['yau07tx', ['10.1.1.43', 50043, false, false], 'IP-адрес прибора ПРД-К'],
|
||||
'уарэп-яу07-1в': ['yau07tx', ['10.1.1.12', 50012, false, false], 'IP-адрес прибора ПРД-В'],
|
||||
'уарэп-яу07-1н': ['yau07tx', ['10.1.1.11', 50011, false, false], 'IP-адрес прибора ПРД-Н'],
|
||||
'уарэп-яу07-1к': ['yau07tx', ['10.1.1.13', 50013, false, false], 'IP-адрес прибора ПРД-К'],
|
||||
'уарэп-яу07-3в': ['yau07tx', ['10.1.1.32', 50032, false, false], 'IP-адрес прибора ПРД-В'],
|
||||
'уарэп-яу07-3н': ['yau07tx', ['10.1.1.31', 50031, false, false], 'IP-адрес прибора ПРД-Н'],
|
||||
'уарэп-яу07-3к': ['yau07tx', ['10.1.1.33', 50033, false, false], 'IP-адрес прибора ПРД-Н'],
|
||||
'навигация': ['udprx', ['*', 60000, true, true ], 'IP-адрес на котором принимают сообщения от навигации'],
|
||||
|
||||
# Название: [ Протокол, Адрес, Порт получения, Комментарий ]
|
||||
'уарэп-5п28': [ '5p28', '127.0.0.1', [50000], 'IP-адрес комплекса 5П-28'],
|
||||
'уарэп-5п28': [ '5p28', ['127.0.0.1', 50000], 'IP-адрес комплекса 5П-28'],
|
||||
|
||||
# Название: [ протокол, путь, [адрес modbus, скорость, чётность, бит на символ, стоп битов, время на ожидание ответа в мкс] комментарий ]
|
||||
'уарэп-щ3': ['mbcs', '/dev/ttyUSB0', [7, 19200, 'N', 8, 1, 50000], 'Параметры клиента Modbus Serial'],
|
||||
'уарэп-щ3': ['mbcs', ['/dev/ttyUSB0', 7, 19200, 'N', 8, 1, 50000], 'Параметры клиента Modbus Serial'],
|
||||
|
||||
# Название: [ Протокол, Имя порта, Скорость, Чётность, ??, Комментарий
|
||||
'уарэп-спт25-1': ['spt25', '/dev/ttyUSB1', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'],
|
||||
'уарэп-спт25-2': ['spt25', '/dev/ttyUSB2', [19200, false, false], 'Адрес прибора СПТ-25 (G2)'],
|
||||
'уарэп-спт25-1': ['spt25', ['/dev/ttyUSB1', 0, 19200, 'N', 8, 1], 'Прибор СПТ-25 (G1)'],
|
||||
'уарэп-спт25-2': ['spt25', ['/dev/ttyUSB2', 0, 19200, 'N', 8, 1], 'Прибор СПТ-25 (G2)'],
|
||||
}
|
||||
|
||||
## Параметры цели.
|
||||
@@ -56,9 +56,9 @@ func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
var settings_file = get_settings_file_path()
|
||||
var abs_path = ProjectSettings.globalize_path(settings_file)
|
||||
var abs_path: = ProjectSettings.globalize_path(settings_file)
|
||||
log.info('Путь к файлу настроек: \"%s\"' % abs_path)
|
||||
var file = FileAccess.open(settings_file, FileAccess.READ)
|
||||
var file: = FileAccess.open(settings_file, FileAccess.READ)
|
||||
if not file:
|
||||
log.info('Не удалось открыть файл настроек, будут использованы настройики по умолчанию')
|
||||
return
|
||||
@@ -70,36 +70,31 @@ func _ready() -> void:
|
||||
return
|
||||
var json_data = json_conv.get_data()
|
||||
settings_program.merge(json_data)
|
||||
for key in UnitProfiles.keys():
|
||||
for key: StringName in UnitProfiles.keys():
|
||||
if not json_data.has(key):
|
||||
continue
|
||||
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]) < len(UnitProfiles[key][2]):
|
||||
log.info('Не удалось прочитать значение \"%s\", ошибка в содержании файла настроек' % key)
|
||||
var vj = json_data[key]
|
||||
var vp = UnitProfiles[key][1]
|
||||
if vp.size() != vj.size():
|
||||
log.error('Не удалось прочитать настройки для \"%s\"' % key)
|
||||
continue
|
||||
temp_array.append([])
|
||||
for i in len(json_data[key]) - 1:
|
||||
if tools.type_is_num(json_data[key][i+1]) and tools.type_is_num(UnitProfiles[key][2][i]):
|
||||
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])
|
||||
var parse_ok: = true
|
||||
for i in vp.size():
|
||||
if tools.type_is_num(vj[i]) and tools.type_is_num(vp[i]):
|
||||
if typeof(vp[i]) == TYPE_INT:
|
||||
vp[i] = int(vj[i])
|
||||
elif typeof(vp[i]) == TYPE_FLOAT:
|
||||
vp[i] = float(vj[i])
|
||||
elif typeof(vp[i]) == typeof(vj[i]):
|
||||
vp[i] = vj[i]
|
||||
else:
|
||||
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)
|
||||
var tp: = type_string(typeof(vp[i]))
|
||||
var tj: = type_string(typeof(vj[i]))
|
||||
log.error('%s: ожидается тип \"%s\", но прочитан тип \"%s\" [%d]' % [key, tp, tj, i])
|
||||
parse_ok = false
|
||||
break
|
||||
if parse_ok:
|
||||
UnitProfiles[key][1].assign(vp)
|
||||
|
||||
|
||||
## Возвращает полный путь к файлу с настройками
|
||||
|
||||
Reference in New Issue
Block a user