В процессе

This commit is contained in:
sasha80
2023-08-08 08:52:53 +03:00
parent 04e9a3ad05
commit 29101b0a6e
13 changed files with 140 additions and 163 deletions

View File

@@ -18,10 +18,7 @@ class CapsRpb:
var tick_rx: = 0.0
func _to_string() -> String: return String('капсрпб: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]])
func _init(nm):
self.name = nm
func _init(nm): self.name = nm
func parse(data):
tick_rx = tick
@@ -36,7 +33,6 @@ class CapsRpb:
var msg = json_conv.get_error_message()
emit_signal('parse_error', self, msg)
func process(delta: float):
tick += delta
if online and ((tick - tick_rx) > ONLINE_TIMEOUT):

View File

@@ -24,7 +24,7 @@ extends Node
@export var ThreatParams = {
'time_lost': [5000, 'Время после последнего обновления в мс, через которое цель считается потерянной'],
'time_lost': [5.0, 'Время после последнего обновления в с, через которое цель считается потерянной'],
'freq_min': [200.0, 'Нижняя рабочая частота, МГЦ'],
'freq_max': [6000.0, 'Нижняя рабочая частота, МГЦ'] }

View File

@@ -1,6 +1,5 @@
extends Node
@onready var timer_check_lost: = Timer.new()
class Threat:
var alt: float # Текущая высота, метры.
@@ -23,10 +22,9 @@ class Threat:
var tmod: String # Тип модуляции.
var utime: Dictionary # Время крайнего обновления.
var width: float # Ширина занимаемого диапазона частот, МГц.
var id: int # Идентификатор цели
var id: int # Идентификатор цел.
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):
@@ -50,16 +48,15 @@ func _ready() -> void:
var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп')
var unit = REPNetwork.units[unit_key]
unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
var timer_check_lost: = Timer.new()
add_child(timer_check_lost)
timer_check_lost.connect('timeout', Callable(self, 'on_timer_check_lost'))
timer_check_lost.start(REPSettings.ThreatParams.time_lost[0] / 2000.0)
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)
func on_timer_check_lost():
var tick = Time.get_ticks_msec()
for id in threats.keys():
var th = threats[id]
if (tick - th.atick) >= REPSettings.ThreatParams.time_lost[0]:
func on_timer_check_lost(unit, time_lost: int):
for th in threats.values():
if (unit.tick - th.atick) >= time_lost:
threats.erase(th.id)
call_deferred('emit_signal', 'threat_lost', threats, th)
@@ -74,12 +71,12 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb):
if id in threats:
var th = threats[id]
th.set_from_dic(dic_th)
th.atick = Time.get_ticks_msec()
th.atick = unit.tick
call_deferred('emit_signal', 'threat_update', threats, th)
else:
var th = Threat.new()
th.set_from_dic(dic_th)
th.atick = Time.get_ticks_msec()
th.atick = unit.tick
th.fflags['atick'] = true
threats[id] = th
call_deferred('emit_signal', 'threat_new', threats, th)

View File

@@ -2,6 +2,8 @@ extends Node
func radians(val: float): return (val * PI) / 180.0
func ibytes_to_word(buf: PackedByteArray, i: int) -> int: return buf[i] + (buf[i + 1] * 256)
func hypot(x: float, y: float) -> float: return sqrt(x * x + y * y)
func get_members_names(obj: Object) -> Array:
@@ -24,13 +26,7 @@ func map_dec_to_rad(pos0: Vector2, pos: Vector2) -> Vector2:
var x1: float = pos.x - pos0.x
var y1: float = pos.y - pos0.y
var ang: float = (atan2(y1, x1) * 180.0) / PI
ang += 360.0 * float(ang < 0.0)
var radius: float = hypot(x1, y1)
return Vector2(ang, radius)
func hypot(x: float, y: float) -> float:
return sqrt(x * x + y * y)
return Vector2(ang + 360.0 * float(ang < 0.0), hypot(x1, y1))
func is_overlap(x1, x2, y1, y2):
@@ -38,10 +34,6 @@ func is_overlap(x1, x2, y1, y2):
return max(x1, y1) <= min(x2, y2)
func ibytes_to_word(buf: PackedByteArray, i: int) -> int:
return buf[i] + (buf[i + 1] * 256)
func map_range(val: float, a0: float, a1: float, b0: float, b1: float) -> float:
""" Переводит значение val из диапазона a0...a1 в диапазон b0...b1 """
return (((val - a0) * (b1 - b0)) / (a1 - a0)) + b0
@@ -52,10 +44,6 @@ func type_is_num(val) -> bool:
return (typeof(val) == TYPE_INT) or (typeof(val) == typeof(0.0))
func sort_ascending_0(a, b) -> bool:
return a[0] < b[0]
func is_point_in_polygon(pos: Vector2, p: PackedVector2Array) -> bool:
var j: int = len(p) - 1
var odd_nodes: int = 0

View File

@@ -79,12 +79,12 @@ class YaU07:
func send_isa(cmd_code: int, ports_data: Array) -> bool:
if (cmd_state == CmdState.WAIT) or (cmd_state == CmdState.SEND):
if (cmd_state == CmdState.WAIT) \
or (cmd_state == CmdState.SEND) \
or (cmd_state == CmdState.UNCK):
return false
if not ((cmd_code == CmdCode.READ_ISA) or (cmd_code == CmdCode.WRITE_ISA)):
return false
if cmd_state == CmdState.UNCK:
return false
cmd_num_tx = (cmd_num_rx + 1) % 0xffff

View File

@@ -2,43 +2,43 @@ 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
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 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