extends Node2D #var unit = Yau07.YaU07.new('ЯУ07') var flag_mode = Constants.ADDRESSES[0][3] var broadcast_packet: PackedByteArray var node_select1: Node var node_select2: Node var flag_yau_control: bool var CONTROL_TABLE: Array func _ready() -> void: # Таблица УКП_1 node_select1 = $TabContainer/PRD/scroll1/table1 draw_tabl(node_select1, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size()) node_select1.set_columns_min_size([120, 120]) node_select1.set_node_text(0, 0, 'Мощность') node_select1.set_node_text(1, 0, 'Температура') # Таблица УКП_2 node_select2 = $TabContainer/PRD/scroll2/table2 draw_tabl(node_select2, Constants.ROWS_UKP2_DATA, Constants.ROWS_UKP2_DATA.size()) node_select2.set_columns_min_size([120, 120]) node_select2.set_node_text(0, 0, 'Мощность') node_select2.set_node_text(1, 0, 'Температура') # Выбор прибора для подключения var node_select_device = $TabContainer/PRD/select_dev/select_dev draw_tabl(node_select_device, Constants.SELECT_DEVICE, Constants.SELECT_DEVICE.size()) var get_select_device = node_select_device.get_node2(1, 0) # Заполнение адресов for i_addr in Constants.ADDRESSES.size(): get_select_device.add_item(Constants.ADDRESSES[i_addr][0]) get_select_device.set_item_metadata(i_addr, Constants.ADDRESSES[i_addr].slice(1,4)) get_select_device.connect('item_selected', Callable(self, 'on_btn_select')) node_select_device.get_node2(0,0).text = 'ПРИБОР' node_select_device.set_columns_min_size([100, 100]) # Контроль var node_control_device = $TabContainer/ControlPanel/control_tbl for i in Constants.CONTROL_DEVICE.size(): CONTROL_TABLE.append([Constants.TableNode]) draw_tabl(node_control_device, CONTROL_TABLE, CONTROL_TABLE.size()) for i in Constants.CONTROL_DEVICE.size(): node_control_device.get_node2(0, i).text = Constants.CONTROL_DEVICE[i] node_control_device.set_columns_min_size([300]) $TabContainer/PRD/Zapret.connect('toggled', Callable(self, '_on_zapret').bind($TabContainer/PRD/Zapret)) $TabContainer/PRD/Zapret2.connect('toggled', Callable(self, '_on_zapret').bind($TabContainer/PRD/Zapret2)) Network.connect('_yau_status_line', Callable(self, '_on_yau_status')) Network.connect('_yau_receive', Callable(self, '_on_data_received')) Network.connect('_yau_read_isa', Callable(self, '_on_read_isa')) ## From Network status about yau-07 func _on_yau_status(yau_status): if yau_status: $TabContainer/ControlPanel/control_tbl.get_node2(0, 0).text = 'ЯУ-07Б НА СВЯЗИ' $TabContainer/ControlPanel/control_tbl.get_node2(0, 0).modulate = Color.GREEN flag_yau_control = true else: $TabContainer/ControlPanel/control_tbl.get_node2(0, 0).text = 'НЕТ СВЯЗИ С ЯУ-07Б' $TabContainer/ControlPanel/control_tbl.get_node2(0, 0).modulate = Color.RED for dev in (Constants.CONTROL_DEVICE.size() - 1): var node_board = $TabContainer/ControlPanel/control_tbl.get_node2(0, dev+1) node_board.modulate = Color.RED flag_yau_control = false func _on_read_isa(unit_isa_ports): $ISA.text = 'ISA: ' + str(unit_isa_ports) ## Рисует таблицу func draw_tabl(tbl, row: Array, count_row: int): for i_row in count_row: tbl.add_row(row[i_row]) func _process(delta: float) -> void: pass func _on_data_received(data_from_yau_07): if flag_yau_control: var status_board = data_from_yau_07.decode_u8(Constants.DataIndices.STATUS_BOARD) var in_blank: int = data_from_yau_07.decode_u16(Constants.DataIndices.IN_BLANK_PRD) var in_imp: int = data_from_yau_07.decode_u16(Constants.DataIndices.IN_IMPULS_PRD) var out_blank: int = data_from_yau_07.decode_u16(Constants.DataIndices.OUT_BLANK_PRD) var out_imp: int = data_from_yau_07.decode_u16(Constants.DataIndices.OUT_IMPULS_PRD) var dry_contact: int = data_from_yau_07.decode_u16(Constants.DataIndices.DRY_CONTACT) # Контроль сухих контактов (УГ) var _DKM: int = data_from_yau_07.decode_u16(Constants.DataIndices.DKM) # ДКМ от УГ ## УГ #node_select1.set_node_text(2, 0, '%d' % dry_contact) var node_control_device = $TabContainer/ControlPanel/control_tbl for i in 4: var node_board = node_control_device.get_node2(0, i+2) var j = int(status_board & (1 << i) == 0 and flag_yau_control) node_board.text = Constants.CONTROL_BOARD[i][j] node_board.modulate = [Color.GREEN, Color.RED][j] for i in 8: var node_power_supply = node_control_device.get_node2(0, i+6) var j = int(not(dry_contact & (1 << i) == 0 and flag_yau_control)) node_power_supply.text = Constants.CONTROL_POWER_SUPPLY[i][j] node_power_supply.modulate = [Color.GREEN, Color.RED][j] ## EMS G var CONTROL_FRAME = [$TabContainer/ControlPanel/SZI_x, $TabContainer/ControlPanel/SZI_x2, $TabContainer/ControlPanel/SZI_x3, $TabContainer/ControlPanel/SZI_x4, $TabContainer/ControlPanel/SZI_x5] for i in 5: var node_ems_g = node_control_device.get_node2(0, i + 14) var j: int = 0 var frame = Constants.Frame.WORK var in_bit_blank_UF = 1 if Constants.MODE.PRD_H == flag_mode else 3 if Constants.MODE.PRD_K == flag_mode else 6 var in_bit_blank_FS = 9 if Constants.MODE.PRD_H == flag_mode else 11 if Constants.MODE.PRD_K == flag_mode else 13 var in_bit_impuls_UF = 1 if Constants.MODE.PRD_H == flag_mode else 3 if Constants.MODE.PRD_K == flag_mode else 6 var in_bit_impuls_FS = 9 if Constants.MODE.PRD_H == flag_mode else 11 if Constants.MODE.PRD_K == flag_mode else 13 ### var out_bit_blank_UF = 1 if Constants.MODE.PRD_H == flag_mode else 1 if Constants.MODE.PRD_K == flag_mode else 0 var out_bit_blank_MODUL = 4 if Constants.MODE.PRD_H == flag_mode else 4 if Constants.MODE.PRD_K == flag_mode else 4 var out_bit_blank_FGOZ = 9 if Constants.MODE.PRD_H == flag_mode else 8 if Constants.MODE.PRD_K == flag_mode else 8 var out_bit_impuls_UF = 1 if Constants.MODE.PRD_H == flag_mode else 1 if Constants.MODE.PRD_K == flag_mode else 0 var out_bit_impuls_MODUL = 4 if Constants.MODE.PRD_H == flag_mode else 4 if Constants.MODE.PRD_K == flag_mode else 4 var out_bit_impuls_FGOZ = 9 if Constants.MODE.PRD_H == flag_mode else 8 if Constants.MODE.PRD_K == flag_mode else 8 if (in_blank & (1 << in_bit_blank_UF) != 0) and flag_yau_control: j = 1 if i == 0 else 0 frame = Constants.Frame.CONSTANT if i == 0 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (in_imp & (1 << in_bit_impuls_UF) != 0) and flag_yau_control: j = 1 if i == 0 else 0 frame = Constants.Frame.VARIABLE if i == 0 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (in_blank & (1 << in_bit_blank_FS) != 0) and flag_yau_control: j = 1 if i == 1 else 0 frame = Constants.Frame.CONSTANT if i == 1 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (in_imp & (1 << in_bit_impuls_FS) != 0) and flag_yau_control: j = 1 if i == 1 else 0 frame = Constants.Frame.VARIABLE if i == 1 else Constants.Frame.WORK elif (out_blank & (1 << out_bit_blank_UF) != 0) and flag_yau_control: j = 1 if i == 2 else 0 frame = Constants.Frame.CONSTANT if i == 2 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (out_imp & (1 << out_bit_impuls_UF) != 0) and flag_yau_control: j = 1 if i == 2 else 0 frame = Constants.Frame.VARIABLE if i == 2 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (out_blank & (1 << out_bit_blank_MODUL) != 0) and flag_yau_control: j = 1 if i == 3 else 0 frame = Constants.Frame.CONSTANT if i == 3 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (out_imp & (1 << out_bit_impuls_MODUL) != 0) and flag_yau_control: j = 1 if i == 3 else 0 frame = Constants.Frame.VARIABLE if i == 3 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (out_blank & (1 << out_bit_blank_FGOZ) != 0) and flag_yau_control: j = 1 if i == 4 else 0 frame = Constants.Frame.CONSTANT if i == 4 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) elif (out_imp & (1 << out_bit_impuls_FGOZ) != 0) and flag_yau_control: j = 1 if i == 4 else 0 frame = Constants.Frame.VARIABLE if i == 4 else Constants.Frame.WORK set_frame(CONTROL_FRAME[i], frame) node_ems_g.text = Constants.EMS_G[i][j] node_ems_g.modulate = [Color.RED, Color.GREEN][j] #set_frame(CONTROL_FRAME[i], frame) #node_select1.set_node_text(3, 0, '%d' % DKM) ## УКП for i in range(8): ## Мощность от УКП_1 var power_ukp_1 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * i) node_select1.set_node_text(0, i+1, '%d' % power_ukp_1) for i in range(8): ## Температура от УКП_1 var temperature_ukp_1 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * i) var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * Constants.TEMP node_select1.set_node_text(1, i+1, '%d' % TMP) for i in range(8): ## Мощность от УКП_2 var power_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_2 + 2 * i) node_select2.set_node_text(0, i+1, '%d' % power_ukp_2) for row in range(8): ## Температура от УКП_2 if len(data_from_yau_07) > 79 + 2 * row: var temperature_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * row) var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * Constants.TEMP node_select2.set_node_text(1, row+1, '%d' % TMP) func set_frame(node: Node, val: int): node.set_frame(val) #func dec2bin(decimal_value, number_bit): #var binary_string = '' #var count = number_bit #while(count >= 0): #var temp: int = decimal_value >> count #binary_string += '%d' % (temp & 1) #count -= 1 #return binary_string func _on_prd_select() -> void: $TabContainer.current_tab = 1 $Background/side_panel/select_prd.button_pressed = true $Background/side_panel/select_control.button_pressed = false $Background/side_panel/select_ems_g.button_pressed = false func _on_control_button() -> void: $TabContainer.current_tab = 0 $Background/side_panel/select_control.button_pressed = true $Background/side_panel/select_prd.button_pressed = false $Background/side_panel/select_ems_g.button_pressed = false func _on_emsg_select() -> void: $TabContainer.current_tab = 2 $Background/side_panel/select_ems_g.button_pressed = true $Background/side_panel/select_control.button_pressed = false $Background/side_panel/select_prd.button_pressed = false func on_btn_select(intem_from_sector): var node_select_device = $TabContainer/PRD/select_dev/select_dev var get_select_device = node_select_device.get_node2(1, 0) var meta = get_select_device.get_item_metadata(intem_from_sector) Network.address = meta[0] Network.port = meta[1] flag_mode = meta[2] func fill_item(node, i_column: int, i_row: int, arr: Dictionary, select: int = 0): var optionbutton = node.get_node2(i_column, i_row) as OptionButton for key in arr.keys(): var item_text = key + " - " + str(arr[key]) optionbutton.add_item(item_text) if select < arr.size(): optionbutton.select(select) func _on_zapret(toggled_on: bool, meta) -> void: var send_array: Array = [] var address_port_wr = 0x122 var ports_wr: Dictionary = {address_port_wr : meta.get_meta('litera')} ## СИ2, СИ4, СИ6 = 0x30, СИ3, СИ5, СИ7 = 0x31, СИ1 = 0x2F Network.send_array.append(ports_wr) ports_wr = {} address_port_wr = 0x128 ports_wr[address_port_wr] = 0x4000 if toggled_on else 0x0 Network.send_array.append(ports_wr) func _on_read_isa_pressed() -> void: Network.flag_read_isa = true