Исправление. Время в мс теперь
This commit is contained in:
@@ -8,14 +8,17 @@ const SERIAL_PROTO: = {'uart': spt25.SPT25 }
|
||||
|
||||
|
||||
class Serial extends SerialPort:
|
||||
func send_to(data: PackedByteArray):
|
||||
return write_raw(data)
|
||||
func send_to(data: PackedByteArray): return write_raw(data)
|
||||
func _to_string() -> String: return 'последовательный порт \"%s\" @ %d (%s)' % [self.port, self.baudrate, 'открыт' if is_open() else 'закрыт']
|
||||
|
||||
func try_open(parsing_proc: Callable):
|
||||
if not is_open():
|
||||
open(port)
|
||||
if is_open():
|
||||
data_received.connect(parsing_proc)
|
||||
start_monitoring(timeout)
|
||||
if is_open():
|
||||
return Error.OK
|
||||
var rc = open(port)
|
||||
if rc == Error.OK:
|
||||
data_received.connect(parsing_proc)
|
||||
start_monitoring(timeout)
|
||||
return rc
|
||||
|
||||
|
||||
class Socket extends PacketPeerUDP:
|
||||
@@ -83,13 +86,9 @@ func create_serial(nm) -> Serial:
|
||||
var port = repsettings.UnitProfiles[nm][1]
|
||||
var baud = repsettings.UnitProfiles[nm][2][0]
|
||||
var sp: = Serial.new()
|
||||
sp.port = port
|
||||
sp.baudrate = baud
|
||||
sp.timeout = 20000
|
||||
var rc = sp.open(port)
|
||||
if rc != Error.OK:
|
||||
log.message(log.ERROR, 'Невозможно открыть порт \"%s\" для \"%s\"' % [port, nm])
|
||||
else:
|
||||
log.message(log.INFO, 'Последовательный порт \"%s\"@%d открыт для \"%s\"' % [port, baud, nm])
|
||||
return sp
|
||||
|
||||
|
||||
@@ -136,7 +135,11 @@ func _ready() -> void:
|
||||
units_serial[unit_key] = unit
|
||||
units[unit_key] = unit
|
||||
serials[unit_key] = serial
|
||||
serial.try_open(unit.parse)
|
||||
var rc = serial.try_open(unit.parse)
|
||||
if rc != Error.OK:
|
||||
log.message(log.ERROR, 'Невозможно открыть %s для \"%s\"' % [serial, unit_name])
|
||||
else:
|
||||
log.message(log.INFO, '%s для \"%s\"' % [serial, unit_name])
|
||||
|
||||
tcp_sockets.append([create_tcpsocket('уарэп-5п28'), units_tcp[repsettings.get_unit_key('уарэп-5п28')]])
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ class_name spt25_unit extends Node
|
||||
class SPT25 extends unit.Unit:
|
||||
|
||||
var tx_tick: int = 0
|
||||
var req_period = 3.0
|
||||
var req_period = 3000.0 ## Переиод запроса, мс
|
||||
func _to_string() -> String: return String('СПТ-25: %s %s' % [self.name, ['отключен', 'на связи'][int(online)]])
|
||||
|
||||
func _init(nm) -> void:
|
||||
@@ -25,8 +25,7 @@ class SPT25 extends unit.Unit:
|
||||
emit_signal('line_changed', self)
|
||||
emit_signal('data_received', rx_data)
|
||||
|
||||
func process(delta: float):
|
||||
tick += delta
|
||||
func process(tick: float):
|
||||
if (tick - tx_tick) > req_period:
|
||||
tx_tick = tick
|
||||
return Error.OK
|
||||
|
||||
@@ -8,7 +8,6 @@ class Unit:
|
||||
signal parse_failed(unit) ## Вызывается при обнаружении ошибки во входных данных
|
||||
signal data_received(unit) ## Вызывается по приёму данных
|
||||
|
||||
var tick = 0.0 ## Текущее тик-время в мс.
|
||||
var tx_data: = PackedByteArray() ## Буфер отправленный.
|
||||
var tx_len = 0 ## Длина последнего отправленного пакета.
|
||||
var online: bool
|
||||
|
||||
@@ -48,11 +48,9 @@ class YaU07 extends unit.Unit:
|
||||
self.name = nm
|
||||
tx_data.resize(BUFFER_SIZE)
|
||||
tx_data.fill(0)
|
||||
tick = 0.0
|
||||
|
||||
|
||||
func process(delta: float):
|
||||
tick += delta
|
||||
func process(tick):
|
||||
if online and ((tick - cmd_tick_rx) > ONLINE_TIMEOUT):
|
||||
online = false
|
||||
emit_signal('line_changed', self)
|
||||
@@ -181,7 +179,7 @@ class YaU07 extends unit.Unit:
|
||||
## [param rx_data] - Принятые данные.[br]
|
||||
## Возвращает [b]true[/b] - Данные обработаны успешно.[br]
|
||||
## Возвращает [b]false[/b] - Данные не обработаны из за ошибки.[br]
|
||||
func parse(rx_data: PackedByteArray) -> bool:
|
||||
func parse(rx_data: PackedByteArray, tick: float) -> bool:
|
||||
|
||||
cmd_tick_rx = tick
|
||||
|
||||
|
||||
Reference in New Issue
Block a user