183 lines
6.5 KiB
GDScript
183 lines
6.5 KiB
GDScript
extends Panel
|
||
|
||
var timer = Timer.new()
|
||
var node_cell_ind: Array
|
||
var count_cell: int
|
||
var past_pribor: int
|
||
|
||
func _ready() -> void:
|
||
self.add_child(timer)
|
||
timer.connect('timeout', Callable(self, '_on_timer').bind(Network.unit))
|
||
timer.start(1)
|
||
|
||
node_cell_ind = [
|
||
$soc_y5/ay07,
|
||
$soc_y5/ems_g,
|
||
$soc_y5/ug,
|
||
$soc_y5/ukp_2,
|
||
$soc_y5/ukp_1,
|
||
|
||
$soc_P1/MAA_1,
|
||
$soc_P1/MAA_2,
|
||
$soc_P1/IP9_50_2,
|
||
$soc_P1/IP9_50_1,
|
||
$soc_P1/IP12_50,
|
||
|
||
$soc_P2/IP9_50,
|
||
$soc_P2/IP12_50,
|
||
|
||
$soc_y5/IP5_25]
|
||
count_cell = len(node_cell_ind)
|
||
|
||
|
||
func _on_timer(pribor_prd):
|
||
if (past_pribor != Constants.CURRENT_MODE):
|
||
_draw_control_panel_prd(Constants.CURRENT_MODE)
|
||
if (pribor_prd.online):
|
||
$soc_y5/ay07.state = Constants.STATE_VAL.GOOD
|
||
_status_cell(pribor_prd.status)
|
||
else:
|
||
$soc_y5/ay07.state = Constants.STATE_VAL.ERROR
|
||
for i in range(1,count_cell):
|
||
node_cell_ind[i].state = Constants.STATE_VAL.NONE
|
||
_status_prd()
|
||
past_pribor = Constants.CURRENT_MODE
|
||
|
||
|
||
func _status_cell(status):
|
||
var status_board: int = status.decode_u8(Constants.DataIndices.STATUS_BOARD)
|
||
var dry_contact: int = status.decode_u8(Constants.DataIndices.DRY_CONTACT)
|
||
|
||
# status_board
|
||
for i in range(1, count_cell-8):
|
||
if ((status_board >> (i-1)) & 0x1) == 1:
|
||
node_cell_ind[i].state = Constants.STATE_VAL.GOOD
|
||
else:
|
||
node_cell_ind[i].state = Constants.STATE_VAL.ERROR
|
||
|
||
#dry_contact
|
||
if (node_cell_ind[2].state == Constants.STATE_VAL.GOOD):
|
||
for i in range(5, count_cell):
|
||
if ((dry_contact >> (i-5)) & 0x1) == 0:
|
||
node_cell_ind[i].state = Constants.STATE_VAL.GOOD
|
||
else:
|
||
node_cell_ind[i].state = Constants.STATE_VAL.ERROR
|
||
else:
|
||
for i in range(5, count_cell):
|
||
node_cell_ind[i].state = Constants.STATE_VAL.NONE
|
||
|
||
func _status_prd():
|
||
var status: int = 0
|
||
for i in range(count_cell-3):
|
||
status += 1 if (node_cell_ind[i].state == Constants.STATE_VAL.GOOD) else 0
|
||
status += 1 if (node_cell_ind[count_cell-1].state == Constants.STATE_VAL.GOOD) else 0
|
||
|
||
if (Constants.CURRENT_MODE == Constants.MODE.PRD_K):
|
||
status += 1 if (node_cell_ind[count_cell-3].state == Constants.STATE_VAL.GOOD) else 0
|
||
status += 1 if (node_cell_ind[count_cell-2].state == Constants.STATE_VAL.GOOD) else 0
|
||
if (status == count_cell):
|
||
$lbl_control.text = 'Прибор исправен'
|
||
$lbl_control.modulate = Color(0,1,0,1)
|
||
else:
|
||
$lbl_control.text = 'Прибор не исправен'
|
||
$lbl_control.modulate = Color(1,0,0,1)
|
||
else:
|
||
if (status == count_cell-2):
|
||
$lbl_control.text = 'Прибор исправен'
|
||
$lbl_control.modulate = Color(0,1,0,1)
|
||
else:
|
||
$lbl_control.text = 'Прибор не исправен'
|
||
$lbl_control.modulate = Color(1,0,0,1)
|
||
|
||
func _draw_control_panel_prd(pribor):
|
||
if pribor == Constants.MODE.PRD_H:
|
||
# Кассета У5
|
||
$soc_y5/IP5_25.rname = 'А24'
|
||
$soc_y5/ay07.rname = 'А30'
|
||
$soc_y5/ems_g.rname = 'А26'
|
||
$soc_y5/ug.rname = 'А27'
|
||
$soc_y5/ukp_1.rname = 'А28'
|
||
$soc_y5/ukp_2.rname = 'А29'
|
||
# Кассета ФС
|
||
$Kasseta_FS/Kasseta.text = 'Кассета ФС-НД'
|
||
$Kasseta_FS/Block_FS_PRD_K.visible = false
|
||
$Kasseta_FS/FS_PRD_K.visible = false
|
||
$Kasseta_FS/ref_A1.rname = 'А1'
|
||
$Kasseta_FS/ref_A1.fname = 'Модуль ФС'
|
||
$Kasseta_FS/ref_A3.rname = 'А3'
|
||
$Kasseta_FS/ref_A3.fname = 'БЛОК ФС-2'
|
||
$Kasseta_FS/ref_A2.rname = 'А2'
|
||
$Kasseta_FS/ref_A2.fname = 'Модуль ФС'
|
||
$Kasseta_FS/ref_A4.rname = 'А4'
|
||
$Kasseta_FS/ref_A4.fname = 'БЛОК ФС-3'
|
||
# Кассета П-1
|
||
$soc_P1/IP12_50.rname = 'А21'
|
||
$soc_P1/IP9_50_1.rname = 'А20'
|
||
$soc_P1/IP9_50_2.rname = 'А19'
|
||
$soc_P1/MAA_1.rname = 'А22'
|
||
$soc_P1/MAA_2.rname = 'А23'
|
||
# Кассета П-2
|
||
$soc_P2.visible = false
|
||
|
||
elif pribor == Constants.MODE.PRD_B:
|
||
# Кассета У5
|
||
$soc_y5/IP5_25.rname = 'А24'
|
||
$soc_y5/ay07.rname = 'А30'
|
||
$soc_y5/ems_g.rname = 'А26'
|
||
$soc_y5/ug.rname = 'А27'
|
||
$soc_y5/ukp_1.rname = 'А28'
|
||
$soc_y5/ukp_2.rname = 'А29'
|
||
# Кассета ФС
|
||
$Kasseta_FS/Kasseta.text = 'Кассета ФС-ВД'
|
||
$Kasseta_FS/Block_FS_PRD_K.visible = false
|
||
$Kasseta_FS/FS_PRD_K.visible = false
|
||
$Kasseta_FS/ref_A1.rname = 'А1'
|
||
$Kasseta_FS/ref_A1.fname = 'Модуль ФС'
|
||
$Kasseta_FS/ref_A3.rname = 'А3'
|
||
$Kasseta_FS/ref_A3.fname = 'БЛОК ФС-4'
|
||
$Kasseta_FS/ref_A2.rname = 'А2'
|
||
$Kasseta_FS/ref_A2.fname = 'Модуль ФС'
|
||
$Kasseta_FS/ref_A4.rname = 'А4'
|
||
$Kasseta_FS/ref_A4.fname = 'БЛОК ФС-5'
|
||
# Кассета П-1
|
||
$soc_P1/IP12_50.rname = 'А21'
|
||
$soc_P1/IP9_50_1.rname = 'А20'
|
||
$soc_P1/IP9_50_2.rname = 'А19'
|
||
$soc_P1/MAA_1.rname = 'А22'
|
||
$soc_P1/MAA_2.rname = 'А23'
|
||
# Кассета П-2
|
||
$soc_P2.visible = false
|
||
|
||
elif pribor == Constants.MODE.PRD_K:
|
||
# Кассета У5
|
||
$soc_y5/IP5_25.rname = 'А31'
|
||
$soc_y5/ay07.rname = 'А37'
|
||
$soc_y5/ems_g.rname = 'А33'
|
||
$soc_y5/ug.rname = 'А34'
|
||
$soc_y5/ukp_1.rname = 'А35'
|
||
$soc_y5/ukp_2.rname = 'А36'
|
||
# Кассета ФС
|
||
$Kasseta_FS/Kasseta.text = 'Кассета ФС-КД'
|
||
$Kasseta_FS/Block_FS_PRD_K.visible = true
|
||
$Kasseta_FS/FS_PRD_K.visible = true
|
||
$Kasseta_FS/ref_A1.rname = 'А3'
|
||
$Kasseta_FS/ref_A1.fname = 'Модуль ФС'
|
||
$Kasseta_FS/ref_A3.rname = 'А6'
|
||
$Kasseta_FS/ref_A3.fname = 'БЛОК ФС-6'
|
||
$Kasseta_FS/ref_A2.rname = 'А2'
|
||
$Kasseta_FS/ref_A2.fname = 'Модуль ФС'
|
||
$Kasseta_FS/ref_A4.rname = 'А5'
|
||
$Kasseta_FS/ref_A4.fname = 'БЛОК ФС-7'
|
||
# Кассета П-1
|
||
$soc_P1/IP12_50.rname = 'А23'
|
||
$soc_P1/IP12_50.fname = 'ИП9-50'
|
||
$soc_P1/IP9_50_1.rname = 'А24'
|
||
$soc_P1/IP9_50_1.fname = 'ИП9-50'
|
||
$soc_P1/IP9_50_2.rname = 'А26'
|
||
$soc_P1/IP9_50_2.fname = 'ИП12-50'
|
||
|
||
$soc_P1/MAA_1.rname = 'А27'
|
||
$soc_P1/MAA_2.rname = 'А28'
|
||
# Кассета П-2
|
||
$soc_P2.visible = true
|