Рефактор.

This commit is contained in:
sasha80
2024-10-24 14:50:49 +03:00
parent a90d694928
commit 482e9d062b

View File

@@ -20,7 +20,7 @@ class SocketTCP extends TCPServer:
const RX_TIMEOUT: int = 1000 ## Время сброса счётчика принятия части пакета.
var peerstream: = PacketPeerStream.new()
var unit_key: Array ## Ключ юнита.
var head_len: int = 8 ## Длинна заголовка команды.
var head_len: int = 8 ## Длина заголовка команды.
var len_place: int = 4 ## Номер начального байта с длинной блока данных.
var type_len: int = 4 ## Количество байт в размере длинны.
var rx_tick: int ## Время приёма последнего пакета.
@@ -37,6 +37,7 @@ class SocketTCP extends TCPServer:
var poll_sockets: Array[Socket]
var tcp_sockets: Array
var units: Dictionary
var units_udp: Dictionary
var units_tcp: Dictionary
var units_serial: Dictionary
var serials: Dictionary
@@ -78,7 +79,6 @@ func create_serial(nm) -> SerialPort:
var rc = sp.open(port)
if rc != Error.OK:
log.message(log.ERROR, 'Невозможно открыть порт \"%s\" для \"%s\"' % [port, nm])
return null
log.message(log.INFO, 'Последовательный порт \"%s\"@%d открыт для \"%s\"' % [port, baud, nm])
return sp
@@ -99,6 +99,7 @@ func _ready() -> void:
var unit = PROTOCOL_TYPES[proto].new(unit_name)
var unit_key = repsettings.get_unit_key(unit_name)
units[unit_key] = unit
units_udp[unit_key] = unit
if logger_page:
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key))
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key))
@@ -125,7 +126,7 @@ func _ready() -> void:
units_serial[unit_key] = unit
units[unit_key] = unit
serials[unit_key] = serial
if serial:
if serial.is_open():
serial.data_received.connect(unit.parse)
serial.start_monitoring(20000)
@@ -197,7 +198,7 @@ func get_tcp_data(sock: SocketTCP, peer, len_rx):
func _process(_delta: float) -> void:
var tick = Time.get_ticks_msec()
for addr in units:
for addr in units_udp:
var unit = units[addr]
match unit.process(tick):
Error.OK: sock_unicast.send_to([addr[0], dst_ports[addr]], unit.tx_data)
@@ -206,7 +207,7 @@ func _process(_delta: float) -> void:
var unit = units_serial[key]
var serial = serials[key]
match unit.process(tick):
Error.OK: serial.write_str(unit.tx_data)
Error.OK: serial.write_raw(unit.tx_data)
Error.FAILED: emit_signal('socket_error', 'ошибка: \"%s\"' % unit.name)
for sock_unit in tcp_sockets:
var sock = sock_unit[0]