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]