Доработка. yems-g перенесён в prd

This commit is contained in:
MaD_CaT
2025-03-11 10:27:17 +03:00
parent e25c89fbf9
commit 37a029f0e1
5 changed files with 93 additions and 108 deletions

View File

@@ -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"

View File

@@ -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

View File

@@ -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',}
## Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС.

View File

@@ -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)

View File

@@ -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)