Доработка. Отображение состояния СПТ-25 в режиме Контроль
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
class_name spt25_unit extends Node
|
||||
|
||||
const ONLINE_TIMEOUT: int = 5000 ## Время ожидания данных
|
||||
const REQUEST_PERIOD: int = 3000 ## Переиод запроса, мс
|
||||
|
||||
class SPT25 extends unit.Unit:
|
||||
|
||||
var tx_tick: int = 0
|
||||
var req_period = 3000.0 ## Переиод запроса, мс
|
||||
func _to_string() -> String: return String('СПТ-25: %s %s' % [self.name, ['отключен', 'на связи'][int(online)]])
|
||||
var rx_tick: int = 0
|
||||
var req_period = REQUEST_PERIOD
|
||||
func _to_string() -> String: return String('СПТ-25 %s %s' % [self.name, ['отключен', 'на связи'][int(online)]])
|
||||
|
||||
func _init(nm) -> void:
|
||||
self.name = nm
|
||||
@@ -19,14 +22,22 @@ class SPT25 extends unit.Unit:
|
||||
tx_data[6] = 0 # Контрольная сумма
|
||||
tx_data[7] = 0x7e # Флаги синхронизации пакета
|
||||
|
||||
func parse(rx_data: PackedByteArray):
|
||||
if not self.online:
|
||||
self.online = true
|
||||
|
||||
func parse(rx_data: PackedByteArray, tick: int):
|
||||
rx_tick = tick
|
||||
if not online:
|
||||
online = true
|
||||
emit_signal('line_changed', self)
|
||||
emit_signal('data_received', rx_data)
|
||||
|
||||
|
||||
func process(tick: int):
|
||||
var rc: = Error.ERR_BUSY
|
||||
if (tick - tx_tick) > req_period:
|
||||
tx_tick = tick
|
||||
return Error.OK
|
||||
return Error.ERR_BUSY
|
||||
rc = Error.OK
|
||||
if online:
|
||||
if (tick - rx_tick) > ONLINE_TIMEOUT:
|
||||
online = false
|
||||
emit_signal('line_changed', self)
|
||||
return rc
|
||||
|
||||
Reference in New Issue
Block a user