From 41cb996d4c4d2478288f9cc8b369b14b7f18479f Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 21 Jul 2023 16:24:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=B2?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B5.=20=D0=94?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frm_threats.gd | 35 +++++++++++++++++++++++++++++++++++ scenes/tab_switch.gd | 15 +++++++++++++++ scripts/capsrpb.gd | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 scenes/frm_threats.gd create mode 100644 scenes/tab_switch.gd create mode 100644 scripts/capsrpb.gd diff --git a/scenes/frm_threats.gd b/scenes/frm_threats.gd new file mode 100644 index 00000000..7fe42c3b --- /dev/null +++ b/scenes/frm_threats.gd @@ -0,0 +1,35 @@ +extends "res://scenes/рамка.gd" + +var TableHeader = preload('res://table/header.tscn') +var TableNode = preload('res://table/node.tscn') + + +func _ready() -> void: + assert(TableHeader) + assert(TableNode) + call_deferred('init_table') + + +func init_table(): + $scrl_threats/tbl_threats.set_header([TableHeader, TableHeader, TableHeader, TableHeader]) + $scrl_threats/tbl_threats.set_header_text(['Номер', 'Пеленг', 'Частота, МГц', 'Назначено']) + $scrl_threats/tbl_threats.set_columns_min_size([50, 140, 140, 100]) + $scrl_threats/tbl_threats.pin_header($scrl_threats, self) + $scrl_threats/tbl_threats.connect('row_pressed', Callable(self, 'on_row_pressed')) + + +func on_row_pressed(i_row: int): + $scrl_threats/tbl_threats.set_row_selected(i_row, true) + + +func _on_btn_add_thr_pressed() -> void: + var i_row = $scrl_threats/tbl_threats.get_rows_count() + $scrl_threats/tbl_threats.add_row([TableNode, TableNode, TableNode, TableNode]) + $scrl_threats/tbl_threats.set_row_text(i_row, ['%d' % i_row, '%d' % ((i_row * 100) + 2000), '%d' % ((i_row * 20) % 360), 'Нет']) + + +func _on_btn_del_thr_pressed() -> void: + var i_rows: = Array() + $scrl_threats/tbl_threats.get_selected_rows(i_rows) + for i in i_rows: + $scrl_threats/tbl_threats.remove_row(i) diff --git a/scenes/tab_switch.gd b/scenes/tab_switch.gd new file mode 100644 index 00000000..c2878886 --- /dev/null +++ b/scenes/tab_switch.gd @@ -0,0 +1,15 @@ +extends TabContainer + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _enter_tree() -> void: + REPNetwork.logger_page = $'журнал' diff --git a/scripts/capsrpb.gd b/scripts/capsrpb.gd new file mode 100644 index 00000000..435266b1 --- /dev/null +++ b/scripts/capsrpb.gd @@ -0,0 +1,38 @@ +extends Node + +const ONLINE_TIMEOUT = 5.0 # Время ожидания пакета от ячейки, секунды +const BUFFER_SIZE = 2048 + + +class CapsRpb: + signal line_changed(unit: CapsRpb) + signal command_done(unit: CapsRpb) + signal command_fail(unit: CapsRpb) + var online: = false + var name: = String() + var test_json_conv: JSON + var tick: = 0.0 + var tick_rx: = 0.0 + + func _to_string() -> String: return String('капсрпб: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]]) + func _init(nm): + test_json_conv = JSON.new() + self.name = nm + + + func parse(data): + tick_rx = tick + if not online: + online = true + emit_signal('line_changed', self) + var utf8_data = data.get_string_from_utf8() + test_json_conv.parse(utf8_data) + var json = test_json_conv.get_data() + print_debug(json) + + + func process(delta: float): + tick += delta + if online and ((tick - tick_rx) > ONLINE_TIMEOUT): + online = false + emit_signal('line_changed', self)