Доработка. yems-g перенесён в prd
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',}
|
||||
|
||||
|
||||
## Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС.
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user