Доработка. yems-g перенесён в prd
This commit is contained in:
@@ -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