Доработка. Добавлен модуль работы с ЭМС-Г. При выходе на связь загружает настройки в ячейки ЭМС-Г.

This commit is contained in:
MaD_CaT
2024-12-23 09:18:36 +03:00
parent 2d5598ea1b
commit 14b1553bbb

79
scripts/yems-g.gd Normal file
View File

@@ -0,0 +1,79 @@
extends Node
var ems_board: Dictionary = {}
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
check_dir()
var in_tbl: Array = []
var out_tbl: Array = []
for j in yemsconsts.NUM_INPUT_G:
in_tbl.append([j+1])
out_tbl.append([j+yemsconsts.STATUS_OUT_OFFSET])
for i in len(yemsconsts.EMS_G_BOARDS):
var unit_key = settings.get_unit_key(yemsconsts.EMS_G_BOARDS[i][0])
var unit_ems = network.units[unit_key]
var ems_g: yemsboards.EmsBoard = yemsboards.EmsBoard.new(i+3, 0x120, in_tbl, out_tbl, unit_ems)
ems_board[i+3] = [ems_g, unit_ems]
ems_g.ems_g_fn = yemsconsts.EMS_G_BOARDS[i][1]
var params = ['','',0.0, 0,0]
for item in ems_g.in_tbl:
var in_dev: yemsdevs.InDev = yemsdevs.InDev.new(item[0], params, 0, 0x120)
ems_g.in_devs[in_dev.id] = in_dev
for item in ems_g.out_tbl:
var out_dev = yemsdevs.OutDev.new(item[0], params, 0, 0x120)
ems_g.out_devs[out_dev.id] = out_dev
ems_g.need_write = true
unit_ems.connect('data_received', Callable(self, 'on_data_ems_received').bind(ems_g))
unit_ems.connect('command_done', Callable(self, 'on_command_done').bind(ems_g))
unit_ems.connect('line_changed', Callable(self, 'on_line_changed').bind(ems_g))
func on_line_changed(unit_ems, board):
if not unit_ems.online:
board.ems_load = false
board.state_board = board.WAIT
board.state_cmd = board.WAIT
board.need_write = true
func on_data_ems_received(unit_ems, board):
board.set_status(unit_ems.status)
if board.state_board == board.WAIT and board.state_cmd == board.WAIT:
if board.online:
if board.need_write:
start_load(board)
elif not board.ems_load:
board.set_load_done()
else:
board.need_write = true
func on_command_done(unit_ems, board):
board.on_command_done(unit_ems)
func start_load(board):
var file = FileAccess.open(yemsconsts.emsg_files_folder + board.ems_g_fn, FileAccess.READ)
if file == null:
board.state_board = board.LOAD_FAIL
return
var read = file.get_as_text()
file.close()
var json_conv: = JSON.new()
if Error.OK == json_conv.parse(read):
var json_data = json_conv.get_data()
board.btn_load(json_data)
board.state_board = board.WRITE
board.start_rw_kems(false)
else:
board.state_board = board.LOAD_FAIL
## Проверяет ниличие директории, если их нет, создаёт
func check_dir():
var dir = DirAccess.open(yemsconsts.emsg_files_folder)
if dir:
return
else:
DirAccess.make_dir_absolute(yemsconsts.emsg_files_folder)