Доработка. Отображение состояния Щ3 (Щ-3) в режиме Контроль

This commit is contained in:
sasha80
2024-11-02 11:57:39 +03:00
parent d4b98c4cb3
commit fa436b1850
8 changed files with 56 additions and 28 deletions

View File

@@ -1,6 +1,7 @@
class_name sch_3 extends Node
const ONLINE_TIMEOUT = 5.0 ## Время ожидания пакета от ячейки, секунды.
const ONLINE_TIMEOUT: int = 5000 ## Время ожидания данных
const REQUEST_PERIOD: int = 3000 ## Переиод запроса, мс
class Sch3 extends unit.Unit:
@@ -29,24 +30,26 @@ class Sch3 extends unit.Unit:
## Изменяет состояние. Вызывать периодически.[br]
## [param tick] - Текущщее время в мс.[br]
func process(tick: int):
if online and ((tick - tick_rx) > ONLINE_TIMEOUT):
if online and ((tick - rx_tick) > ONLINE_TIMEOUT):
online = false
emit_signal('line_changed', self)
if (cmd_state == CmdState.WAIT) or (cmd_state == CmdState.SEND):
if cmd_state == CmdState.WAIT:
cmd_state = CmdState.FAIL
emit_signal('command_fail', self)
var rc = Error.ERR_BUSY
if cmd_state == CmdState.SEND:
rc = Error.OK
tick_tx = tick
cmd_state = CmdState.WAIT
if (tick - tx_tick) > REQUEST_PERIOD:
if read_input(0, 4):
tx_tick = tick
cmd_state = CmdState.WAIT
rc = Error.OK
return rc
## Производит разбор принятых данных. Вызывать при приёме данных на сокете.[br]
## [param data] - Данные принятые на сокете.[br]
## [param tick] - Текущщее время в мс.[br]
func parse(data: PackedByteArray, tick: int) -> bool:
tick_rx = tick
rx_tick = tick
if not online:
online = true
emit_signal('line_changed', self)
@@ -63,15 +66,18 @@ class Sch3 extends unit.Unit:
var addr = message_data[0]
var regs = message_data.slice(1)
emit_signal('responce_received', addr, regs)
rc = true
'info':
var msg = message['data']
emit_signal('info_received', msg)
'exception':
var msg = message['data']
cmd_state = CmdState.FAIL
emit_signal('except_received', msg)
rc = false
_:
var msg: String = 'код команды \"%s\" - не распознан' % message_code
cmd_state = CmdState.FAIL
emit_signal('parse_failed', msg)
rc = false
if (cmd_state == CmdState.WAIT) and rc:
@@ -98,7 +104,7 @@ class Sch3 extends unit.Unit:
## Отправляет команду "читать регистры хранения".[br]
## [param addr] - Начальный адрес регистров.[br]
## [param count] - Количество регистров от начального адреса.[br]
func read_holdind(addr: int, count: int = 1) -> bool:
func read_holding(addr: int, count: int = 1) -> bool:
if cmd_state != CmdState.DONE: return false
var json_dict = {'code': 'read_holding', 'data': [addr, count]}
tx_data = JSON.stringify(json_dict).to_utf8_buffer()