diff --git a/scripts/network.gd b/scripts/network.gd index 1ffaf91..6abcee2 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -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]