Рефактор. Сетевой модуль.

This commit is contained in:
sasha80
2025-09-04 08:56:20 +03:00
parent 80953ae6ec
commit 48353cc904
3 changed files with 40 additions and 44 deletions

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)