Рефактор.

This commit is contained in:
sasha80
2025-08-29 10:06:32 +03:00
parent b3db948eac
commit 5fee396387
3 changed files with 35 additions and 23 deletions

View File

@@ -3,15 +3,22 @@ class_name Network extends Node
const UDPTX_PROTO: = {'yau07tx': yau07.YaU07}
const UDPJSON_PROTO: = {'json-capsrpb': capsrpb.CapsRpb}
const TCP_PROTO: = {'5p28': tcp5p28.TCP5P28}
const SERIAL_PROTO: = {'uart': spt25.SPT25}
const SERIAL_PROTO: = {'spt25': spt25.SPT25}
const MODBUS_PROTO: = {'mbcs': sch3.Sch3}
const UDPRX_PROTO: = {'udprx': navi.NaviSource}
var tick: int = 0
class Serial extends SerialPort:
func send_to(data: PackedByteArray): return write_raw(data)
class Spt25Serial extends SerialPort:
func send_to(data: PackedByteArray):
tools.allways(data.size() >= 2, 'длина буфера меньше необходимого')
var i_sum: = data.size() - 3
var csd: = data.slice(0, i_sum)
var v_sum: = get_check_sum(csd)
data.encode_u16(i_sum, v_sum)
return write_raw(data)
func _to_string() -> String: return 'последовательный порт \"%s\" @ %d (%s)' % [self.port, self.baudrate, 'открыт' if is_open() else 'закрыт']
func try_open(parsing_proc: Callable):
@@ -68,7 +75,7 @@ var units_udprx: Dictionary[StringName, unit.Unit] ## Экземпляры
var units_tcp: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с tcp-соединением
var units_serial: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с uart-соединением
var units_modbus: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с modbusserial-соединением
var serials: Dictionary[StringName, Serial] ## Последовательные порты (uart)
var serials: Dictionary[StringName, Spt25Serial] ## Последовательные порты (uart)
var dst_ports: Dictionary[StringName, int] ## Преобразование имя устройства в порт назначения
var dst_addrs: Dictionary[StringName, StringName] ## Преобразование имя устройства в адрес назначения
var unit_keys: Dictionary[int, StringName] ## Преобразование порта назначения в имя устройства
@@ -84,10 +91,11 @@ func on_serial_data(data, unit): unit.parse(data, tick)
## [param unit_name] - Уникальное имя устройства[br]
func create_socket_udp(unit_name: StringName) -> SocketUDP:
var addr = settings.UnitProfiles[unit_name][1]
var port = settings.UnitProfiles[unit_name][2][0]
var broad = settings.UnitProfiles[unit_name][3]
var bind = settings.UnitProfiles[unit_name][4]
var st = settings.UnitProfiles[unit_name]
var addr = st[1]
var port = st[2][0]
var broad = st[3]
var bind = st[4]
var sock: = SocketUDP.new()
sock.set_broadcast_enabled(broad)
var rc = Error.OK if not bind else sock.bind(port, addr)
@@ -98,8 +106,9 @@ func create_socket_udp(unit_name: StringName) -> SocketUDP:
## [param unit_name] - Уникальное имя устройства[br]
func create_socket_tcp(unit_name: StringName) -> SocketTCP:
var addr = settings.UnitProfiles[unit_name][1]
var port = settings.UnitProfiles[unit_name][2][0]
var st = settings.UnitProfiles[unit_name]
var addr = st[1]
var port = st[2][0]
var sock: = SocketTCP.new()
sock.unit_name = unit_name
var rc: = sock.listen(port, addr)
@@ -111,10 +120,11 @@ func create_socket_tcp(unit_name: StringName) -> SocketTCP:
## [param unit_name] - Уникальное имя устройства[br]
func create_serial(unit_name: StringName) -> Serial:
var port = settings.UnitProfiles[unit_name][1]
var baud = settings.UnitProfiles[unit_name][2][0]
var serial: = Serial.new()
func create_serial(unit_name: StringName) -> Spt25Serial:
var st = settings.UnitProfiles[unit_name]
var port = st[1]
var baud = st[2][0]
var serial: = Spt25Serial.new()
serial.port = port
serial.baudrate = baud
serial.timeout = 20000

View File

@@ -32,8 +32,8 @@ var settings_program: Dictionary
'уарэп-щ3': ['mbcs', '/dev/ttyUSB0', [7, 19200, 'N', 8, 1, 50000], 'Параметры клиента Modbus Serial'],
# Название: [ Протокол, Имя порта, Скорость, Чётность, ??, Комментарий
'уарэп-спт25-1': ['uart', '/dev/ttyUSB1', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'],
'уарэп-спт25-2': ['uart', '/dev/ttyUSB2', [19200, false, false], 'Адрес прибора СПТ-25 (G2)'],
'уарэп-спт25-1': ['spt25', '/dev/ttyUSB1', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'],
'уарэп-спт25-2': ['spt25', '/dev/ttyUSB2', [19200, false, false], 'Адрес прибора СПТ-25 (G2)'],
}
## Параметры цели.

View File

@@ -29,6 +29,8 @@ func hypot(x: float, y: float) -> float: return sqrt(x * x + y * y)
func is_overlap(x1, x2, y1, y2) -> bool: return max(x1, y1) <= min(x2, y2)
## Закрывает программу если [param val] установлен в [b]false[/b][br]
## [param msg] - сообщение об ошибке
func allways(val: bool, msg: String = '<не указано>'):
if val: return
push_error('ошибка: %s\n' % msg)
@@ -198,22 +200,22 @@ func fill_files_table(tbl: table, folder: String, rows_types: Array):
if dir == null:
return
var exclude_names: = ['.', '..']
dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
dir.list_dir_begin() # TODO: GODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
while true:
var file: = dir.get_next()
if file == '':
break
if file in exclude_names:
continue
var file_name = folder + file
var fd = FileAccess.open(file_name, FileAccess.READ)
var file_name: = folder + file
var fd: = FileAccess.open(file_name, FileAccess.READ)
if not fd:
continue
var glob_path = ProjectSettings.globalize_path(file_name)
var sz = fd.get_length()
var ut = FileAccess.get_modified_time(file_name)
var glob_path: = ProjectSettings.globalize_path(file_name)
var sz: = fd.get_length()
var ut: = FileAccess.get_modified_time(file_name)
fd.close()
var mt = Time.get_datetime_dict_from_unix_time(ut)
var mt: = Time.get_datetime_dict_from_unix_time(ut)
var file_row = [file, '%d' % sz, '%d-%02d-%02d %02d:%02d' % [mt.year, mt.month, mt.day, mt.hour, mt.minute]]
tbl.add_row(rows_types)
var i_row: = tbl.get_rows_count() - 1