Рефактор.

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