Merge remote-tracking branch 'MaD_CaT/master'

This commit is contained in:
sasha80
2024-11-12 09:23:30 +03:00
4 changed files with 181 additions and 74 deletions

View File

@@ -11,7 +11,7 @@ const CellFront = preload('res://scenes/cell/cell-front.tscn')
const CellFrontRear = preload('res://scenes/cell/cell-front-rear.tscn')
## Режимы работы выходов.
const OUT_MODE: Array = ['Работа', 'Контроль', '1', '0'] #
const OUT_MODE: Array = ['Работа', 'Контроль', '0', '1'] #
const COLUMN_OPTS_BTN: Array = [5]
const TABLE_ENTRY_COLUMNS: Array = [2,3]
const OUT_SET_ROW: Array = [CellLineEdit, CellLEEmpty, CellLEEmpty, CellLEEmpty, CellLEEmpty, CellLEEmpty]
@@ -66,39 +66,47 @@ func init_boards():
board.connect('upd_delay_offset', Callable(self, 'on_upd_delay_offset'))
board.connect('upd_o_state', Callable(self, 'on_upd_o_state'))
$btn_connect.connect('pressed', Callable(self, 'on_btn_connect'))
$btn_disconnect.connect('pressed', Callable(self, 'on_btn_disconnect'))
$btn_disconnect.connect('pressed', Callable(self, 'on_btn_disconnect').bind(unit_ems))
$btn_flash_read.button_connect('pressed', Callable(self, 'on_btn_flash_read').bind($btn_flash_read))
$btn_flash_write.button_connect('pressed', Callable(self, 'on_btn_flash_write').bind($btn_flash_write))
## Обработчик нажатия кнопки disconnect.
func on_btn_disconnect():
func on_btn_disconnect(unit_ems):
var selected_rows_in: Array = []
var selected_rows_out: Array = []
$scrl_in_set/tbl_in_set.get_selected_rows(selected_rows_in)
$scrl_out_set/tbl_out_set.get_selected_rows(selected_rows_out)
if not active_board.read_done:
return
if len(selected_rows_in):
on_disconnect($scrl_in_set/tbl_in_set, selected_rows_in, 'вход')
on_disconnect($scrl_in_set/tbl_in_set, selected_rows_in, unit_ems)
elif len(selected_rows_out):
on_disconnect($scrl_out_set/tbl_out_set, selected_rows_out, 'выход')
on_disconnect($scrl_out_set/tbl_out_set, selected_rows_out, unit_ems)
## Разрывает связь входа и выхода, [param tbl] - таблица, [param selected_rows] - выбранные строки.
## [param type_dev] - тип, 'вход' или 'выход'.
func on_disconnect(tbl, selected_rows, type_dev: String):
var dev = tbl.get_node_user_data(0, 0)
var user_data: Array = tbl.get_node_user_data(0, selected_rows[0])
var con_dev = user_data[0]
var connector: String = con_dev.connector
dev.connect_devs.erase(con_dev.connector)
con_dev.connect_devs.erase(dev.connector)
if type_dev == 'вход':
set_in_dev(dev)
set_out_dev(con_dev)
elif type_dev == 'выход':
set_in_dev(con_dev)
set_out_dev(dev)
func on_disconnect(tbl, selected_rows, unit_ems):
var o_dev: yemsdevs.OutDev
var i_dev: yemsdevs.InDev
var dev = tbl.get_node_user_data(0, 0)
if dev is yemsdevs.OutDev:
o_dev = dev
i_dev = tbl.get_node_user_data(0, selected_rows[0])[0]
else:
i_dev = dev
o_dev = tbl.get_node_user_data(0, selected_rows[0])[0]
if not unit_ems.online or not g_boards[tbl.get_node_user_data(0, selected_rows[0])[1]].online:
return
i_dev.connect_devs.erase(o_dev.dev_name)
o_dev.connect_devs.erase(i_dev.dev_name)
active_board = g_boards[tbl.get_node_user_data(0, selected_rows[0])[1]]
active_board.set_connection(o_dev.id, i_dev.id, false)
set_in_dev(i_dev)
set_out_dev(o_dev)
## Обработчик нажатия кнопки "Прочитать".
@@ -168,8 +176,36 @@ func init_tbl_in():
## Обработчик редактирования Entry в таблице параметров входов/выходов.
func on_edit_entry(text : String, entry):
print_debug(text, entry)
func on_edit_entry(text : String, args):
var entry = args[0]
var tbl = args[1]
var dev = args[2]
var indexis = tbl.get_key_indexes(args[0].name)
var col_i = indexis[0]
var read = true
var is_delay = true
var val = float(text)
if text.is_valid_float():
var max_val = 0
if col_i == yemsconsts.I_COL_DELAY:
max_val = yemsconsts.MAX_VAL_DELAY
else:
max_val = yemsconsts.MAX_VAL_OFFSET
is_delay = false
if val > max_val:
val = max_val
elif val < 0:
val = 0.0
entry.set_text(str('%3.1f' % val))
read = false
else:
if col_i == yemsconsts.I_COL_DELAY:
entry.set_text(str('%3.1f' % dev.delay))
else:
entry.set_text(str('%3.1f' % dev.offset))
if active_board.read_done and g_boards[dev.board].online:
active_board = g_boards[dev.board]
active_board.set_delay(dev.id, val, is_delay, read)
## Обработчик выбора строки в таблице входов.
@@ -183,7 +219,7 @@ func on_selected_changed_in(i_row: int):
## Обработчик нажатия на таблицу входов.
func on_row_pressed_in(i_row: int):
on_row_pressed(i_row, $scrollin/tbl_in)
on_row_pressed(i_row, $scrollin/tbl_in, true)
on_selected_changed_in(i_row)
@@ -198,7 +234,7 @@ func on_selected_changed_si(i_row: int):
if i_row < 2:
return
var out_user_data = $scrl_in_set/tbl_in_set.get_node_user_data(0, i_row)
var dev = out_user_data[0]
var dev = out_user_data
var connector = dev.connector
for i in range($scrollout/tbl_out.get_rows_count()):
var node = $scrollout/tbl_out.get_node2(1, i)
@@ -210,7 +246,7 @@ func on_selected_changed_si(i_row: int):
func on_row_pressed_si(i_row: int):
if i_row < 2:
return
on_row_pressed(i_row, $scrl_in_set/tbl_in_set)
on_row_pressed(i_row, $scrl_in_set/tbl_in_set, true)
on_selected_changed_si(i_row)
@@ -246,6 +282,7 @@ func init_tbl_out():
$scrollout/tbl_out.set_node_user_data(i, row_index, [out_dev, board])
if i in COLUMN_OPTS_BTN:
cell.text = OUT_MODE[out_dev.mode]
cell.editable = false
$scrollout/tbl_out.set_columns_min_size([250, 100, 70, 70, 70, 100])
$scrollout/tbl_out.set_columns_alignments(yams_alligment_out)
$scrollout/tbl_out.connect('row_pressed', Callable(self, 'on_row_pressed_out'))
@@ -265,7 +302,7 @@ func on_selected_changed_so(i_row: int):
if i_row < 2:
return
var in_user_data = $scrl_out_set/tbl_out_set.get_node_user_data(0, i_row)
var dev = in_user_data[0]
var dev = in_user_data
var connector = dev.connector
for i in range($scrollin/tbl_in.get_rows_count()):
var node = $scrollin/tbl_in.get_node2(1, i)
@@ -277,7 +314,7 @@ func on_selected_changed_so(i_row: int):
func on_row_pressed_so(i_row: int):
if i_row < 2:
return
on_row_pressed(i_row, $scrl_out_set/tbl_out_set)
on_row_pressed(i_row, $scrl_out_set/tbl_out_set, true)
on_selected_changed_so(i_row)
@@ -292,7 +329,7 @@ func on_selected_changed_out(i_row: int):
## Обработчик выбора строки в таблице выходов.
func on_row_pressed_out(i_row: int):
on_row_pressed(i_row, $scrollout/tbl_out)
on_row_pressed(i_row, $scrollout/tbl_out, true)
on_selected_changed_out(i_row)
@@ -303,6 +340,7 @@ func set_out_dev(dev):
var mode = $scrl_out_set/tbl_out_set.get_node2(5, 0)
for opt in OUT_MODE:
mode.add_item(opt)
mode.connect('item_selected', Callable(self, 'on_switch_done').bind(dev))
mode.select(dev.mode)
@@ -345,14 +383,14 @@ func set_dev(tbl, dev, row_type, row_type_conn, lbl_text, row_size):
le.editable = false
for i in dev.connect_devs:
var dev_con = dev.connect_devs[i][0]
var dev_con = dev.connect_devs[i]
tbl.add_row(row_type_conn)
var node_index: Array = [0, tbl.get_rows_count() -1]
var le_name_out: LineEdit = tbl.get_node2(node_index[0], node_index[1])
disable_edit(tbl, len(row_type_conn), node_index[1])
le_name_out.text = dev_con.dev_name
tbl.set_node_user_data(node_index[0], node_index[1], dev.connect_devs[i])
tbl.connect_columns(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [])
tbl.connect_columns(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [tbl, dev])
## Обработчик нажатия кнопки connect.
@@ -386,7 +424,7 @@ func add_connection_dev(tbl, dev1, dev2, set_row, user_data):
le_name.text = dev1.dev_name
disable_edit(tbl, len(set_row), node_index[1])
tbl.set_node_user_data(node_index[0], node_index[1], user_data)
dev2.connect_devs[dev1.dev_name] = user_data
dev2.connect_devs[dev1.dev_name] = dev1
if dev1 is yemsdevs.OutDev:
active_board = g_boards[user_data[1]]
active_board.set_connection(dev1.id, dev2.id, true)
@@ -403,21 +441,28 @@ func disable_edit(tbl, num_col: int, i_row: int):
## Обработчик выбора строки с таблице.
func on_row_pressed(i_row: int, tbl):
func on_row_pressed(i_row: int, tbl, set_selected: bool):
tbl.clear_rows_selected()
var is_row_selected = tbl.is_row_selected(i_row)
tbl.set_row_selected(i_row, not is_row_selected)
if set_selected:
tbl.set_row_selected(i_row, true)
else:
tbl.set_row_selected(i_row, not is_row_selected)
## Обработчик получения пакета от ячейки ЯУ-07Б
func on_data_ems_received(unit_ems):
for board in g_boards.values():
board.set_status(unit_ems.status)
if active_board.state_read == active_board.WAIT:
if active_board.state_board == active_board.WAIT and active_board.state_cmd == active_board.WAIT:
if board.online and not board.read_done and board.ems_load:
active_board = board
active_board.state_read = active_board.READ
active_board.state_board = active_board.READ
active_board.start_rw_kems(true)
elif board.online and board.read_done and board.ems_load and board.need_flash_rd:
active_board = board
active_board.state_board = active_board.READ_FLASH
#active_board.start_rw_kems(true)
for i_row in range($scrollin/tbl_in.get_rows_count()):
var state_pic = ($scrollin/tbl_in.get_node2(4, i_row))
var dev = $scrollin/tbl_in.get_node_user_data(4, i_row)[0]
@@ -442,7 +487,7 @@ func on_line_changed(unit_ems):
$lbl_online.text = 'Ячейка ЯУ-07 не на связи'
$lbl_online.modulate = Color.RED
for board in g_boards.values():
board.state_read = board.WAIT
board.state_board = board.WAIT
board.read_done = false
@@ -453,12 +498,30 @@ func on_upd_delay_offset(_board, dev):
var tbl = $scrollin/tbl_in
if dev is yemsdevs.OutDev:
tbl = $scrollout/tbl_out
var le_delay = tbl.get_node2(2, dev.tbl_row_id)
var le_offset = tbl.get_node2(3, dev.tbl_row_id)
var le_delay = tbl.get_node2(TABLE_ENTRY_COLUMNS[0], dev.tbl_row_id)
var le_offset = tbl.get_node2(TABLE_ENTRY_COLUMNS[1], dev.tbl_row_id)
le_delay.set_text(str('%3.1f' % dev.delay))
le_offset.set_text(str('%3.1f' % dev.offset))
## Вызывается по обновлению информации о режиме выходов
func on_upd_o_state(board, dev):
pass
var le_mode = $scrollout/tbl_out.get_node2(COLUMN_OPTS_BTN[0], dev.tbl_row_id)
le_mode.set_text(OUT_MODE[dev.mode])
dev.connect_devs.clear()
for in_d in board.in_devs.values():
if in_d.connect_devs.has(dev.dev_name):
in_d.connect_devs.erase(dev.dev_name)
for in_id in dev.btns_state:
if dev.btns_state[in_id] and board.in_devs.has(in_id):
var in_dev = board.in_devs[in_id]
in_dev.connect_devs[dev.dev_name] = dev
dev.connect_devs[in_dev.dev_name] = in_dev
## Вызывается при выборе режима работы выхода
func on_switch_done(mode, dev):
var board = g_boards[dev.board]
if active_board.state_board == active_board.WAIT and board.online:
active_board = board
active_board.change_mode(dev.id, mode)

