From 37a029f0e1e2796adb60c84595818b6972519ceb Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 11 Mar 2025 10:27:17 +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.=20yems-g=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D1=91=D0=BD=20=D0=B2=20prd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 1 - scenes/настройки/настройки.gd | 2 +- scenes/эмс/yems-consts.gd | 27 ++++++----- scenes/эмс/yems-g.gd | 81 ------------------------------- scripts/prd.gd | 90 ++++++++++++++++++++++++++++++----- 5 files changed, 93 insertions(+), 108 deletions(-) delete mode 100644 scenes/эмс/yems-g.gd diff --git a/project.godot b/project.godot index ee894e9..83ff45a 100644 --- a/project.godot +++ b/project.godot @@ -57,7 +57,6 @@ threats="*res://scripts/threats.gd" yemsdevs="*res://scenes/эмс/yems-devs.gd" yemsboards="*res://scenes/эмс/yems-boards.gd" yemsconsts="*res://scenes/эмс/yems-consts.gd" -yemsg="*res://scenes/эмс/yems-g.gd" interfer="*res://scripts/interfer.gd" hotkeys="*res://scripts/hotkeys.gd" tcp5p28="*res://scripts/tcp5p28.gd" diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index f763c43..3d66fd3 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -117,7 +117,7 @@ func setting_tab(): if parameter in settings_data: child.set_pressed(settings_data[parameter][0]) else: - child.set_pressed(false) + child.set_pressed(false) var commit_instance = $scroll_set/table.get_node2(1, 21) var server_instance = $scroll_set/table.get_node2(1, 22) commit_instance.text = '%s' % commit.VCS_HEAD diff --git a/scenes/эмс/yems-consts.gd b/scenes/эмс/yems-consts.gd index e37934b..dd27c0e 100644 --- a/scenes/эмс/yems-consts.gd +++ b/scenes/эмс/yems-consts.gd @@ -16,6 +16,7 @@ const STATUS_OFFSET = { ## Смещение статуса, ключ 1: 26, 2: 52 } +const EMG_G_ID = 4 const STATUS_OUT_OFFSET = 47 ## Смещение индекса выходных устройств относитель входных const KEMS_BOARD_NAME = 'КЭМС-Б1' ## Название платы КЭМС @@ -36,19 +37,19 @@ const FILES_NAME = ['Вариант 1', ] ## Первый элемент - имя юнита, второй - имя файла настроек -const EMS_G_BOARDS = [ - ['уарэп-яу07-2в','ЭМС-Г-В2'], - ['уарэп-яу07-2н','ЭМС-Г-Н2'], - ['уарэп-яу07-2к','ЭМС-Г-К2'], - ['уарэп-яу07-4в','ЭМС-Г-В4'], - ['уарэп-яу07-4н','ЭМС-Г-Н4'], - ['уарэп-яу07-4к','ЭМС-Г-К4'], - ['уарэп-яу07-1в','ЭМС-Г-В1'], - ['уарэп-яу07-1н','ЭМС-Г-Н1'], - ['уарэп-яу07-1к','ЭМС-Г-К1'], - ['уарэп-яу07-3в','ЭМС-Г-В3'], - ['уарэп-яу07-3н','ЭМС-Г-Н3'], - ['уарэп-яу07-3к','ЭМС-Г-К4'],] +const EMS_G_BOARDS = { + 'уарэп-яу07-2в':'ЭМС-Г-В2', + 'уарэп-яу07-2н':'ЭМС-Г-Н2', + 'уарэп-яу07-2к':'ЭМС-Г-К2', + 'уарэп-яу07-4в':'ЭМС-Г-В4', + 'уарэп-яу07-4н':'ЭМС-Г-Н4', + 'уарэп-яу07-4к':'ЭМС-Г-К4', + 'уарэп-яу07-1в':'ЭМС-Г-В1', + 'уарэп-яу07-1н':'ЭМС-Г-Н1', + 'уарэп-яу07-1к':'ЭМС-Г-К1', + 'уарэп-яу07-3в':'ЭМС-Г-В3', + 'уарэп-яу07-3н':'ЭМС-Г-Н3', + 'уарэп-яу07-3к':'ЭМС-Г-К3',} ## Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС. diff --git a/scenes/эмс/yems-g.gd b/scenes/эмс/yems-g.gd deleted file mode 100644 index 4dead05..0000000 --- a/scenes/эмс/yems-g.gd +++ /dev/null @@ -1,81 +0,0 @@ -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 and (not board.ems_load): - start_load(board) - elif not board.ems_load: - board.set_load_done() - elif board.ems_load and len(board.cmd_array): - board.execute_cmd() - 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) diff --git a/scripts/prd.gd b/scripts/prd.gd index 657e6cb..314b3b4 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -114,31 +114,88 @@ class Fs: class PRD: - const ug_addr: int = 0x100 ## адрес ячейки УГ + const ug_addr: int = 0x100 ## адрес ячейки УГ - var prd_name: String ## Имя прибора - var unit_yau07 ## Юнит эмс - var fs_dic: Dictionary ## Массив блоков ФС - var yemsg_board ## Плата ЭМС-Г + var prd_name: String ## Имя прибора + var unit_yau07 ## Юнит эмс + var fs_dic: Dictionary ## Массив блоков ФС + var yemsg_board: yemsboards.EmsBoard ## Плата ЭМС-Г - func _init(u_name ,u, yems_board): + func _init(u_name ,u): prd_name = u_name unit_yau07 = u - yemsg_board = yems_board + init_ems_g() + + func init_ems_g(): + 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]) + yemsg_board = yemsboards.EmsBoard.new(yemsconsts.EMG_G_ID, 0x120, in_tbl, out_tbl, unit_yau07) + yemsg_board.ems_g_fn = yemsconsts.EMS_G_BOARDS[prd_name] + var params = ['','',0.0, 0,0] + for item in yemsg_board.in_tbl: + var in_dev: yemsdevs.InDev = yemsdevs.InDev.new(item[0], params, 0, 0x120) + yemsg_board.in_devs[in_dev.id] = in_dev + for item in yemsg_board.out_tbl: + var out_dev = yemsdevs.OutDev.new(item[0], params, 0, 0x120) + yemsg_board.out_devs[out_dev.id] = out_dev + yemsg_board.need_write = true + unit_yau07.connect('data_received', Callable(self, 'on_data_ems_received').bind()) + unit_yau07.connect('command_done', Callable(self, 'on_command_done').bind()) + unit_yau07.connect('line_changed', Callable(self, 'on_line_changed').bind()) + + func on_command_done(unit_ems): + yemsg_board.on_command_done(unit_ems) + + func on_line_changed(unit_ems): + if not unit_ems.online: + yemsg_board.ems_load = false + yemsg_board.state_board = yemsg_board.WAIT + yemsg_board.state_cmd = yemsg_board.WAIT + yemsg_board.need_write = true + + func on_data_ems_received(unit_ems): + yemsg_board.set_status(unit_ems.status) + if yemsg_board.state_board == yemsg_board.WAIT and yemsg_board.state_cmd == yemsg_board.WAIT: + if yemsg_board.online: + if yemsg_board.need_write and (not yemsg_board.ems_load): + start_load() + elif not yemsg_board.ems_load: + yemsg_board.set_load_done() + elif yemsg_board.ems_load and len(yemsg_board.cmd_array): + yemsg_board.execute_cmd() + else: + yemsg_board.need_write = true + + func start_load(): + var file = FileAccess.open(yemsconsts.emsg_files_folder + yemsg_board.ems_g_fn, FileAccess.READ) + if file == null: + yemsg_board.state_board = yemsg_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() + yemsg_board.btn_load(json_data) + yemsg_board.state_board = yemsg_board.WRITE + yemsg_board.start_rw_kems(false) + else: + yemsg_board.state_board = yemsg_board.LOAD_FAIL func on_update_modulation(index): yemsg_board.add_cmd(index/4, fs_dic[index].modulation) func _ready() -> void: + check_dir() for prd_name in prd_names: var unit_key = settings.get_unit_key(prd_name) var unit_prd = network.units[unit_key] - for yemsg_board in yemsg.ems_board.values(): - if yemsg_board[1] == unit_prd: - var yemsg_b = yemsg_board[0] - var new_prd = PRD.new(prd_name, unit_prd, yemsg_b) - prd_dict[prd_name] = new_prd + var new_prd = PRD.new(prd_name, unit_prd) + prd_dict[prd_name] = new_prd for key in fs_prd.keys(): var fs = Fs.new(key, fs_prd[key][0]) fs_dict[key] = fs @@ -184,3 +241,12 @@ func update_fs_state(ecms): fs_state = 3 if (dev_mode != fs_state) or (fs_state == 3): fs.emit_signal('update_modulation') + + +## Проверяет ниличие директории, если их нет, создаёт +func check_dir(): + var dir = DirAccess.open(yemsconsts.emsg_files_folder) + if dir: + return + else: + DirAccess.make_dir_absolute(yemsconsts.emsg_files_folder)