From 4932f241d6bab51cfb5840c4f3cc8fd5f7747f4e Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 24 Oct 2024 16:34:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9E=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=D1=80=D1=82=D0=B0=20=D0=B2=D0=BE=20=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/network.gd | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/network.gd b/scripts/network.gd index 6abcee2..90bad02 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -7,7 +7,14 @@ const SERIAL_PROTO: = {'uart': spt25.SPT25 } class Serial extends SerialPort: - pass + func send_to(data: PackedByteArray): + write_raw(data) + func try_open(parsing_proc: Callable): + if not is_open(): + open(port) + if is_open(): + data_received.connect(parsing_proc) + start_monitoring(timeout) class Socket extends PacketPeerUDP: @@ -71,11 +78,12 @@ func create_tcpsocket(nm) -> SocketTCP: return sock -func create_serial(nm) -> SerialPort: +func create_serial(nm) -> Serial: var port = repsettings.UnitProfiles[nm][1] var baud = repsettings.UnitProfiles[nm][2][0] - var sp: = SerialPort.new() + var sp: = Serial.new() sp.baudrate = baud + sp.timeout = 20000 var rc = sp.open(port) if rc != Error.OK: log.message(log.ERROR, 'Невозможно открыть порт \"%s\" для \"%s\"' % [port, nm]) @@ -126,9 +134,7 @@ func _ready() -> void: units_serial[unit_key] = unit units[unit_key] = unit serials[unit_key] = serial - if serial.is_open(): - serial.data_received.connect(unit.parse) - serial.start_monitoring(20000) + tcp_sockets.append([create_tcpsocket('уарэп-5п28'), units_tcp[repsettings.get_unit_key('уарэп-5п28')]]) @@ -207,7 +213,7 @@ func _process(_delta: float) -> void: var unit = units_serial[key] var serial = serials[key] match unit.process(tick): - Error.OK: serial.write_raw(unit.tx_data) + Error.OK: serial.send_to(unit.tx_data) Error.FAILED: emit_signal('socket_error', 'ошибка: \"%s\"' % unit.name) for sock_unit in tcp_sockets: var sock = sock_unit[0]