diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index 0b0ec62e..169f03a9 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -206,7 +206,7 @@ func setting_tab(): var param_name = SETTING_TABLE[i][0] if not settings.UnitProfiles.has(param_name): continue - var unit_data = settings.UnitProfiles[param_name] + var unit_data = settings.UnitProfiles[param_name][1] var profile = $scroll_set/table.get_node2(1, i) profile.text = '' for val in unit_data: diff --git a/scripts/network.gd b/scripts/network.gd index 874d2c9f..cb0dc76a 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -42,32 +42,28 @@ class SocketSerial extends SerialPort: i += 2 tx_buffer[i] = FLAG i += 1 - write_raw(tx_buffer.slice(0, i)) + # Эта последовательность для запроса состояния, получена от разработчиков СПТ-25 + const tx_tula = [0x7e, 0x01, 0x04, 0xbb, 0x50, 0x7e] + write_raw(tx_tula) func _to_string() -> String: return 'последовательный порт \"%s\" @ %d (%s)' % [self.port, self.baudrate, 'открыт' if is_open() else 'закрыт'] func get_check_sum(src: PackedByteArray) -> int: - var fsc: = ~((src[1]<<8) + src[0]) + var fcs: = (~((src[1] << 8) + src[0])) & 0xffff for i: int in range(2, src.size()): var chr: = src[i] for j: int in 8: if chr & 1: - if fsc & 1: - fsc = ((fsc >> 1) | FSC_MASK) ^ P_DIV + if fcs & 1: + fcs = ((fcs >> 1) | FSC_MASK) ^ P_DIV else: - fsc = ((fsc >> 1) | FSC_MASK) + fcs = ((fcs >> 1) | FSC_MASK) else: - if fsc & 1: - fsc = (fsc >> 1) ^ P_DIV - else: - fsc = fsc >> 1 + fcs = (fcs >> 1) ^ P_DIV if fcs & 1 else fcs >> 1 chr >>= 1 - for j: int in 16: - if fsc & 1: - fsc = (fsc >> 1) ^ P_DIV - else: - fsc = fsc >> 1 - return ~fsc + for j: int in 16: + fcs = (fcs >> 1) ^ P_DIV if fcs & 1 else fcs >> 1 + return (~fcs) & 0xffff func try_open(parsing_proc: Callable): if is_open(): @@ -327,7 +323,7 @@ func poll_receive_tcp(sock: SocketTCP) -> bool: if sock.is_connection_available(): # Проверить, если кто то пытается подключиться var client: = sock.take_connection() # Принять соединение sock.peerstream.set_stream_peer(client) # Привязать поток к новому клиенту - log.info('подключен: %s:%d к порту: %d' % [ client.get_connected_host(), client.get_connected_port(), client.get_local_port() ] ) + log.info('подключен: %s:%d к порту: %d' % [ client.get_connected_host(), client.get_connected_port(), client.get_local_port() ]) var peer = sock.peerstream.get_stream_peer() if peer: while true: diff --git a/scripts/settings.gd b/scripts/settings.gd index 823ecd03..92858a4f 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -5,35 +5,35 @@ 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-адрес для приёма сообщений от службы \"МП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-адрес на котором принимают сообщения от навигации'], +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-адрес для приёма сообщений от службы \"МП550\"'], + 'уарэп-эмс': ['yau07tx', ['10.1.1.52', 50052, false, false], 'IP-адрес прибора УФ'], + 'уарэп-яу07-2в': ['yau07tx', ['10.1.1.22', 50022, false, false], 'IP-адрес прибора ПРД-В2'], + 'уарэп-яу07-2н': ['yau07tx', ['10.1.1.21', 50021, false, false], 'IP-адрес прибора ПРД-Н2'], + 'уарэп-яу07-2к': ['yau07tx', ['10.1.1.23', 50023, false, false], 'IP-адрес прибора ПРД-К2'], + 'уарэп-яу07-4в': ['yau07tx', ['10.1.1.42', 50042, false, false], 'IP-адрес прибора ПРД-В4'], + 'уарэп-яу07-4н': ['yau07tx', ['10.1.1.41', 50041, false, false], 'IP-адрес прибора ПРД-Н4'], + 'уарэп-яу07-4к': ['yau07tx', ['10.1.1.43', 50043, false, false], 'IP-адрес прибора ПРД-К4'], + 'уарэп-яу07-1в': ['yau07tx', ['10.1.1.12', 50012, false, false], 'IP-адрес прибора ПРД-В1'], + 'уарэп-яу07-1н': ['yau07tx', ['10.1.1.11', 50011, false, false], 'IP-адрес прибора ПРД-Н1'], + 'уарэп-яу07-1к': ['yau07tx', ['10.1.1.13', 50013, false, false], 'IP-адрес прибора ПРД-К1'], + 'уарэп-яу07-3в': ['yau07tx', ['10.1.1.32', 50032, false, false], 'IP-адрес прибора ПРД-В3'], + 'уарэп-яу07-3н': ['yau07tx', ['10.1.1.31', 50031, false, false], 'IP-адрес прибора ПРД-Н3'], + 'уарэп-яу07-3к': ['yau07tx', ['10.1.1.33', 50033, false, false], 'IP-адрес прибора ПРД-К3'], + 'навигация': ['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'], + # < Название: [ Протокол, [Имя порта, Адрес modbus, Скорость, Чётность, Бит на символ, Стоп битов, Время на ожидание ответа в мкс], Комментарий > + 'уарэп-щ3': ['mbcs', ['/dev/ttyUSB0', 7, 19200, 'N', 8, 1, 50000], 'Параметры клиента Modbus Serial'], - # Название: [ Протокол, Имя порта, Скорость, Чётность, ??, Комментарий - 'уарэп-спт25-1': ['spt25', ['/dev/ttyUSB1', 0, 19200, 'N', 8, 1], 'Прибор СПТ-25 (G1)'], - 'уарэп-спт25-2': ['spt25', ['/dev/ttyUSB2', 0, 19200, 'N', 8, 1], 'Прибор СПТ-25 (G2)'], + # < Название: [ Протокол, Имя порта, Адрес СПТ-25, Скорость, Чётность, Бит на символ, Стоп битов, Комментарий > + 'уарэп-спт25-1': ['spt25', ['/dev/ttyUSB1', 0, 19200, 'N', 8, 1], 'Прибор СПТ-25 (G1)'], + 'уарэп-спт25-2': ['spt25', ['/dev/ttyUSB2', 0, 19200, 'N', 8, 1], 'Прибор СПТ-25 (G2)'], } ## Параметры цели. @@ -66,7 +66,7 @@ func _ready() -> void: file.close() var json_conv: = JSON.new() if Error.OK != json_conv.parse(read): - log.info('Не удалось разобрать файл настроек: ошибка в содержании, будут использованы настройики по умолчанию') + log.info('Не удалось разобрать файл настроек: ошибка в содержании, будут использованы значения по умолчанию') return var json_data = json_conv.get_data() settings_program.merge(json_data)