View File

@@ -13,14 +13,16 @@ class YaU07 extends unit.Unit:
## Коды выполняемых команд.
enum CmdCode {
READ_ISA = 0, ## Код команды "читать порт ISA" ячейки ЯУ-07
WRITE_ISA = 1, ## Код команды "записать порт ISA" ячейки ЯУ-07
ERASE_FLASH = 49, ## Код команды "стереть данные из FLASH" ячейки ЯУ-07
WRITE_FLASH = 50, ## Код команды "записать данные в FLASH" ячейки ЯУ-07
READ_FLASH = 51, ## Код команды "прочитать данные из FLASH" ячейки ЯУ-07
LOAD_FLASH = 52, ## Код команды "записать данные из FLASH в КЭМС" ячейки ЯУ-07
WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07
READ_BLOCK = 61, ## Код команды "читать блок данных ISA" внешней шины ячейки ЯУ-07
READ_ISA = 0, ## Код команды "читать порт ISA" ячейки ЯУ-07
WRITE_ISA = 1, ## Код команды "записать порт ISA" ячейки ЯУ-07
ERASE_FLASH = 49, ## Код команды "стереть данные из FLASH" ячейки ЯУ-07
WRITE_FLASH = 50, ## Код команды "записать данные в FLASH" ячейки ЯУ-07
READ_FLASH = 51, ## Код команды "прочитать данные из FLASH" ячейки ЯУ-07
LOAD_FLASH = 52, ## Код команды "записать данные из FLASH в КЭМС" ячейки ЯУ-07
READ_FLASH_MP550 = 56, ## Код команды "прочитать данные из FLASH" ячейки ЯУ-07
WRITE_FLASH_MP550 = 55, ## Код команды "записать данные из FLASH в КЭМС" ячейки ЯУ-07
WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07
READ_BLOCK = 61, ## Код команды "читать блок данных ISA" внешней шины ячейки ЯУ-07
}
## Состояние автомата выполнения команды.
@@ -37,7 +39,7 @@ class YaU07 extends unit.Unit:
var cmd_state = CmdState.UNCK ## Состояние выполнения команды
var cmd_result: = 1 ## Результат выполнения команды. Устанавливается в ЯУ-07
var cmd_data: = PackedByteArray() ## Данные команды. Устанавливается в ЯУ-07
var cmd_retry = 0 ## Счётчик оставшихся попыток выполнить команду
var cmd_retry = RETRY_COUNT ## Счётчик оставшихся попыток выполнить команду
var cmd_code_rx = 0 ## Код последней выполненой команды
var cmd_tick_tx = 0.0 ## Время последней отправки команды
var cmd_tick_rx = 0.0 ## Время последнего приёма команды
@@ -80,7 +82,7 @@ class YaU07 extends unit.Unit:
rc = Error.FAILED
return rc
func send_flash(cmd_code: int, fl_data: Array, num_byte_rd: int) -> bool:
func send_flash(cmd_code: int, fl_data: Array, num_byte_rd: int, id_sector: int = 0) -> bool:
if (cmd_state == CmdState.WAIT) \
or (cmd_state == CmdState.SEND) \
or (cmd_state == CmdState.UNCK):
@@ -105,6 +107,11 @@ class YaU07 extends unit.Unit:
tx_len = 11
tx_data.encode_u16(7, 0)
tx_data.encode_u16(9, num_byte_rd)
elif cmd_code == CmdCode.READ_FLASH_MP550:
tx_len = 12
tx_data.encode_u8(7, id_sector)
tx_data.encode_u16(8, 0)
tx_data.encode_u16(10, num_byte_rd)
cmd_state = CmdState.SEND
return true
@@ -211,6 +218,9 @@ class YaU07 extends unit.Unit:
if cmd_code == CmdCode.READ_FLASH:
flash_len = rx_data.decode_u16(status_len + 12)
flash_data = rx_data.slice(status_len + 14)
if cmd_code == CmdCode.READ_FLASH_MP550:
flash_len = rx_data.decode_u16(status_len + 13)
flash_data = rx_data.slice(status_len + 15)
return true
## Заполняет состояние прибора данными прочитанными из портов ЯУ-07.
@@ -270,6 +280,7 @@ class YaU07 extends unit.Unit:
rc = parse_block(rx_data, status_len)
elif (cmd_code == CmdCode.ERASE_FLASH) or (cmd_code == CmdCode.WRITE_FLASH) \
or (cmd_code == CmdCode.READ_FLASH_MP550) or (cmd_code == CmdCode.WRITE_FLASH_MP550) \
or (cmd_code == CmdCode.READ_FLASH) or (cmd_code == CmdCode.LOAD_FLASH):
rc = parse_flash(rx_data, status_len, cmd_code)

