Доработка. Открытие порта во время работы
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user