Merge remote-tracking branch 'MaD_CaT/master'

# Conflicts:
#	scenes/frm_threats.gd
#	scenes/tab_switch.gd
#	scenes/ЭМС.gd
#	scenes/работа.gd
#	scenes/работа.tscn
#	scripts/repnetwork.gd
#	scripts/threats.gd
#	scripts/yems_devs.gd
#	table/table.gd
This commit is contained in:
sasha80
2023-08-10 13:07:58 +03:00
23 changed files with 706 additions and 449 deletions

View File

@@ -15,46 +15,46 @@ var logger_page: Node
func create_socket(nm) -> Socket:
var addr = REPSettings.UnitProfiles[nm][1]
var port = REPSettings.UnitProfiles[nm][2]
var broad = REPSettings.UnitProfiles[nm][3]
var bind = REPSettings.UnitProfiles[nm][4]
var sock: = Socket.new()
sock.set_broadcast_enabled(broad)
var rc = Error.OK if not bind else sock.bind(port, addr)
var errlevel = Log.INFO if rc == Error.OK else Log.ERROR
Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)])
return sock
var addr = REPSettings.UnitProfiles[nm][1]
var port = REPSettings.UnitProfiles[nm][2]
var broad = REPSettings.UnitProfiles[nm][3]
var bind = REPSettings.UnitProfiles[nm][4]
var sock: = Socket.new()
sock.set_broadcast_enabled(broad)
var rc = Error.OK if not bind else sock.bind(port, addr)
var errlevel = Log.INFO if rc == Error.OK else Log.ERROR
Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)])
return sock
func _ready() -> void:
Log.info('Сетевой модуль готов')
Log.info('Сетевой модуль готов')
poll_sockets.append(create_socket('уарэп-яу07-частный'))
poll_sockets.append(create_socket('уарэп-яу07-общий'))
poll_sockets.append(create_socket('уарэп-капсрпб-пол'))
poll_sockets.append(create_socket('уарэп-яу07-общий'))
poll_sockets.append(create_socket('уарэп-капсрпб-пол'))
sock_unicast = poll_sockets[0]
for unit_name in REPSettings.UnitProfiles:
var setting = REPSettings.UnitProfiles[unit_name]
var proto = setting[0]
if proto in PROTOCOL_TYPES:
var unit = PROTOCOL_TYPES[proto].new(unit_name)
var unit_key = REPSettings.get_unit_key(unit_name)
units[unit_key] = unit
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key))
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key))
var setting = REPSettings.UnitProfiles[unit_name]
var proto = setting[0]
if proto in PROTOCOL_TYPES:
var unit = PROTOCOL_TYPES[proto].new(unit_name)
var unit_key = REPSettings.get_unit_key(unit_name)
units[unit_key] = unit
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key))
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key))
for key in units: Log.info('%s %s:%d' % [units[key].name, key[0], key[1]])
func poll_receive(sock: Socket) -> bool:
while sock.get_available_packet_count() > 0:
var data: = sock.get_packet()
var addr: = sock.get_packet_ip()
var port: = sock.get_packet_port()
var addr_port: = [addr, port]
if addr_port in units: units[addr_port].parse(data)
while sock.get_available_packet_count() > 0:
var data: = sock.get_packet()
var addr: = sock.get_packet_ip()
var port: = sock.get_packet_port()
var addr_port: = [addr, port]
if addr_port in units: units[addr_port].parse(data)
return false

View File

@@ -27,10 +27,10 @@ class Threat:
var width: float ## Ширина занимаемого диапазона частот, МГц.
var id: int ## Идентификатор цели.
func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
func _to_string() -> String: return 'номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq]
func set_from_dic(dic_vals: Dictionary):
func set_from_dic(dic_vals: Dictionary):
var items: = fflags.keys().filter(func(vn): return vn in dic_vals)
items.any(func(vn): set(vn, dic_vals[vn]); fflags[vn] = true; return false)
@@ -43,12 +43,12 @@ var threats = {} ## Список целей. Индекс - <источник
func _ready() -> void:
Log.info('Модуль обработки целей готов')
var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп')
Log.info('Модуль обработки целей готов')
#var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп')
var unit = REPNetwork.units[unit_key]
var timer_check_lost: = Timer.new()
add_child(timer_check_lost)
unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
#unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
timer_check_lost.connect('timeout', Callable(self, 'on_timer_check_lost').bind(unit, REPSettings.ThreatParams.time_lost[0]))
timer_check_lost.start(REPSettings.ThreatParams.time_lost[0] / 2.0)
@@ -63,7 +63,7 @@ func on_timer_check_lost(unit, time_lost: int):
## Приём целей
func on_data_capsrpb_received(unit: capsrpb.CapsRpb):
if 'mis' not in unit.json_dic:
if 'mis' not in unit.json_dic:
return
var mis = unit.json_dic['mis']
for dic_th in mis:

