From 14b1553bbb16b6398bcad655ebeb3752c52719d7 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 23 Dec 2024 09:18:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=AD=D0=9C=D0=A1-=D0=93.?= =?UTF-8?q?=20=D0=9F=D1=80=D0=B8=20=D0=B2=D1=8B=D1=85=D0=BE=D0=B4=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B2=D1=8F=D0=B7=D1=8C=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B6=D0=B0=D0=B5=D1=82=20=D0=BD=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20=D0=B2=20=D1=8F=D1=87?= =?UTF-8?q?=D0=B5=D0=B9=D0=BA=D0=B8=20=D0=AD=D0=9C=D0=A1-=D0=93.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/yems-g.gd | 79 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 scripts/yems-g.gd diff --git a/scripts/yems-g.gd b/scripts/yems-g.gd new file mode 100644 index 00000000..d5bced07 --- /dev/null +++ b/scripts/yems-g.gd @@ -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)