Доработка/Рефактор/Исправления. Продолжение добавления управления модуляцией усилителей. Перенос из работы в модуль prd. Исправление диапазонов.
This commit is contained in:
@@ -20,6 +20,7 @@ const TABLE_PARAMS = {
|
||||
'dur': [4, 'Длительность импульса, мкс', true, 0.0, 1000000.0],
|
||||
'period': [5, 'Период повтора, мкс', true, 0.0, 1000000.0] }
|
||||
|
||||
const MOD_ROW_INDEX = 6 ## Индекс строки с модуляцией
|
||||
|
||||
func init_table():
|
||||
for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW)
|
||||
@@ -33,30 +34,32 @@ func init_table():
|
||||
var node = $table.get_node2(1, p[0])
|
||||
node.connect('text_submitted', Callable(self, 'on_edit_entry').bind(node))
|
||||
$table.add_row(TABLE_TAGGLE_BTN)
|
||||
$table.set_node_text(0, 6, 'Модуляция')
|
||||
$table.set_node_alligment(0, 6, HORIZONTAL_ALIGNMENT_LEFT)
|
||||
$table.set_node_editable(0, 6, false)
|
||||
var taggle_btn = $table.get_node2(1, 6)
|
||||
for item in taggle_btn.get_children():
|
||||
$table.set_node_text(0, MOD_ROW_INDEX, 'Модуляция')
|
||||
$table.set_node_alligment(0, MOD_ROW_INDEX, HORIZONTAL_ALIGNMENT_LEFT)
|
||||
$table.set_node_editable(0, MOD_ROW_INDEX, false)
|
||||
var taggle_node = $table.get_node2(1, MOD_ROW_INDEX)
|
||||
for item in taggle_node.get_children():
|
||||
item.size.x = 85
|
||||
item.size.y = 25
|
||||
item.position.x = 0
|
||||
item.position.y = 0
|
||||
taggle_btn.size.x = 85
|
||||
taggle_btn.size.y = 25
|
||||
taggle_node.size.x = 85
|
||||
taggle_node.size.y = 25
|
||||
var taggle_btn = taggle_node.get_children()[1]
|
||||
taggle_btn.connect('pressed', on_taggle_btn.bind(taggle_btn))
|
||||
taggle_btn.disabled = true
|
||||
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
|
||||
$table.set_meta('id', 0)
|
||||
signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected').bind(taggle_btn))
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
|
||||
|
||||
## Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected'))
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
call_deferred('init_table')
|
||||
|
||||
|
||||
func on_edit_entry(text : String, entry):
|
||||
print_debug()
|
||||
var ecm = $table.get_meta('ecm')
|
||||
if $table.has_meta('ecm') == false: return
|
||||
var indexis = $table.get_key_indexes(entry.name)
|
||||
@@ -77,19 +80,22 @@ func check_value(val, min_val, max_val, old_val):
|
||||
else: return old_val
|
||||
|
||||
|
||||
func on_interfer_selected(ecm):
|
||||
func on_interfer_selected(ecm, taggle_btn):
|
||||
if ecm != null:
|
||||
$table.set_meta('ecm', ecm)
|
||||
taggle_btn.disabled = false
|
||||
else:
|
||||
$table.set_meta('ecm', null)
|
||||
on_ecm_update()
|
||||
taggle_btn.disabled = true
|
||||
taggle_btn.button_pressed = false
|
||||
on_ecm_update(taggle_btn)
|
||||
|
||||
|
||||
func on_ecm_update():
|
||||
func on_ecm_update(taggle_btn):
|
||||
for item in len(TABLE_PARAMS):
|
||||
$table.set_node_text(1, item, '')
|
||||
$table.set_node_editable(1, item, false)
|
||||
if $table.has_meta('ecm') == false: return
|
||||
if not $table.has_meta('ecm'): return
|
||||
var ecm: interfer.Interfer = $table.get_meta('ecm')
|
||||
var mnms = tools.get_members_names(ecm)
|
||||
for item in ecm['params'].keys():
|
||||
@@ -100,9 +106,17 @@ func on_ecm_update():
|
||||
var val = ecm.get_value(member_name)
|
||||
$table.set_node_text(1, p[0], '%s' % val)
|
||||
$table.set_node_editable(1, p[0], p[2])
|
||||
taggle_btn.button_pressed = ecm.modulation
|
||||
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
$table.set_node_editable(1, item, false)
|
||||
|
||||
|
||||
func on_taggle_btn(taggle_btn):
|
||||
if not $table.has_meta('ecm'): return
|
||||
var ecm: interfer.Interfer = $table.get_meta('ecm')
|
||||
ecm.modulation = taggle_btn.button_pressed
|
||||
|
||||
@@ -19,6 +19,7 @@ func _ready() -> void:
|
||||
|
||||
func on_external_cu_btn_pressed(btn) -> void:
|
||||
var state = btn.button_pressed
|
||||
ProjectSettings.set_setting('application/config/external_cu', state)
|
||||
if state:
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
|
||||
@@ -31,7 +32,7 @@ func on_vk_pressed(btn) -> void:
|
||||
func on_ems2_pressed(btn) -> void:
|
||||
var state = btn.button_pressed
|
||||
signaller.emit_signal('ems2_hide_pressed', state)
|
||||
|
||||
|
||||
|
||||
func setting_tab():
|
||||
var yams: Array = [HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
|
||||
@@ -74,7 +75,7 @@ func setting_tab():
|
||||
else:
|
||||
$table.add_row([TableLabel, TableEmpti])
|
||||
$table.set_row_text(i, [row_texts[i]])
|
||||
|
||||
|
||||
var extern_cu_node = $table.get_node2(1, 17).get_children()[1]
|
||||
extern_cu_node.connect('pressed', on_external_cu_btn_pressed.bind(extern_cu_node))
|
||||
$table.set_row_text(18,(['Кнопка «Подавление»']))
|
||||
@@ -86,6 +87,6 @@ func setting_tab():
|
||||
ems2_hide_node.connect('pressed', on_ems2_pressed.bind(ems2_hide_node))
|
||||
ems2_hide_node.set_pressed(true)
|
||||
on_ems2_pressed(ems2_hide_node)
|
||||
|
||||
|
||||
$table.set_columns_min_size([365, 365])
|
||||
$table.set_columns_alignments(yams)
|
||||
|
||||
@@ -393,7 +393,7 @@ func sel_fs_sector(event):
|
||||
|
||||
func set_fs_color(ecm):
|
||||
var fs_index_arr: Array = []
|
||||
get_fs_index(ecm, fs_index_arr)
|
||||
prd.get_fs_index(ecm, fs_index_arr)
|
||||
if ecm.krp != interfer.INTERFER_OFF:
|
||||
for item in fs_index_arr:
|
||||
fs_active[item] = null
|
||||
@@ -439,30 +439,13 @@ func get_fs_param(index: int) -> Array:
|
||||
|
||||
func on_fs_selected(ecm):
|
||||
var fs_index_arr: Array = []
|
||||
get_fs_index(ecm, fs_index_arr)
|
||||
prd.get_fs_index(ecm, fs_index_arr)
|
||||
fs_selected.clear()
|
||||
for item in fs_index_arr:
|
||||
fs_selected[item] = null
|
||||
update_fs_colors()
|
||||
|
||||
|
||||
func get_fs_index(ecm, fs_index_arr):
|
||||
var sector: int
|
||||
var band: Array
|
||||
var angle: float = ecm.kni + 45.0
|
||||
if angle > 360.0:
|
||||
angle -= 360.0
|
||||
for sec in prd.fs_sectors.values():
|
||||
if float(angle) >= sec[0] and float(angle) <= sec[1]:
|
||||
sector = prd.fs_sectors.find_key(sec)
|
||||
for diap in prd.fs_freq.values():
|
||||
if ecm.params.has('freq'):
|
||||
if ecm.params['freq'] >= diap[0] and ecm.params['freq'] <= diap[1]:
|
||||
band.append(prd.fs_freq.find_key(diap))
|
||||
for item in band:
|
||||
fs_index_arr.append(item * 4 + sector)
|
||||
|
||||
|
||||
func set_btns_disabled(value: bool, btn):
|
||||
var external_cu = ProjectSettings.get_setting('application/config/external_cu', false)
|
||||
if external_cu:
|
||||
|
||||
@@ -50,6 +50,7 @@ class Interfer:
|
||||
var retss: int ## Значение счётчика сообщения в котором был произведён запрос массива параметров.
|
||||
var tick_tx: int ## Тик время обновления цели, мс.
|
||||
var source_interfer: String = '' ## Тип объекта по которой поставлена помеха.
|
||||
var modulation: bool ## Модуляция для включения усилителей
|
||||
|
||||
func _to_string() -> String:
|
||||
return 'номер: %d название: %s частота: %0.1f МГц пеленг: %0.1f гр.' % [ispp, ITERFER_MODE[krp][0], params['freq'], kni]
|
||||
@@ -148,6 +149,7 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit):
|
||||
ecm.kni = thr.aoa
|
||||
send_ecm(ecm, unit)
|
||||
signaller.emit_signal('fs_update_color', ecms)
|
||||
prd.update_fs_state(ecms)
|
||||
|
||||
if auto_status == 0:
|
||||
return
|
||||
|
||||
@@ -30,6 +30,7 @@ class Socket extends PacketPeerUDP:
|
||||
put_packet(data)
|
||||
|
||||
|
||||
|
||||
class SocketTCP extends TCPServer:
|
||||
const RX_TIMEOUT: int = 1000 ## Время сброса счётчика принятия части пакета.
|
||||
var peerstream: = PacketPeerStream.new()
|
||||
|
||||
@@ -29,10 +29,10 @@ const fs_sectors: Dictionary = {
|
||||
1: [270.0, 360.0] }
|
||||
|
||||
const fs_freq: Dictionary = {
|
||||
0: [390.0, 510.0, 200.0, 250.0, 433.0],
|
||||
0: [390.0, 800.0, 200.0, 250.0, 433.0],
|
||||
1: [800.0, 1065.0, 250.0, 300.0, 860.0],
|
||||
2: [1065.0, 1210.0, 300.0, 350.0, 1137.0],
|
||||
3: [1150.0, 1280.0, 350.0, 400.0, 1227.0],
|
||||
3: [1150.0, 1490.0, 350.0, 400.0, 1227.0],
|
||||
4: [1490.0, 2000.0, 400.0, 450.0, 1575.0],
|
||||
5: [2000.0, 3500.0, 450.0, 500.0, 2450.0],
|
||||
6: [3500.0, 6000.0, 500.0, 550.0, 5800.0] }
|
||||
@@ -123,3 +123,28 @@ func _ready() -> void:
|
||||
fs_dict[key] = fs_ampl
|
||||
if prd_dict.has(fs_ampl.prd_name):
|
||||
prd_dict[fs_ampl.prd_name].fs_dic[key] = fs_ampl
|
||||
|
||||
|
||||
func get_fs_index(ecm, fs_index_arr):
|
||||
var sector: int
|
||||
var band: Array
|
||||
var angle: float = ecm.kni + 45.0
|
||||
if angle > 360.0:
|
||||
angle -= 360.0
|
||||
for sec in fs_sectors.values():
|
||||
if float(angle) >= sec[0] and float(angle) <= sec[1]:
|
||||
sector = fs_sectors.find_key(sec)
|
||||
for diap in fs_freq.values():
|
||||
if ecm.params.has('freq'):
|
||||
if ecm.params['freq'] >= diap[0] and ecm.params['freq'] <= diap[1]:
|
||||
band.append(fs_freq.find_key(diap))
|
||||
for item in band:
|
||||
fs_index_arr.append(item * 4 + sector)
|
||||
|
||||
|
||||
func update_fs_state(ecms):
|
||||
for ecm in ecms.values():
|
||||
var fs_ids: Array
|
||||
get_fs_index(ecm, fs_ids)
|
||||
|
||||
pass
|
||||
|
||||
@@ -27,7 +27,7 @@ var settings_program: Dictionary
|
||||
'уарэп-яу07-3к': ['yau07tx', '10.1.1.33', [50033], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
|
||||
# Название: [ Протокол, Адрес, Порт получения, Комментарий ]
|
||||
'уарэп-5п28': [ '5p28', '192.168.3.109', [50000], 'IP-адрес комплекса 5П-28'],
|
||||
'уарэп-5п28': [ '5p28', '127.0.0.1', [50000], 'IP-адрес комплекса 5П-28'],
|
||||
|
||||
# Название: [ Протокол, Адрес, Скорость, ??, ??, Комментарий
|
||||
'уарэп-щ3': ['mbcs', '/home/sasha/dev/tty1', [19200, 7, 'N', 8, 1], 'Параметры клиента Modbus Serial'],
|
||||
@@ -45,21 +45,25 @@ var settings_program: Dictionary
|
||||
|
||||
func _ready() -> void:
|
||||
var file = FileAccess.open(settings_file, FileAccess.READ)
|
||||
if file != null:
|
||||
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()
|
||||
settings_program.merge(json_data)
|
||||
for key in UnitProfiles.keys():
|
||||
if json_data.has(key):
|
||||
UnitProfiles[key][1] = json_data[key][0]
|
||||
for i in len(json_data[key]) - 1:
|
||||
if json_data[key][1][i+1].is_valid_int():
|
||||
UnitProfiles[key][2][i] = int(json_data[key][i+1])
|
||||
else:
|
||||
UnitProfiles[key][2][i] = json_data[key][i+1]
|
||||
if not file:
|
||||
log.info('Не удалось открыть файл настроек %s, использованы настройики по умолчанию' % settings_file)
|
||||
return
|
||||
var read = file.get_as_text()
|
||||
file.close()
|
||||
var json_conv: = JSON.new()
|
||||
if Error.OK != json_conv.parse(read):
|
||||
log.info('Не удалось прочитать файл настроек %s, использованы настройики по умолчанию' % settings_file)
|
||||
return
|
||||
var json_data = json_conv.get_data()
|
||||
settings_program.merge(json_data)
|
||||
for key in UnitProfiles.keys():
|
||||
if not json_data.has(key): continue
|
||||
UnitProfiles[key][1] = json_data[key][0]
|
||||
for i in len(json_data[key]) - 1:
|
||||
if json_data[key][1][i+1].is_valid_int():
|
||||
UnitProfiles[key][2][i] = int(json_data[key][i+1])
|
||||
else:
|
||||
UnitProfiles[key][2][i] = json_data[key][i+1]
|
||||
log.info('Модуль настроек готов')
|
||||
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ class_name GDTable extends GridContainer
|
||||
@export_file var selector_type_file: = 'res://table/selector.tscn': set = load_selector_scene ## Сцена селектора для выбранного ряда
|
||||
|
||||
const HEAD_PREFIX = 'HEAD_' ## Префикс ключа заголовка таблицы
|
||||
const INDEX_FORMAT = '%02d_%02d' ## Формат индекса ключа
|
||||
const MAX_INDEX = 99 ## Максимальное значение индекса для колонки и строки. Связано с форматом индекса ключа
|
||||
const INDEX_FORMAT = '%03d_%03d' ## Формат индекса ключа
|
||||
const MAX_INDEX = 199 ## Максимальное значение индекса для колонки и строки. Связано с форматом индекса ключа
|
||||
const NODE_PREFIX = 'NODE_' ## Префикс ключа ячейки таблицы
|
||||
const SLCT_PREFIX = 'SLCT_' ## Префикс ключа индикатора выбранного ряда таблицы
|
||||
|
||||
|
||||
Reference in New Issue
Block a user