Рефактор. Сетевой модуль.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user