65
scripts/yems_consts.gd Normal file
View File

@@ -0,0 +1,65 @@
extends Node
# Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС
const INPUT_ROWS0 = [
[1,['1111 МР-231S, УИЗП', 'X31', '0.00', '0.00']],
[2,['2222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[3,['3НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[4,['4НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[5,['5ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[8,['64302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[11,['7НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']],
[22,['8222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[23,['9РЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[24,['10НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[25,['11ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[28,['124302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[21,['13НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
# Таблица с данными для выходов, первое значение - индекс устройства в ячейке КЭМС
const OUTPUT_ROWS0 = [
[41,['15НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
[42,['16НРЛС МР-231S', 'X62', '0.00', '0.00']],
[43,['17НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[44,['18НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[45,['19ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[46,['204302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[48,['21НРЛС 11111111', 'X69', '0.00', '0.00']],
[52,['22НРЛС МР-231S', 'X62', '0.00', '0.00']],
[53,['23НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[54,['24НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[55,['25ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[56,['264302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[58,['27НРЛС 11111111', 'X69', '0.00', '0.00']]]
const INPUT_ROWS1 = [
[12,['283333 МР-231S, Строб ЭМС', 'X52', '0.00', '0.00']],
[13,['29НРЛС МР-231-3, УИЗП', 'X54', '0.00', '0.00']],
[14,['30НРЛС МР-231-3, Строб ЭМС', 'X55', '0.00', '0.00']],
[15,['31ЦИСВС-1010, УИЗП', 'X23', '0.00', '0.00']],
[21,['32НРЛС МР-231S, УИЗП', 'X21', '0.00', '0.00']],
[22,['33НРЛС МР-231S, Строб ЭМС', 'X22', '0.00', '0.00']],
[23,['34НРЛС МР-231-3, УИЗП', 'X24', '0.00', '0.00']],
[32,['352222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[33,['36НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[34,['37НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[35,['38ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[38,['394302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[31,['40НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
# Таблица с данными для выходов, первое значение - индекс устройства в ячейке КЭМС
const OUTPUT_ROWS1 = [
[41,['41НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
[42,['42НРЛС МР-231S', 'X62', '0.00', '0.00']],
[43,['43НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[44,['44НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[45,['45ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[46,['464302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[48,['47НРЛС 11111111', 'X69', '0.00', '0.00']],
[62,['48НРЛС МР-231S', 'X62', '0.00', '0.00']],
[63,['49НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[64,['50НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[65,['51ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[66,['524302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[68,['53НРЛС 11111111', 'X69', '0.00', '0.00']]]

View File

@@ -2,43 +2,36 @@ extends Node
class InDev:
var id: int # Идентификатор индекс устройства
var dev_name: String # Имя подключаемого комплекса
var connector: String # Номер разъёма в приборе
var delay: float # Задержка фронта импульса
var offset: float # Смещение фронта импульса
var state: int # Состояние входа
var freq: int # Предполагаемая частота на которой работает комплекс
var ports_data: Dictionary # Словарь состояния портов устройства
var tbl_row_id: int # Индекс устройства в таблице входов
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
class OutDev:
var id: int # Идентификатор индекс устройства
var dev_name: String # Имя подключаемого комплекса
var connector: String # Номер разъёма в приборе
var delay: float # Задержка фронта импульса
var offset: float # Смещение фронта импульса
var state: int # Состояние входа
var freq: int # Предполагаемая частота на которой работает комплекс
var ports_data: Dictionary # Словарь состояния портов устройства
var tbl_row_id: int # Индекс устройства в таблице выходов
var mode: int # Режим работы выхода
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
mode = 0
var id: int # Идентификатор индекс устройства
var dev_name: String # Имя подключаемого комплекса
var connector: String # Номер разъёма в приборе
var delay: float # Задержка фронта импульса
var offset: float # Смещение фронта импульса
var state: int # Состояние входа
var freq: int # Предполагаемая частота на которой работает комплекс
var ports_data: Dictionary # Словарь состояния портов устройства
var tbl_row_id: int # Индекс устройства в таблице выходов
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
var connect_devs: Dictionary # Список присоединённых устройств
var board: String # Плата в которой находится устройство
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
class OutDev extends InDev:
var mode: String # Режим работы выхода
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
mode = 'Работа'

15
scripts/yemsboards.gd Normal file
View File

@@ -0,0 +1,15 @@
extends Node
class EmsBoard:
var id_board: String
var in_devs: Dictionary # Словарь с входными устройствами
var out_devs: Dictionary # Словарь с выходными устройствами
var base_addr_isa: int # Базовый адрес ячейки isa
var in_tbl: Array
var out_tbl: Array
func _init(id, base_addr, in_table, out_table):
id_board = id
in_tbl = in_table
out_tbl = out_table
base_addr_isa = base_addr