881 lines
44 KiB
GDScript
881 lines
44 KiB
GDScript
extends Node2D
|
||
|
||
signal read_ems_g_start()
|
||
signal read_ems_g_finish()
|
||
|
||
var node_select1: Node
|
||
var node_select2: Node
|
||
var node_select3: Node
|
||
var node_select_yau_07b: Node
|
||
var node_select_yau_07b_2: Node
|
||
var node_select_fs_1: Node
|
||
var node_select_fs_2: Node
|
||
var isa_from_yau07b: Dictionary = {}
|
||
var freq_fs_1: int
|
||
var freq_fs_2: int
|
||
var att_fs_1: float
|
||
var att_fs_2: float
|
||
var status_pribor = null
|
||
var save_path = "D://PRD-TU-MP550//"
|
||
const need_port: Array = [0x122, 0x124, 0x126, 0x128, 0x12A]
|
||
|
||
|
||
func _ready() -> void:
|
||
$Background/lbl_commit.text = commit.VCS_HEAD
|
||
|
||
# Считывание аргументов с консоли (путь сохранения)
|
||
var args = OS.get_cmdline_user_args()
|
||
for i in range(args.size()):
|
||
if args[i] == "testsave-path" and i + 1 < args.size():
|
||
save_path = args[i + 1]
|
||
break
|
||
|
||
# Таблица 1 УКП-1 (Температура, Мощность)
|
||
node_select1 = $TabContainer/PRD/body_grid/litera_2_4_6/table_ukp_1
|
||
draw_tabl(node_select1, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size())
|
||
node_select1.set_columns_min_size([120, 120])
|
||
|
||
# Таблица 2 УКП-2 (Температура, Мощность)
|
||
node_select2 = $TabContainer/PRD/body_grid/litera_3_5_7/table_ukp_2
|
||
draw_tabl(node_select2, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size())
|
||
node_select2.set_columns_min_size([120, 120])
|
||
|
||
# Таблица 3 УКП-1 (Температура, Мощность)
|
||
node_select3 = $TabContainer/PRD/body_grid/litera_1/table_ukp_1
|
||
draw_tabl(node_select3, [[preload("res://table/header.tscn"), preload("res://table/header.tscn")], [preload("res://table/node.tscn"), preload("res://table/node.tscn")]], [[preload("res://table/header.tscn"), preload("res://table/header.tscn")], [preload("res://table/node.tscn"), preload("res://table/node.tscn")]].size())
|
||
node_select3.set_columns_min_size([120, 120])
|
||
|
||
# Таблица ЯУ-07б-1
|
||
node_select_yau_07b = $TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control
|
||
draw_tabl(node_select_yau_07b, Constants.ROWS_YAU_07B_2, Constants.ROWS_YAU_07B_2.size())
|
||
node_select_yau_07b.set_columns_min_size([160, 120])
|
||
|
||
# Таблица ЯУ-07б-2
|
||
node_select_yau_07b_2 = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control
|
||
draw_tabl(node_select_yau_07b_2, Constants.ROWS_YAU_07B_2, Constants.ROWS_YAU_07B_2.size())
|
||
node_select_yau_07b_2.set_columns_min_size([160, 120])
|
||
|
||
# Таблица ЯУ-07б-3
|
||
var node_select_yau_07b_3 = $TabContainer/PRD/body_grid/litera_1/yau07b_control
|
||
draw_tabl(node_select_yau_07b_3, Constants.ROWS_YAU_07B_2, Constants.ROWS_YAU_07B_2.size())
|
||
node_select_yau_07b_3.set_columns_min_size([160, 120])
|
||
|
||
#Таблица ФС-2
|
||
node_select_fs_1 = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control
|
||
draw_tabl(node_select_fs_1, Constants.ROWS_FS, Constants.ROWS_FS.size())
|
||
node_select_fs_1.set_columns_min_size([150, 120, 150])
|
||
|
||
#Таблица ФС-2
|
||
node_select_fs_2 = $TabContainer/PRD/body_grid/litera_3_5_7/fs_control
|
||
draw_tabl(node_select_fs_2, Constants.ROWS_FS, Constants.ROWS_FS.size())
|
||
node_select_fs_2.set_columns_min_size([150, 120, 150])
|
||
|
||
#Таблица ФС-3
|
||
var node_select_fs_3 = $TabContainer/PRD/body_grid/litera_1/fs_control
|
||
draw_tabl(node_select_fs_3, Constants.ROWS_FS, Constants.ROWS_FS.size())
|
||
node_select_fs_3.set_columns_min_size([150, 120, 150])
|
||
|
||
# Таблица ЯУ-07б-3
|
||
var item_place_yau_07_3 = 38
|
||
node_select_yau_07b_3.set_node_text(0, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+0]) # 'ПРД-Н'
|
||
node_select_yau_07b_3.set_node_text(1, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+1]) # 'Литера 1'
|
||
node_select_yau_07b_3.set_node_text(0, 1, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+2]) # 'Запрет СИ 1'
|
||
node_select_yau_07b_3.set_node_text(0, 2, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+3]) # 'Модуляция УМ'
|
||
node_select_yau_07b_3.set_node_text(0, 3, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+4]) # 'Положение луча'
|
||
node_select_yau_07b_3.set_node_text(0, 4, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+5]) # 'Аттенюатор УМ'
|
||
node_select_yau_07b_3.get_node2(1, 5).get_child(1).visible = false
|
||
node_select_yau_07b_3.set_node_text(0, 5, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+6]) # 'ФГОЗ'
|
||
node_select_yau_07b_3.set_node_text(0, 6, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+7]) # 'СИ 1 в УФ'
|
||
node_select_yau_07b_3.set_node_text(0, 7, Constants.SIGNS[Constants.MODE.PRD_K][item_place_yau_07_3+8]) # 'СЗИ 1 от УФ'
|
||
|
||
#Таблица ФС-3
|
||
var item_place_fs_3 = 47
|
||
node_select_fs_3.set_node_text(0, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+0]) # 'Модуль ФС 1'
|
||
node_select_fs_3.set_node_text(1, 0, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+1]) # 'Литера ФС 1'
|
||
node_select_fs_3.set_node_text(0, 1, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+2]) # 'Состояние'
|
||
node_select_fs_3.set_node_text(0, 2, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+3]) # 'Частота'
|
||
node_select_fs_3.get_node2(1, 2).placeholder_text = 'в МГц'
|
||
node_select_fs_3.get_node2(1, 2).editable = true
|
||
node_select_fs_3.set_node_text(0, 3, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+4]) # 'Аттенюатор ФС'
|
||
node_select_fs_3.get_node2(1, 3).placeholder_text = 'в dB'
|
||
node_select_fs_3.get_node2(1, 3).editable = true
|
||
node_select_fs_3.set_node_text(0, 4, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+5]) # 'Модуляция ФС 1'
|
||
node_select_fs_3.get_node2(1, 4).add_item('Const')
|
||
node_select_fs_3.get_node2(1, 4).add_item('MSK')
|
||
node_select_fs_3.set_node_text(0, 5, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+6]) # 'Генератор ФС'
|
||
node_select_fs_3.set_node_text(0, 6, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+7]) # 'СИ 1 от ФС'
|
||
node_select_fs_3.set_node_text(0, 7, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+8]) # 'Фильтр CAN'
|
||
node_select_fs_3.get_node2(1, 7).placeholder_text = 'в МГц'
|
||
node_select_fs_3.get_node2(1, 7).editable = true
|
||
node_select_fs_3.set_node_text(0, 8, Constants.SIGNS[Constants.MODE.PRD_K][item_place_fs_3+9]) # 'Статус CAN')
|
||
|
||
# Выбор прибора для подключения
|
||
var node_select_device = $TabContainer/PRD/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,7))
|
||
get_select_device.connect('item_selected', Callable(self, 'on_mode_select'))
|
||
node_select_device.get_node2(0,0).text = 'ПРИБОР'
|
||
node_select_device.set_columns_min_size([100, 100])
|
||
|
||
# Получение выбранного прибора при загрузке
|
||
status_pribor = Constants.CURRENT_MODE
|
||
|
||
add_signs_scene()
|
||
|
||
## Заполненение списка модуляции УМ
|
||
for key in Constants.OUT_x128:
|
||
node_select_yau_07b.get_node2(1, 2).add_item(key)
|
||
node_select_yau_07b_2.get_node2(1, 2).add_item(key)
|
||
node_select_yau_07b_3.get_node2(1, 2).add_item(key)
|
||
|
||
|
||
## Заполненение списка направления луча
|
||
for key in Constants.RAY_DICT:
|
||
node_select_yau_07b.get_node2(1, 3).add_item(key)
|
||
node_select_yau_07b_2.get_node2(1, 3).add_item(key)
|
||
|
||
|
||
node_select_yau_07b_3.get_node2(1, 3).add_item(' 15°')
|
||
|
||
|
||
## Заполненение списка аттенюатора
|
||
for key in Constants.ATT_DICT:
|
||
node_select_yau_07b.get_node2(1, 4).add_item(key)
|
||
node_select_yau_07b_2.get_node2(1, 4).add_item(key)
|
||
|
||
## Заполненение списка аттенюатора
|
||
for key in Constants.ATT_DICT_correct:
|
||
node_select_yau_07b_3.get_node2(1, 4).add_item(key)
|
||
|
||
## Yau-07b 1
|
||
node_select_yau_07b.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret_2'))
|
||
node_select_yau_07b.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um_2'))
|
||
node_select_yau_07b.get_node2(1, 3).connect('item_selected', Callable(self, '_on_btn_ray_1'))
|
||
node_select_yau_07b.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_1'))
|
||
node_select_yau_07b.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_fgos_1'))
|
||
## Yau-07b 2
|
||
node_select_yau_07b_2.get_node2(1, 1).get_child(1, false).connect('toggled', Callable(self, '_on_zapret_3'))
|
||
node_select_yau_07b_2.get_node2(1, 2).connect('item_selected', Callable(self, '_on_modul_um_3'))
|
||
node_select_yau_07b_2.get_node2(1, 3).connect('item_selected', Callable(self, '_on_btn_ray_2'))
|
||
node_select_yau_07b_2.get_node2(1, 4).connect('item_selected', Callable(self, '_on_attenuator_2'))
|
||
node_select_yau_07b_2.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_fgos_2'))
|
||
## FS 1
|
||
node_select_fs_1.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_1'))
|
||
node_select_fs_1.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_1'))
|
||
node_select_fs_1.get_node2(1, 4).connect('item_selected', Callable(self, '_on_modul_fs_1'))
|
||
node_select_fs_1.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_1'))
|
||
node_select_fs_1.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro'))
|
||
node_select_fs_1.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_1'))
|
||
## FS 2
|
||
node_select_fs_2.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_2'))
|
||
node_select_fs_2.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_2'))
|
||
node_select_fs_2.get_node2(1, 4).connect('item_selected', Callable(self, '_on_modul_fs_2'))
|
||
node_select_fs_2.get_node2(1, 5).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_2'))
|
||
node_select_fs_2.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro_2'))
|
||
node_select_fs_2.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_2'))
|
||
|
||
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'))
|
||
Network.connect('port_fs_opened_1', _on_port_changed_fs_1.bind(Color.AQUAMARINE))
|
||
Network.connect('port_fs_closed_1', _on_port_changed_fs_1.bind(Color.CRIMSON))
|
||
Network.connect('port_fs_opened_2', _on_port_changed_fs_2.bind(Color.AQUAMARINE))
|
||
Network.connect('port_fs_closed_2', _on_port_changed_fs_2.bind(Color.CRIMSON))
|
||
Network.connect('data_from_fs_1', _on_data_fs_1)
|
||
Network.connect('data_from_fs_2', _on_data_fs_2)
|
||
|
||
|
||
func add_signs_scene():
|
||
# Таблица УКП-1
|
||
node_select1.set_node_text(0, 0, 'Мощность')
|
||
node_select1.set_node_text(1, 0, 'Температура')
|
||
|
||
# Таблица УКП-2
|
||
node_select2.set_node_text(0, 0, 'Мощность')
|
||
node_select2.set_node_text(1, 0, 'Температура')
|
||
|
||
# Таблица УКП-1
|
||
node_select3.set_node_text(0, 0, 'Мощность')
|
||
node_select3.set_node_text(1, 0, 'Температура')
|
||
|
||
var item_place_yau_07: int = 9
|
||
var item_place_fs_1: int = 18
|
||
var item_place_fs_2: int = 28
|
||
# Таблица ЯУ-07б-1
|
||
node_select_yau_07b.set_node_text(0, 0, Constants.SIGNS[Constants.CURRENT_MODE][0]) # 'ПРД-Н'
|
||
node_select_yau_07b.set_node_text(1, 0, Constants.SIGNS[Constants.CURRENT_MODE][1]) # 'Литера 2'
|
||
node_select_yau_07b.set_node_text(0, 1, Constants.SIGNS[Constants.CURRENT_MODE][2]) # 'Запрет СИ 2'
|
||
node_select_yau_07b.set_node_text(0, 2, Constants.SIGNS[Constants.CURRENT_MODE][3]) # 'Модуляция УМ'
|
||
node_select_yau_07b.set_node_text(0, 3, Constants.SIGNS[Constants.CURRENT_MODE][4]) # 'Положение луча'
|
||
node_select_yau_07b.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][5]) # 'Аттенюатор УМ'
|
||
node_select_yau_07b.get_node2(1, 5).get_child(1).visible = Constants.CURRENT_MODE != Constants.MODE.PRD_H
|
||
node_select_yau_07b.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][6])# 'ФГОЗ'
|
||
node_select_yau_07b.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][7]) # 'СИ 2 в УФ'
|
||
node_select_yau_07b.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][8]) # 'СЗИ 2 от УФ'
|
||
|
||
# Таблица ЯУ-07б-2
|
||
node_select_yau_07b_2.set_node_text(0, 0, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+0]) # 'ПРД-Н'
|
||
node_select_yau_07b_2.set_node_text(1, 0, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+1]) # 'Литера 3',
|
||
node_select_yau_07b_2.set_node_text(0, 1, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+2]) # 'Запрет СИ 3'
|
||
node_select_yau_07b_2.set_node_text(0, 2, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+3]) # 'Модуляция УМ'
|
||
node_select_yau_07b_2.set_node_text(0, 3, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+4]) # 'Положение луча'
|
||
node_select_yau_07b_2.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+5]) # 'Аттенюатор УМ'
|
||
node_select_yau_07b_2.get_node2(1, 5).get_child(1).visible = Constants.CURRENT_MODE != Constants.MODE.PRD_K
|
||
node_select_yau_07b_2.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+6]) # 'ФГОЗ 3'
|
||
node_select_yau_07b_2.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+7]) # 'СИ 3 в УФ'
|
||
node_select_yau_07b_2.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_yau_07+8]) # 'СЗИ 3 от УФ'
|
||
|
||
#Таблица ФС-1
|
||
node_select_fs_1.set_node_text(0, 0, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+0]) # 'Модуль ФС'
|
||
node_select_fs_1.set_node_text(1, 0, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+1]) # 'Литера 2'
|
||
|
||
node_select_fs_1.set_node_text(0, 1, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+2]) # 'Состояние'
|
||
node_select_fs_1.set_node_text(0, 2, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+3]) # 'Частота'
|
||
node_select_fs_1.get_node2(1, 2).placeholder_text = 'в МГц'
|
||
node_select_fs_1.get_node2(1, 2).editable = true
|
||
node_select_fs_1.set_node_text(0, 3, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+4]) # 'Аттенюатор'
|
||
node_select_fs_1.get_node2(1, 3).placeholder_text = 'в dB'
|
||
node_select_fs_1.get_node2(1, 3).editable = true
|
||
node_select_fs_1.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+5]) # 'Модуляция'
|
||
node_select_fs_1.get_node2(1, 4).add_item('Const')
|
||
node_select_fs_1.get_node2(1, 4).add_item('MSK')
|
||
node_select_fs_1.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+6]) # 'Генератор ФС'
|
||
node_select_fs_1.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+7]) # 'СИ 2 от ФС'
|
||
node_select_fs_1.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+8]) # 'Фильтр CAN'
|
||
node_select_fs_1.get_node2(1, 7).placeholder_text = 'в МГц'
|
||
node_select_fs_1.get_node2(1, 7).editable = true
|
||
node_select_fs_1.set_node_text(0, 8, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_1+9]) # 'Статус CAN'
|
||
|
||
#Таблица ФС-2
|
||
node_select_fs_2.set_node_text(0, 0, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+0]) # 'Модуль ФС'
|
||
node_select_fs_2.set_node_text(1, 0, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+1]) # 'Литера ФС'
|
||
node_select_fs_2.set_node_text(0, 1, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+2]) # 'Состояние'
|
||
node_select_fs_2.set_node_text(0, 2, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+3]) # 'Частота'
|
||
node_select_fs_2.get_node2(1, 2).placeholder_text = 'в МГц'
|
||
node_select_fs_2.get_node2(1, 2).editable = true
|
||
node_select_fs_2.set_node_text(0, 3, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+4]) # 'Аттенюатор ФС'
|
||
node_select_fs_2.get_node2(1, 3).placeholder_text = 'в dB'
|
||
node_select_fs_2.get_node2(1, 3).editable = true
|
||
node_select_fs_2.set_node_text(0, 4, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+5]) # 'Модуляция'
|
||
node_select_fs_2.get_node2(1, 4).add_item('Const')
|
||
node_select_fs_2.get_node2(1, 4).add_item('MSK')
|
||
node_select_fs_2.set_node_text(0, 5, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+6]) # 'Генератор ФС'
|
||
node_select_fs_2.set_node_text(0, 6, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+7]) # 'СИ 3 от ФС'
|
||
node_select_fs_2.set_node_text(0, 7, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+8]) # 'Фильтр CAN'
|
||
node_select_fs_2.get_node2(1, 7).placeholder_text = 'в МГц'
|
||
node_select_fs_2.get_node2(1, 7).editable = true
|
||
node_select_fs_2.set_node_text(0, 8, Constants.SIGNS[Constants.CURRENT_MODE][item_place_fs_2+9]) # 'Статус CAN')
|
||
|
||
$TabContainer/PRD/body_grid/litera_1.visible = Constants.CURRENT_MODE ==Constants.MODE.PRD_K
|
||
|
||
|
||
func _on_read_isa(unit_isa_ports: Dictionary) -> void:
|
||
isa_from_yau07b = unit_isa_ports
|
||
var isa_data: Dictionary = {}
|
||
for key in unit_isa_ports.keys():
|
||
isa_data[key] = unit_isa_ports[key]
|
||
|
||
if isa_data.has(Constants.BASE_PORTS.EMS_G+2):
|
||
var tmp = isa_data[Constants.BASE_PORTS.EMS_G+2]
|
||
isa_data.erase(Constants.BASE_PORTS.EMS_G+2)
|
||
|
||
var found = false
|
||
for i in range(Constants.EMS_G_PORT_DATA_HOLDER.size()):
|
||
if Constants.EMS_G_PORT_DATA_HOLDER[i][0] == tmp:
|
||
Constants.EMS_G_PORT_DATA_HOLDER[i][1] = isa_data
|
||
found = true
|
||
break
|
||
if not found:
|
||
Constants.EMS_G_PORT_DATA_HOLDER.append([tmp, isa_data])
|
||
if len(Constants.EMS_G_PORT_DATA_HOLDER) == 32:
|
||
emit_signal('read_ems_g_finish')
|
||
$ISA.text = 'ISA: ' + str(len(Constants.EMS_G_PORT_DATA_HOLDER))
|
||
|
||
$TabContainer/EMS_G/load_boadr/win_load.material.set('shader_parameter/dot_color_end', Color(0.8, 0.5, 1.0, 1.0 - 0.05 * len(Constants.EMS_G_PORT_DATA_HOLDER)))
|
||
|
||
if isa_data.has(Constants.BASE_PORTS.UG+6):
|
||
if (isa_data[Constants.BASE_PORTS.UG+6] & 0x7) < 7:
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 3).select(isa_data[Constants.BASE_PORTS.UG+6] & 0x7)
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+6] & 0x38)>> 3)
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+6] & 0x7))
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+6] & 0x38))
|
||
if isa_data.has(Constants.BASE_PORTS.UG+8):
|
||
if (isa_data[Constants.BASE_PORTS.UG+8] & 0x7) < 7:
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 3).select(isa_data[Constants.BASE_PORTS.UG+8] & 0x7)
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+8] & 0x38)>>3)
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x7))
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x38))
|
||
|
||
for index in Constants.EMS_G_PORT_DATA_HOLDER.size():
|
||
var tmp_device_mode = Constants.EMS_G_PORT_DATA_HOLDER[index][0]
|
||
if tmp_device_mode == Constants.META.CI_2_B_UF:
|
||
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
|
||
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,1).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 14
|
||
if tmp_device_mode == Constants.META.CI_3_B_UF:
|
||
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
|
||
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,1).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 14
|
||
if tmp_device_mode == Constants.META.MODUL_UM_2:
|
||
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
|
||
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
|
||
var select = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 if data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 < 3 else 3
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,2).select(select)
|
||
if tmp_device_mode == Constants.META.MODUL_UM_3:
|
||
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
|
||
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
|
||
var select = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 if data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 < 3 else 3
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,2).select(select)
|
||
if tmp_device_mode == Constants.META.FGOZ_4:
|
||
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
|
||
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,5).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 15
|
||
if tmp_device_mode == Constants.META.FGOZ_3:
|
||
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
|
||
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,5).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 15
|
||
|
||
|
||
func _on_data_fs_1(fs_1_data):
|
||
var GRP = fs_1_data.decode_u8(0x0)
|
||
var CMD = fs_1_data.decode_u8(0x1)
|
||
match CMD:
|
||
Constants.CMD.READ_CARRIER:
|
||
if GRP == Constants.GROUP.BASE:
|
||
freq_fs_1 = fs_1_data.decode_u64(0xC) / 1_000_000
|
||
node_select_fs_1.set_node_text(2, 2, str(freq_fs_1) + ' МГц')
|
||
Constants.CMD.READ_ATT:
|
||
if GRP == Constants.GROUP.RF:
|
||
att_fs_1 = fs_1_data.decode_float(0x18)
|
||
node_select_fs_1.set_node_text(2, 3, str(att_fs_1) + ' dB')
|
||
Constants.CMD.READ_GEN_STATUS:
|
||
if GRP == Constants.GROUP.GENERATOR:
|
||
if fs_1_data.decode_u32(0xC) == 0:
|
||
node_select_fs_1.set_node_text(2, 5, 'Включен')
|
||
node_select_fs_1.get_node2(2, 5).modulate = Color.AQUAMARINE
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/speed', 2.5)
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1, 5).get_child(1).button_pressed = true
|
||
else:
|
||
node_select_fs_1.set_node_text(2, 5, 'Отключен')
|
||
node_select_fs_1.get_node2(2, 5).modulate = Color.CRIMSON
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/speed', 0.0)
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1, 5).get_child(1).button_pressed = false
|
||
Constants.CMD.BASE_GET_CURRENT_TEMP:
|
||
if GRP == Constants.GROUP.BASE:
|
||
node_select_fs_1.set_node_text(2, 0, '%.2f' % fs_1_data.decode_float(0xC) + ' °C')
|
||
Constants.CMD.BASE_CAN_MACRO_READ:
|
||
if GRP == Constants.GROUP.BASE:
|
||
node_select_fs_1.set_node_text(2, 7, str(fs_1_data.decode_u16(0x20)) + ' МГц')
|
||
|
||
|
||
func _on_data_fs_2(fs_2_data):
|
||
var GRP = fs_2_data.decode_u8(0x0)
|
||
var CMD = fs_2_data.decode_u8(0x1)
|
||
match CMD:
|
||
Constants.CMD.READ_CARRIER:
|
||
if GRP == Constants.GROUP.BASE:
|
||
freq_fs_2 = fs_2_data.decode_u64(0xC) / 1_000_000
|
||
node_select_fs_2.set_node_text(2, 2, str(freq_fs_2) + ' МГц')
|
||
Constants.CMD.READ_ATT:
|
||
if GRP == Constants.GROUP.RF:
|
||
att_fs_2 = fs_2_data.decode_float(0x18)
|
||
node_select_fs_2.set_node_text(2, 3, str(att_fs_2) + ' dB')
|
||
Constants.CMD.READ_GEN_STATUS:
|
||
if GRP == Constants.GROUP.GENERATOR:
|
||
if fs_2_data.decode_u32(0xC) == 0:
|
||
node_select_fs_2.set_node_text(2, 5, 'Включен')
|
||
node_select_fs_2.get_node2(2, 5).modulate = Color.AQUAMARINE
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 2.5)
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 5).get_child(1).button_pressed = true
|
||
else:
|
||
node_select_fs_2.set_node_text(2, 5, 'Отключен')
|
||
node_select_fs_2.get_node2(2, 5).modulate = Color.CRIMSON
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 0.0)
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 5).get_child(1).button_pressed = false
|
||
Constants.CMD.BASE_GET_CURRENT_TEMP:
|
||
if GRP == Constants.GROUP.BASE:
|
||
node_select_fs_2.set_node_text(2, 0, '%.2f' % fs_2_data.decode_float(0xC) + ' °C')
|
||
Constants.CMD.BASE_CAN_MACRO_READ:
|
||
if GRP == Constants.GROUP.BASE:
|
||
node_select_fs_2.set_node_text(2, 7, str(fs_2_data.decode_u16(0x20)) + ' МГц')
|
||
|
||
|
||
func _process(_delta: float) -> void:
|
||
# FS 1
|
||
var node_freq_fs_1 = node_select_fs_1.get_node2(1, 2)
|
||
var node_freq_fs_1_mod = node_select_fs_1.get_node2(0, 2)
|
||
if (int(node_freq_fs_1.get_text()) != freq_fs_1) and node_freq_fs_1.get_text() != '':
|
||
node_freq_fs_1_mod.modulate = Color.AQUAMARINE
|
||
node_freq_fs_1_mod.text = 'Частота*'
|
||
else:
|
||
node_freq_fs_1_mod.modulate = Color(1, 1, 0.941, 1)
|
||
node_freq_fs_1_mod.text = 'Частота'
|
||
node_freq_fs_1 = node_select_fs_1.get_node2(1, 3)
|
||
node_freq_fs_1_mod = node_select_fs_1.get_node2(0, 3)
|
||
if (int(node_freq_fs_1.get_text()) != att_fs_1) and node_freq_fs_1.get_text() != '':
|
||
node_freq_fs_1_mod.modulate = Color.AQUAMARINE
|
||
node_freq_fs_1_mod.text = 'Аттенюатор*'
|
||
else:
|
||
node_freq_fs_1_mod.modulate = Color(1, 1, 0.941, 1)
|
||
node_freq_fs_1_mod.text = 'Аттенюатор'
|
||
|
||
# FS 2
|
||
var node_freq_fs_2 = node_select_fs_2.get_node2(1, 2)
|
||
var node_freq_fs_2_mod = node_select_fs_2.get_node2(0, 2)
|
||
if int(node_freq_fs_2.get_text()) != freq_fs_2 and node_freq_fs_2.get_text() != '':
|
||
node_freq_fs_2_mod.modulate = Color.AQUAMARINE
|
||
node_freq_fs_2_mod.text = 'Частота*'
|
||
else:
|
||
node_freq_fs_2_mod.modulate = Color(1, 1, 0.941, 1)
|
||
node_freq_fs_2_mod.text = 'Частота'
|
||
node_freq_fs_2 = node_select_fs_2.get_node2(1, 3)
|
||
node_freq_fs_2_mod = node_select_fs_2.get_node2(0, 3)
|
||
if int(node_freq_fs_2.get_text()) != att_fs_2 and node_freq_fs_2.get_text() != '':
|
||
node_freq_fs_2_mod.modulate = Color.AQUAMARINE
|
||
node_freq_fs_2_mod.text = 'Аттенюатор*'
|
||
else:
|
||
node_freq_fs_2_mod.modulate = Color(1, 1, 0.941, 1)
|
||
node_freq_fs_2_mod.text = 'Аттенюатор'
|
||
|
||
|
||
## Рисует таблицу
|
||
func draw_tabl(tbl: Node, row: Array, count_row: int):
|
||
for i_row in count_row:
|
||
tbl.add_row(row[i_row])
|
||
|
||
|
||
func _on_data_received(data_from_yau_07):
|
||
## УКП
|
||
for i in range(6): ## Мощность от УКП_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(6): ## Температура от УКП_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 + 3
|
||
node_select1.set_node_text(1, i+1, '%d °С' % TMP)
|
||
|
||
for i_pow in range(6): ## Мощность от УКП_2
|
||
if len(data_from_yau_07) > Constants.DataIndices.POWER_UKP_2 + 2 * i_pow:
|
||
var power_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_2 + 2 * i_pow)
|
||
node_select2.set_node_text(0, i_pow+1, '%d' % power_ukp_2)
|
||
|
||
for row in range(6): ## Температура от УКП_2
|
||
if len(data_from_yau_07) > Constants.DataIndices.TEMPERATURE_UKP_2 + 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 + 3
|
||
node_select2.set_node_text(1, row+1, '%d °С' % TMP)
|
||
|
||
if len(data_from_yau_07) > Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * 7:
|
||
var power_ukp_3 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * 7)
|
||
var temperature_ukp_3 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * 7)
|
||
var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_3) * Constants.TEMP + 3
|
||
node_select3.set_node_text(0, 1, '%d' % power_ukp_3)
|
||
node_select3.set_node_text(1,1, '%d °С' % TMP)
|
||
|
||
|
||
func set_frame(node: Node, val: int): node.set_frame(val)
|
||
|
||
|
||
func _on_save_config():
|
||
var da = DirAccess.open(save_path)
|
||
var base_path = save_path + "save//"
|
||
if da == null:
|
||
return
|
||
else:
|
||
da.dir_exists(base_path)
|
||
da.make_dir_recursive(base_path)
|
||
var file_dialog = FileDialog.new()
|
||
file_dialog.title = "Сохранить файл как"
|
||
file_dialog.set_size(Vector2(600, 400))
|
||
file_dialog.mode = FileDialog.FILE_MODE_SAVE_FILE
|
||
file_dialog.current_dir = base_path
|
||
file_dialog.set_current_file("ЭМС-Г" + "-" + status_pribor)
|
||
file_dialog.connect("file_selected", Callable(self, "_save_selected_file"))
|
||
add_child(file_dialog)
|
||
file_dialog.popup_centered()
|
||
|
||
|
||
func _save_selected_file(file_path: String):
|
||
var data = Constants.EMS_G_PORT_DATA_HOLDER
|
||
var param_ems_g: Dictionary = {}
|
||
var other_data: Dictionary = {}
|
||
# Формируем словари
|
||
for item in data:
|
||
var regist: Dictionary = {}
|
||
regist[0x122] = item[0]
|
||
for key in item[1]:
|
||
if key in need_port:
|
||
regist[key] = item[1][key]
|
||
else:
|
||
other_data[key] = item[1]
|
||
param_ems_g[item[0]] = regist
|
||
# Переменные для сохранения
|
||
var ems_g_file = file_path
|
||
var other_name = "others" + "-" + status_pribor
|
||
var other_path = save_path + other_name
|
||
var other_names = other_name
|
||
var other_counter = 1
|
||
var dir = DirAccess.open(file_path.get_base_dir())
|
||
# Сохранение данных ЭМС-Г
|
||
var file = FileAccess.open(ems_g_file, FileAccess.WRITE)
|
||
if file != null:
|
||
file.store_string(JSON.stringify(param_ems_g))
|
||
file.close()
|
||
# Сохранение данных других
|
||
var save_other = $save_other.is_pressed()
|
||
if save_other:
|
||
while dir.file_exists(other_names):
|
||
other_names = other_name + "_" + str(other_counter)
|
||
other_path = save_path + other_names
|
||
other_counter += 1
|
||
var other_file = FileAccess.open(other_path, FileAccess.WRITE)
|
||
if other_file != null:
|
||
other_file.store_string(JSON.stringify(other_data))
|
||
other_file.close()
|
||
|
||
|
||
func _on_file_selected(file_path: String):
|
||
var file = FileAccess.open(file_path, FileAccess.READ)
|
||
# Проверка на открытие/чтение файла
|
||
if file != OK:
|
||
return
|
||
var file_content = file.get_as_text()
|
||
file.close()
|
||
var json = JSON.new()
|
||
var data = json.parse(file_content)
|
||
# Проверка на разбор содержимого файла
|
||
if data.error != OK:
|
||
return
|
||
Constants.EMS_G_PORT_DATA_HOLDER = data.result
|
||
|
||
|
||
func _on_load_config():
|
||
var file_dialog = FileDialog.new()
|
||
var base_path = save_path + "save//"
|
||
file_dialog.set_title("Выберите файл")
|
||
file_dialog.set_size(Vector2(600, 400))
|
||
file_dialog.access = FileDialog.ACCESS_FILESYSTEM
|
||
file_dialog.current_dir = base_path
|
||
add_child(file_dialog)
|
||
file_dialog.popup_centered()
|
||
|
||
|
||
func on_mode_select(intem_from_sector: int) -> void:
|
||
var node_select_device: GDTable = $TabContainer/PRD/select_dev
|
||
var get_select_device = node_select_device.get_node2(1, 0)
|
||
var meta = get_select_device.get_item_metadata(intem_from_sector)
|
||
Constants.CURRENT_MODE = meta[2]
|
||
add_signs_scene()
|
||
Network.on_command_change_device(meta)
|
||
Network.read_port_isa([Constants.BASE_PORTS.UG+8, Constants.BASE_PORTS.UG+6])
|
||
_on_start_fs_1()
|
||
_on_start_fs_2()
|
||
|
||
|
||
func _on_zapret_1(toggled_on: bool) -> void:
|
||
var meta = Constants.META.CI_1_B_UF
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var zapret_mode = 0x4000 if toggled_on else 0x0
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, zapret_mode)
|
||
|
||
|
||
func _on_zapret_2(toggled_on: bool) -> void:
|
||
var meta = Constants.META.CI_2_B_UF
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var zapret_mode = 0x4000 if toggled_on else 0x0
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, zapret_mode)
|
||
|
||
|
||
func _on_zapret_3(toggled_on: bool) -> void:
|
||
var meta = Constants.META.CI_3_B_UF
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var zapret_mode = 0x4000 if toggled_on else 0x0
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, zapret_mode)
|
||
|
||
|
||
func _on_modul_um_1(item_from_ray_1: int):
|
||
var meta = Constants.META.MODUL_UM_1
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var modul_um_values = {
|
||
1: 0x2000,
|
||
2: 0x4000,
|
||
3: 0x8000
|
||
}
|
||
|
||
var modul_um = modul_um_values.get(item_from_ray_1, 0)
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um)
|
||
|
||
|
||
func _on_modul_um_2(item_from_ray_1: int):
|
||
var meta = Constants.META.MODUL_UM_2
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var modul_um_values = {
|
||
1: 0x2000,
|
||
2: 0x4000,
|
||
3: 0x8000
|
||
}
|
||
|
||
var modul_um = modul_um_values.get(item_from_ray_1, 0)
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um)
|
||
|
||
|
||
func _on_modul_um_3(item_from_ray_1: int):
|
||
var meta = Constants.META.MODUL_UM_3
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var modul_um_values = {
|
||
1: 0x2000,
|
||
2: 0x4000,
|
||
3: 0x8000,
|
||
}
|
||
var modul_um = modul_um_values.get(item_from_ray_1, 0)
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um)
|
||
|
||
|
||
## Включение/отключение сигнала ФГОЗ
|
||
func _on_fgos_1(toggled_on: bool):
|
||
var meta = Constants.META.FGOZ_4
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var modul_um = 0x8000 if toggled_on else 0x0
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um)
|
||
|
||
|
||
## Включение/отключение сигнала ФГОЗ
|
||
func _on_fgos_2(toggled_on: bool):
|
||
var meta = Constants.META.FGOZ_3
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, meta)
|
||
var modul_um = 0x8000 if toggled_on else 0x0
|
||
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, modul_um)
|
||
|
||
|
||
## Регулировка положением луча 1
|
||
func _on_btn_ray_1(item_from_ray_1: int) -> void:
|
||
if isa_from_yau07b.has(Constants.BASE_PORTS.UG+6):
|
||
var mask = 0x7
|
||
Network.write_port_isa(Constants.BASE_PORTS.UG+6, set_bits(isa_from_yau07b[Constants.BASE_PORTS.UG+6], item_from_ray_1, mask))
|
||
Network.read_port_isa([Constants.BASE_PORTS.UG+6])
|
||
else:
|
||
print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0x6))
|
||
|
||
|
||
## Регулировка положением луча 2
|
||
func _on_btn_ray_2(item_from_ray_2: int) -> void:
|
||
if isa_from_yau07b.has(Constants.BASE_PORTS.UG+8):
|
||
var mask = 0x7
|
||
Network.write_port_isa(Constants.BASE_PORTS.UG+8, set_bits(isa_from_yau07b[Constants.BASE_PORTS.UG+8], item_from_ray_2, mask))
|
||
Network.read_port_isa([Constants.BASE_PORTS.UG+8])
|
||
else:
|
||
print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0x8))
|
||
|
||
|
||
## Регулировка аттенюатора луча 1
|
||
func _on_attenuator_1(item_from_att_1: int) -> void:
|
||
if isa_from_yau07b.has(Constants.BASE_PORTS.UG+6):
|
||
var mask = 0x38
|
||
Network.write_port_isa(Constants.BASE_PORTS.UG+6, set_bits(isa_from_yau07b[Constants.BASE_PORTS.UG+6], item_from_att_1 << 3, mask))
|
||
Network.read_port_isa([Constants.BASE_PORTS.UG+6])
|
||
else:
|
||
print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0x6))
|
||
|
||
|
||
## Регулировка аттенюатора луча 2
|
||
func _on_attenuator_2(item_from_att_1: int) -> void:
|
||
if isa_from_yau07b.has(Constants.BASE_PORTS.UG+8):
|
||
var mask = 0x38
|
||
Network.write_port_isa(Constants.BASE_PORTS.UG+8, set_bits(isa_from_yau07b[Constants.BASE_PORTS.UG+8], item_from_att_1 << 3, mask))
|
||
Network.read_port_isa([Constants.BASE_PORTS.UG+8])
|
||
else:
|
||
print_debug('В ISA отсутствует данные в \"%x\" порту' % (Constants.BASE_PORTS.UG+0x8))
|
||
|
||
|
||
func _on_read_isa_pressed() -> void:
|
||
Network.read_port_isa([Constants.BASE_PORTS.EMS_G+2, Constants.BASE_PORTS.EMS_G+4, Constants.BASE_PORTS.EMS_G+8])
|
||
|
||
|
||
## Устанавливает биты в соответствии с маской
|
||
## [param v] - Прежние значения бит
|
||
## [param a] - Новые значения бит
|
||
## [param m] - Маска изменяемых бит
|
||
func set_bits(v, a, m):
|
||
return (~m) & v | a & m
|
||
|
||
|
||
## 1 ФС
|
||
func _on_port_changed_fs_1(port_name: String, color: Color) -> void:
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.set_node_text(1, 1, port_name)
|
||
$TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1,1).modulate = color
|
||
|
||
|
||
func _on_start_fs_1():
|
||
Network.start_work_fs()
|
||
|
||
|
||
func _on_modul_fs_1(modulation_select_1) -> void:
|
||
if modulation_select_1 == 0:
|
||
Network.set_configure_gen_const_1()
|
||
elif modulation_select_1 == 1:
|
||
Network.set_configure_gen_msk_1()
|
||
|
||
|
||
func _on_get_status_1(toggled_btn):
|
||
if $Background/switch_panel/select_prd.button_pressed or $Background/switch_panel/texture_prd.button_pressed:
|
||
var inverted_state = not toggled_btn
|
||
Network.set_fs_gen_status(inverted_state)
|
||
Network.get_gen_state_1()
|
||
|
||
|
||
func _on_set_ferq_1(freq: String):
|
||
# Проверка на наличие символов в строке freq
|
||
var regex = RegEx.new()
|
||
regex.compile("^[0-9]+$")
|
||
if not regex.search(freq):
|
||
print_debug('Ошибка: частота должна быть числом без букв')
|
||
return
|
||
# Преобразование строки в число
|
||
var freq_int = int(freq) * 1_000_000
|
||
|
||
# Проверка на диапазон
|
||
if freq_int < 370 * 1_000_000 or freq_int > 6100 * 1_000_000:
|
||
print_debug('Некорректная частота')
|
||
return
|
||
|
||
Network.set_fs_ferq_carrier(freq_int)
|
||
|
||
|
||
func _on_set_att_1(att: String):
|
||
Network.set_fs_attenuation(float(att))
|
||
|
||
|
||
func _on_set_base_can_macro(can_freq: String):
|
||
Network.set_can_macro(int(can_freq))
|
||
|
||
|
||
func _on_status_can_macro_1(toggled_btn: bool):
|
||
Network.status_can_macro_1(toggled_btn)
|
||
|
||
|
||
## 2 ФС
|
||
func _on_port_changed_fs_2(port_name: String, color: Color) -> void:
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.set_node_text(1, 1, port_name)
|
||
$TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 1).modulate = color
|
||
|
||
|
||
func _on_start_fs_2():
|
||
Network.start_work_fs_2()
|
||
|
||
|
||
func _on_get_status_2(toggled_btn):
|
||
if $Background/switch_panel/select_prd.button_pressed:
|
||
var inverted_state = not toggled_btn
|
||
Network.set_fs_gen_status_2(inverted_state)
|
||
Network.get_gen_state_2()
|
||
|
||
|
||
func _on_set_ferq_2(freq: String):
|
||
# Проверка на наличие символов в строке freq
|
||
var regex = RegEx.new()
|
||
regex.compile("^[0-9]+$")
|
||
if not regex.search(freq):
|
||
print_debug('Ошибка: частота должна быть числом без букв')
|
||
return
|
||
# Преобразование строки в число
|
||
var freq_int = int(freq) * 1_000_000
|
||
|
||
# Проверка на диапазон
|
||
if freq_int < 370 * 1_000_000 or freq_int > 6100 * 1_000_000:
|
||
print_debug('Некорректная частота')
|
||
return
|
||
Network.set_fs_ferq_carrier_2(freq_int)
|
||
|
||
|
||
func _on_set_att_2(att: String):
|
||
Network.set_fs_attenuation_2(float(att))
|
||
|
||
|
||
func _on_set_base_can_macro_2(can_freq: String):
|
||
Network.set_can_macro_2(int(can_freq))
|
||
|
||
|
||
func _on_status_can_macro_2(toggled_btn: bool):
|
||
Network.status_can_macro_2(toggled_btn)
|
||
|
||
|
||
func _on_modul_fs_2(modulation_select_2) -> void:
|
||
if modulation_select_2 == 0:
|
||
Network.set_configure_gen_const_2()
|
||
elif modulation_select_2 == 1:
|
||
Network.set_configure_gen_msk_2()
|
||
|
||
|
||
## Switch panel
|
||
func _on_prd_select() -> void:
|
||
emit_signal('read_ems_g_start')
|
||
set_tab_and_buttons(0, 'select_prd', 'texture_prd')
|
||
Network.get_gen_state_1()
|
||
Network.get_gen_state_2()
|
||
|
||
|
||
func _on_control_button() -> void:
|
||
$TabContainer/ControlPanel._on_start_super_control()
|
||
set_tab_and_buttons(1, 'select_control', 'texture_control')
|
||
|
||
|
||
func _on_emsg_select() -> void:
|
||
emit_signal('read_ems_g_start')
|
||
set_tab_and_buttons(2, 'select_ems_g', 'texture_ems_g')
|
||
|
||
|
||
func _on_mfs_select() -> void:
|
||
set_tab_and_buttons(3, 'select_fs', 'texture_fs')
|
||
|
||
|
||
func _on_burger_button(toggled_on: bool) -> void:
|
||
var txt_grp: Array = get_tree().get_nodes_in_group('burger_gr')
|
||
var select_grp: Array = get_tree().get_nodes_in_group('select_grp')
|
||
var tween: Tween = get_tree().create_tween()
|
||
var pos_on_select: int = 17
|
||
var pos_on_txt: int = 15
|
||
var temp = txt_grp
|
||
var tmp_pos = pos_on_txt
|
||
|
||
var pos_off: int = -300
|
||
|
||
if toggled_on:
|
||
temp = select_grp
|
||
|
||
for btn in temp:
|
||
tween.tween_property(btn, "global_position", Vector2(pos_off, btn.global_position.y), 0.1).set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT)
|
||
|
||
var panel = $Background/switch_panel
|
||
if toggled_on:
|
||
# Анимация вправо
|
||
tween.tween_property(panel, "global_position", Vector2(-170, panel.global_position.y), 0.3).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
|
||
else:
|
||
# Анимация влево
|
||
tween.tween_property(panel, "global_position", Vector2(0, panel.global_position.y), 0.3).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
|
||
|
||
if toggled_on:
|
||
temp = txt_grp
|
||
tmp_pos = pos_on_txt
|
||
else:
|
||
temp = select_grp
|
||
tmp_pos = pos_on_select
|
||
|
||
for btn in temp:
|
||
tween.tween_property(btn, "global_position", Vector2(tmp_pos, btn.global_position.y), 0.1).set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT)
|
||
|
||
|
||
func set_tab_and_buttons(tab_index: int, button_name: String, txt_button_name: String) -> void:
|
||
$TabContainer.current_tab = tab_index
|
||
var switch_panel = $Background/switch_panel
|
||
|
||
for button in switch_panel.get_children():
|
||
if button is Button or TextureButton:
|
||
if button.name != 'burgerButton':
|
||
button.button_pressed = (button.name == button_name or button.name == txt_button_name)
|