Merge remote-tracking branch 'vika/эмс-тг' into эмс-тг
This commit is contained in:
@@ -356,36 +356,59 @@ func map_yems_info_to_table(unit_info: Dictionary, ctable: GDTable, indexes: Dic
|
|||||||
|
|
||||||
## Находит пересечения диапазонов
|
## Находит пересечения диапазонов
|
||||||
func find_inters(info: Dictionary) -> Array:
|
func find_inters(info: Dictionary) -> Array:
|
||||||
# info - словарь, его структура
|
|
||||||
# {
|
var result = []
|
||||||
# "устройство": # имя устройства ("эмс-ор63")
|
var all_clusters = []
|
||||||
# [
|
# Собираем все кластеры из всех устройств в один массив
|
||||||
# {
|
|
||||||
# cname, # имя кластера ("Кластер-0")
|
|
||||||
# wfb, # ширина диапазона, МГЦ (800.0)
|
|
||||||
# cfb, # центр диапазона, МГЦ (2000.0)
|
|
||||||
# txe, # передатчик включен
|
|
||||||
# rxe # передатчик выключен
|
|
||||||
# },
|
|
||||||
# {
|
|
||||||
# cname, # имя кластера ("Кластер-1")
|
|
||||||
# wfb, # ширина диапазона, МГЦ (200.0)
|
|
||||||
# cfb, # центр диапазона, МГЦ (1000.0)
|
|
||||||
# txe, # передатчик включен
|
|
||||||
# rxe # передатчик выключен
|
|
||||||
# },
|
|
||||||
# ]
|
|
||||||
# }
|
|
||||||
for nm in info:
|
for nm in info:
|
||||||
# nm - имя устройства
|
# nm - имя устройства
|
||||||
var unit_data = info[nm]
|
var unit_data = info[nm]
|
||||||
if not unit_data: continue
|
if not unit_data: continue
|
||||||
for cls in unit_data.mcls:
|
# Добавлена проверка для совместимости
|
||||||
# cls - один кластер
|
var clusters = unit_data if unit_data is Array else unit_data.mcls
|
||||||
#print_debug([cls.cname, cls.wfb, cls.cfb, cls.txe, cls.rxe])
|
# cls - один кластер
|
||||||
pass
|
for cls in clusters:
|
||||||
|
var cfb = float(cls.cfb)
|
||||||
|
var wfb = float(cls.wfb)
|
||||||
|
# расчёт границ частотных диапазонов
|
||||||
|
var freq_min1 = cfb - wfb / 2.0
|
||||||
|
var freq_max1 = cfb + wfb / 2.0
|
||||||
|
all_clusters.append([nm, cls.cname, freq_min1, freq_max1, cls.txe, cls.rxe])
|
||||||
|
print([nm, cls.cname, freq_min1, freq_max1, cls.txe, cls.rxe])
|
||||||
|
|
||||||
|
for i in all_clusters.size():
|
||||||
|
var cl1 = all_clusters[i]
|
||||||
|
var dev1 = cl1[0]
|
||||||
|
var name1 = cl1[1]
|
||||||
|
var min1 = cl1[2]
|
||||||
|
var max1 = cl1[3]
|
||||||
|
var txe1 = cl1[4]
|
||||||
|
var rxe1 = cl1[5]
|
||||||
|
|
||||||
|
# Сравниваем текущий кластер со всеми последующими, чтобы избежать дублей и самопересечений
|
||||||
|
for j in range(0, all_clusters.size()):
|
||||||
|
var cl2 = all_clusters[j]
|
||||||
|
var dev2 = cl2[0]
|
||||||
|
var name2 = cl2[1]
|
||||||
|
var min2 = cl2[2]
|
||||||
|
var max2 = cl2[3]
|
||||||
|
var txe2 = cl2[4]
|
||||||
|
var rxe2 = cl2[5]
|
||||||
|
|
||||||
|
#Если нет пары TR(RT) то пропускаем эту комбинацию
|
||||||
|
if not ((txe1 and rxe2) or (rxe1 and txe2)):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Проверка на пересечение диапазонов, пересечение есть если начало одного диапазона меньше конца другого
|
||||||
|
if max1 > min2 and max2 > min1:
|
||||||
|
#Вычисляем точные границы пересечения
|
||||||
|
var inter_start = max(min1, min2)
|
||||||
|
var inter_end = min(max1, max2)
|
||||||
|
|
||||||
|
# Формируем результат в требуемом формате
|
||||||
|
result.append([dev1, dev2, name1, name2, inter_start, inter_end])
|
||||||
# заглушка для возвращаемых данных
|
# заглушка для возвращаемых данных
|
||||||
return [['эмс-ор63', 'эмс-ор63', 'Кластер-0', 'Кластер-0', 1600.0, 2400.0]]
|
return result
|
||||||
|
|
||||||
|
|
||||||
## Отображает кластеры на шкале
|
## Отображает кластеры на шкале
|
||||||
|
|||||||
Reference in New Issue
Block a user