Доработка. WIP Управление оператором. Отправка команд

This commit is contained in:
sasha80
2026-03-26 10:35:27 +03:00
parent 68ab1b325d
commit 7b80852017
8 changed files with 232 additions and 29 deletions

View File

@@ -355,6 +355,7 @@ func _process(_delta: float) -> void:
poll_sockets.any(poll_receive_udp)
## Возвращает экземпляр уже созданного устройства
## [param unit_name] - Уникальное имя устройства[br]
func get_unit_instance(unit_name: StringName) -> unit.Unit:
return units.get(unit_name, null)

View File

@@ -25,6 +25,6 @@ class Unit extends Object:
var rx_tick: int = 0 ## Тик-время последнего приёма данных
var online: bool = false ## Состояние подключения устройства
var name: StringName = '<без имени>' ## Уникальное имя устройства
func _init(nm) -> void: self.name = nm
func _init(nm: StringName) -> void: self.name = nm
func _to_string() -> String:
return String('Unit(\"%s\", %s)' % [self.name, 'на связи' if online else 'отключен'])

View File

@@ -6,6 +6,12 @@ class YeMSTG extends unit.Unit:
var online_timeout: float = 5000 ## Должен быть равен наибольшему времени дотоверности из всех кластеров
var info: = Dictionary() ## Доклад о состоянии
var cmd: = Dictionary() ## Команда
var cnt: int = 0 ## Счётчик отправленных пакетов
func _init(unit_name) -> void:
super._init(unit_name)
cmd_state = CmdState.DONE
func parse(data: PackedByteArray, now_tick: int):
self.rx_tick = now_tick
if not online:
@@ -23,4 +29,10 @@ class YeMSTG extends unit.Unit:
if online and ((now_tick - rx_tick) > online_timeout):
online = false
emit_signal('line_changed', self)
return Error.ERR_BUSY
var rc = Error.ERR_BUSY
if cmd_state == CmdState.SEND:
tx_data = JSON.stringify(cmd).to_utf8_buffer()
tx_len = tx_data.size()
cmd_state = CmdState.DONE
rc = Error.OK
return rc