@@ -39,8 +39,8 @@ var table_cell_row: Array
#endregion
#region Заполняется во время работы
var yems_data_ info : Dictionary [ StringName , Dictionary ] ## Доклады
var yems_data_ cmd : Dictionary [ StringName , Dictionary ] ## Команды
var yems_info : Dictionary [ StringName , Dictionary ] ## Доклады
var yems_cmd : Dictionary [ StringName , Dictionary ] ## Команды
## Порядок следования кластеров в таблице.
## {имя_у с тр о йс тва : { имя_кла с те р а : инде кс _в_та б лице } }
var cnames_table : Dictionary [ StringName , Dictionary ]
@@ -50,12 +50,18 @@ var pnames_scale: Dictionary[StringName, int]
#endregion
enum CalsterStatus {
CLASTER_DELETED ,
CLASTER_RUNNING
}
func _ready ( ) - > void :
# Инициализировать переменные
for i in index_to_unit_names . size ( ) :
var nm : = index_to_unit_names [ i ]
name_to_index [ nm ] = i
yems_data_ info [ nm ] = { }
yems_info [ nm ] = { }
cnames_table [ nm ] = { }
var btns_scales = get_tree ( ) . get_nodes_in_group ( ' кнопки-шкалы ' )
for node in btns_scales :
@@ -75,7 +81,7 @@ func _ready() -> void:
node . get_node ( ' panel_tx ' ) . back_color = color_even
# Подключить обработчик для приёма данных
for nm in yems_data_ info :
for nm in yems_info :
var yems_unit = network . get_unit_instance ( nm )
yems_unit . connect ( ' data_received ' , on_data_received . bind ( nm ) )
@@ -99,7 +105,7 @@ func _ready() -> void:
## Обрабатывает событие [b]data_received[/b]
func on_data_received ( data : Dictionary , nm : StringName ) :
var unit_data : = yems_data_ info [ nm ]
var unit_data : = yems_info [ nm ]
unit_data . merge ( data , true )
if not unit_data :
return
@@ -108,8 +114,36 @@ func on_data_received(data: Dictionary, nm: StringName):
var indexes : = cnames_table [ nm ] # Идексы строк в таблице
map_yems_data_to_table ( unit_data , ctable , indexes )
map_yems_data_to_scale ( unit_data , claster_scale )
var inters : = find_inters ( yems_data_ info )
var inters : = find_inters ( yems_info )
map_inters_to_matrix ( inters , $ ' матрица ' )
set_timeouts ( yems_info )
func set_timeouts ( info : Dictionary ) :
for nm in info : # nm - имя устройства
var unit_data = info [ nm ]
if not unit_data : continue
for cls in unit_data . mcls : # cls - один кластер
var timer_name = NodePath ( ' %s _ %s ' % [ nm , cls . cname ] )
var timer = get_node_or_null ( timer_name )
if not timer :
timer = Timer . new ( )
timer . name = timer_name
timer . one_shot = true
timer . connect ( ' timeout ' , _on_timeout_ttl . bind ( nm , cls . cname ) )
add_child ( timer )
print_debug ( ' создан: %s ' % timer_name )
timer . start ( cls . ttl )
print_debug ( ' пуск: %s ' % timer_name )
func _on_timeout_ttl ( nm , cname ) :
var timer_name = NodePath ( ' %s _ %s ' % [ nm , cname ] )
var timer = get_node_or_null ( timer_name )
if timer :
remove_child ( timer )
timer . queue_free ( )
print_debug ( ' удалён: %s ' % timer_name )
func map_inters_to_matrix ( inters : Array , matrix : GridContainer ) - > void :
@@ -174,7 +208,8 @@ func find_inters(info: Dictionary) -> Array:
if not unit_data : continue
for cls in unit_data . mcls :
# cls - один кластер
print_debug( [ cls . cname , cls . wfb , cls . cfb , cls . txe , cls . rxe ] )
# print_debug([cls.cname, cls.wfb, cls.cfb, cls.txe, cls.rxe] )
pass
# заглушка для возвращаемых данных
return [ [ ' эмс-о р 63 ' , ' эмс-о р 63 ' , ' Кластер-0 ' , ' Кластер-0 ' , 1600.0 , 2400.0 ] ]