View File

@@ -13,8 +13,8 @@ LOAD_KEMS, WRITE_FLASH_END}
var out_tbl: Array
var online: bool ## статус платы
var ems_load: bool ## флаг загрузки платы
var state = WAIT ## текущее состояние платы ЭМС
var state_read = WAIT ## текущее состояние платы ЭМС
var state_cmd = WAIT ## текущее состояние платы ЭМС
var state_board = WAIT ## текущее состояние платы ЭМС
var cur_dev ## Текущее устройство
var cur_dev_num: = 0 ## Номер текущего устройства
var cur_dev_index: = 0 ## Индекс текущего устройства в списке
@@ -22,6 +22,7 @@ LOAD_KEMS, WRITE_FLASH_END}
var need_next_dev: bool = false ## Нужно ли переходить к следующему устройству
var unit_ems ## Юнит эмс
var read_done: bool = false ## Флаг, что данные из ячейки прочитанны
var need_flash_rd: bool = false ## Флаг, что надо прочитать флеш
signal upd_delay_offset(board, cur_dev)
signal upd_o_state(board, cur_dev)
@@ -64,20 +65,20 @@ LOAD_KEMS, WRITE_FLASH_END}
in_dev.state = 0
for out_dev in out_devs.values():
if (out_kz >> (out_dev.id - 1)) & 1:
if (out_kz >> (out_dev.id - yemsconsts.STATUS_OUT_OFFSET)) & 1:
out_dev.state = 3
elif (out_blank >> (out_dev.id - 1)) & 1:
elif (out_blank >> (out_dev.id - yemsconsts.STATUS_OUT_OFFSET)) & 1:
out_dev.state = 1
elif (out_imp >> (out_dev.id - 1)) & 1:
elif (out_imp >> (out_dev.id - yemsconsts.STATUS_OUT_OFFSET)) & 1:
out_dev.state = 2
else:
out_dev.state = 0
# Отправка команды на запись или чтение порта
func on_wr_device(dev_number):
if (state == WR_DEV_NUM_W) or (state == WR_DEV_NUM_R):
if (state_cmd == WR_DEV_NUM_W) or (state_cmd == WR_DEV_NUM_R):
unit_ems.send_isa(unit_ems.CmdCode.WRITE_ISA, [base_addr_isa + 2, dev_number])
elif state == WRITE:
elif state_cmd == WRITE:
var ports: Array = []
if not check_dev_number():
return
@@ -87,7 +88,7 @@ LOAD_KEMS, WRITE_FLASH_END}
ports.append(port)
ports.append(data)
unit_ems.send_isa(unit_ems.CmdCode.WRITE_ISA, ports)
elif state == READ:
elif state_cmd == READ:
var ports: Array = []
for port in cur_dev.ports_data:
if port in ports_to_wr:
@@ -98,19 +99,19 @@ LOAD_KEMS, WRITE_FLASH_END}
func on_command_done(_yau_07):
if not check_dev_number():
return
if (unit_ems.cmd_code_rx == 1) and state == WR_DEV_NUM_W:
state = WRITE
if (unit_ems.cmd_code_rx == 1) and state_cmd == WR_DEV_NUM_W:
state_cmd = WRITE
cur_dev_num = unit_ems.isa_ports[base_addr_isa + 2]
if not check_dev_number():
return
on_wr_device(cur_dev_num)
elif (unit_ems.cmd_code_rx == 1) and state == WR_DEV_NUM_R:
state = READ
elif (unit_ems.cmd_code_rx == 1) and state_cmd == WR_DEV_NUM_R:
state_cmd = READ
cur_dev_num = unit_ems.isa_ports[base_addr_isa + 2]
if not check_dev_number():
return
on_wr_device(cur_dev_num)
elif (state == READ) or (state == WRITE) \
elif (state_cmd == READ) or (state_cmd == WRITE) \
and ((unit_ems.cmd_code_rx == 1) or (unit_ems.cmd_code_rx == 0)):
for key in unit_ems.isa_ports.keys():
if cur_dev.ports_data.has(key):
@@ -125,32 +126,32 @@ LOAD_KEMS, WRITE_FLASH_END}
cur_dev_index += 1
if cur_dev_index < len(dev_num_list):
cur_dev_num = dev_num_list[cur_dev_index][0]
if state == READ:
state = WR_DEV_NUM_R
if state_cmd == READ:
state_cmd = WR_DEV_NUM_R
on_wr_device(cur_dev_num)
else:
state = WR_DEV_NUM_W
state_cmd = WR_DEV_NUM_W
on_wr_device(cur_dev_num)
else: # Пробег закончен, выбираем последнее устройство
state = WAIT
state_read = WAIT
state_cmd = WAIT
state_board = WAIT
read_done = true
cur_dev_index -= 1
need_next_dev = false
else:
state = WAIT
state_cmd = WAIT
elif (state == READ_FLASH) and (unit_ems.cmd_code_rx == 51):
elif (state_cmd == READ_FLASH) and (unit_ems.cmd_code_rx == 51):
pass
#read_flash()
elif (state == WRITE_FLASH_BEGIN) and (unit_ems.cmd_code_rx == 49):
elif (state_cmd == WRITE_FLASH_BEGIN) and (unit_ems.cmd_code_rx == 49):
pass
#write_flash()
#emit_signal('write_msg', 'Произведено чтение из ПЗУ ячейки ЯУ-07')
elif (state == LOAD_KEMS) and (unit_ems.cmd_code_rx == 52):
elif (state_cmd == LOAD_KEMS) and (unit_ems.cmd_code_rx == 52):
pass
#start_rw_kems(true)
elif (state == WRITE_FLASH_END) and (unit_ems.cmd_code_rx == 50):
elif (state_cmd == WRITE_FLASH_END) and (unit_ems.cmd_code_rx == 50):
pass
#load_flash()
#emit_signal('write_msg', 'Произведена запись в ПЗУ ячейки ЯУ-07')
@@ -159,7 +160,7 @@ LOAD_KEMS, WRITE_FLASH_END}
func check_dev_number():
cur_dev = get_dev()
if not cur_dev:
state = WAIT
state_cmd = WAIT
return false
return true
@@ -178,14 +179,38 @@ LOAD_KEMS, WRITE_FLASH_END}
cur_dev_num = dev_num_list[cur_dev_index][0]
need_next_dev = true
if read:
state = WR_DEV_NUM_R
state_cmd = WR_DEV_NUM_R
else:
state = WR_DEV_NUM_W
state_cmd = WR_DEV_NUM_W
on_wr_device(cur_dev_num)
func set_connection(o_dev, i_dev, val):
cur_dev_num = o_dev
if check_dev_number():
cur_dev.set_dot(i_dev, val)
state = WR_DEV_NUM_W
state_cmd = WR_DEV_NUM_W
on_wr_device(cur_dev_num)
func change_mode(o_dev, mode):
cur_dev_num = o_dev
if check_dev_number():
cur_dev.set_sw_mode(mode)
state_cmd = WR_DEV_NUM_W
on_wr_device(cur_dev_num)
func set_delay(dev_index, val, is_delay, read):
cur_dev_num = dev_index
if check_dev_number():
if not read:
if is_delay:
cur_dev.set_delay(val)
else:
cur_dev.set_offset(val)
state_cmd = WR_DEV_NUM_W
else:
state_cmd = WR_DEV_NUM_R
on_wr_device(cur_dev_num)
func on_btn_flash_read():
unit_ems.send_flash(unit_ems.CmdCode.READ_FLASH,[], yemsconsts.NUM_BYTE_FROM_FLASH, id_board)
state_cmd = READ_FLASH

View File

@@ -2,15 +2,23 @@ class_name yerms_consts extends Node
const NUM_INPUT = 38
const NUM_OUTPUT = 38
const NUM_BYTE_FROM_FLASH = 760
const STATUS_OFFSET = { # Смещение статуса, ключ id платы
0: 0,
1: 26,
2: 52 }
const STATUS_OUT_OFFSET = 47
const KEMS_BOARD_NAME = 'КЭМС-Б'
const EMS1_BOARD_NAME = 'ЭМС-Б1'
const EMS2_BOARD_NAME = 'ЭМС-Б2'
const MAX_VAL_DELAY = 6.3
const MAX_VAL_OFFSET = 51.1
const I_COL_OFFSET = 3
const I_COL_DELAY = 2
## Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС.
const INPUT_KEMS = [
[1 ,['УИЗП №1', 'Х7', '0.00', '0.00']],