Рефактор.
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user