From 4b3ed240d023d46ae5f4af3639f2440c7d3a2c12 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 18 Sep 2023 11:20:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9?= =?UTF-8?q?=20=D1=82=D0=B8=D0=BF=D0=B0=206,7,8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blue.png | Bin 0 -> 131 bytes blue.png.import | 34 +++++ fs.gd | 294 ++++++++++++++++++++++++++++++++++++++ green.png | Bin 0 -> 126 bytes green.png.import | 34 +++++ grey.png | Bin 0 -> 130 bytes grey.png.import | 34 +++++ pomehi.gd => interfers.gd | 148 +++++++++++++------ main.gd | 41 +++++- main.tscn | 40 ++++-- project.godot | 3 +- red.png | Bin 0 -> 131 bytes red.png.import | 34 +++++ кнопка-4.tscn | 8 +- 14 files changed, 607 insertions(+), 63 deletions(-) create mode 100644 blue.png create mode 100644 blue.png.import create mode 100644 fs.gd create mode 100644 green.png create mode 100644 green.png.import create mode 100644 grey.png create mode 100644 grey.png.import rename pomehi.gd => interfers.gd (50%) create mode 100644 red.png create mode 100644 red.png.import diff --git a/blue.png b/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2e1ed28a0e0ba66b5e8efdb433c2c81879b81e GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ihk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)buCjv*Ss$y>f#9Bz;{aLklRNbxc@U|?9X Wfib= BANDS[i][0]) and (float(freq) <= BANDS[i][1]): + lit = i+1 + + if (float(interfer.options['kni']) < 0) or (float(interfer.options['kni'] > 360)): + fs_of_old(interfer) + return 2 + for i in range(len(SECTORS)): + if i < 1: + if (float(interfer.options['kni']) >= SECTORS[i][0]) or (float(interfer.options['kni']) <= SECTORS[i][1]): + sec = i+1 + else: + if (float(interfer.options['kni']) >= SECTORS[i][0]) and (float(interfer.options['kni']) <= SECTORS[i][1]): + sec = i+1 + var fs_arr: Array + fs_arr = FS_PARAM.filter(func(item): return item[0] == sec) + fs_arr = fs_arr.filter(func(item): return item[1] == lit) + if len(fs_arr) > 0: + var fs_num = fs_arr[0][2] + if g_fs_dict[fs_num].isg == 1: + if g_fs_dict[fs_num].interfer == null: + g_fs_dict[fs_num].interfer = interfer + if (interfer.active_fs != g_fs_dict[fs_num]) and (interfer.active_fs != null): + fs_off(interfer.active_fs) + interfer.active_fs.btn.set_texture_normal(btn_txr0) + interfer.active_fs = g_fs_dict[fs_num] + g_fs_dict[fs_num].pow = float(interfer.options['powp']) + g_fs_dict[fs_num].freq = float(freq) + g_fs_dict[fs_num].width = float(width) + update_fs(g_fs_dict[fs_num], float(interfer.options['powp']), float(freq), float(width)) + g_fs_dict[fs_num].btn.set_texture_normal(btn_txr2) + if g_active_fs == g_fs_dict[fs_num]: + on_btn_fs(g_active_fs) + return 1 + elif g_fs_dict[fs_num].interfer == interfer: + update_fs(g_fs_dict[fs_num], float(interfer.options['powp']), float(freq), float(width)) + if g_active_fs == g_fs_dict[fs_num]: + on_btn_fs(g_active_fs) + return 1 + else: + fs_of_old(interfer) + return 3 + else: + fs_of_old(interfer) + return 4 + else: + fs_of_old(interfer) + return 2 + + +func fs_of_old(interfer): + if interfer.active_fs != null: + fs_off(interfer.active_fs) + interfer.active_fs.btn.set_texture_normal(btn_txr0) + + +func update_fs(block_fs, pow, freq, width): + block_fs.pow = pow + block_fs.freq = freq + block_fs.width = width + + +func on_receive_msg8(data): + for key in data: + if g_msg8_data.has(key): + g_msg8_data[key].text = str(data[key]) + pass + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/green.png b/green.png new file mode 100644 index 0000000000000000000000000000000000000000..0e32cec53f34ffe768f886f1e60463a5c3337e68 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ihk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@g2J9Ijv*Ss$pN=sG_&`5B|A#jGF)9>Agd|z Rm<1@!;OXk;vd$@?2>@}F9-;sM literal 0 HcmV?d00001 diff --git a/green.png.import b/green.png.import new file mode 100644 index 0000000..e5e1125 --- /dev/null +++ b/green.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv0uw0tjpu66a" +path="res://.godot/imported/green.png-5db815cc8219d4fb24db6968e2796f87.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://green.png" +dest_files=["res://.godot/imported/green.png-5db815cc8219d4fb24db6968e2796f87.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/grey.png b/grey.png new file mode 100644 index 0000000000000000000000000000000000000000..6c17fe8eb7cd37f386efcce2a655ca094aee850a GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ihk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@g5sVojv*Ss$!pfHPd~srV}S{ufzeV)35M%O W87FQz#@Gc^!r', 'fhss', 'lfm', 'const'] - +const SVK = ['Подготовка', 'Выполнено', 'Ошибка', 'Занято', 'Неисправно'] # Номера колонок const COLUMN_OPT = [[COLUMN_SVK, SVK]] @@ -49,34 +49,65 @@ const COLUMN_OPT_BTN = [COLUMN_SVK] const ID_ARRAY_LEN = 100 # Размер пула номеров целей # Помеха -class Pomeha: +class Interfer: # параметры цели, второе значение, разрешение отправки. - var ispp : String - var svk : int - var krp : String - var powp : String - var kni : String - var freq : String - var width : String + var get_data: Dictionary = { + 'fpga_ver ': '', + 'brd_ver': '', + 'mcu_ver': '', + 'soc_temp': '', + 'rf_temp': '', + 'psu_temp': '', + } + var options: Dictionary = { + 'ispp': 0, + 'krp': '', + 'powp': 0.0, + 'kni': 0.0, + 'params': {}, + 'get': [], + } + var svk: int = 0 + var row_id: int + var active_fs: fs.Fs + + func _init(data: Dictionary): + options.merge(data, true) - func _init(args : Array): - ispp = '%s' % args[0] - krp = '%s' % args[1] - powp = '%s' % args[2] - kni = '%s' % args[3] - freq = '%s' % args[4] - width = '%s' % args[5] + func update_row(): + var new_row: Array = [] + new_row.append(str(options['ispp'])) + new_row.append(str(SVK[svk])) + new_row.append(str(options['krp'])) + new_row.append(str(options['powp'])) + new_row.append(str(options['kni'])) + new_row.append(get_val('freq')) + new_row.append(get_val('width')) + return new_row - func update_rows(): - var new_rows: Array = [] - new_rows.append('%s' % ispp) - new_rows.append('%s' % svk) - new_rows.append('%s' % krp) - new_rows.append('%s' % powp) - new_rows.append('%s' % kni) - new_rows.append('%s' % freq) - new_rows.append('%s' % width) - return new_rows + func get_val(val): + if options['params'].has(val) : + return str(options['params'][val]) + else: + return '' + + func update_interfer(data: Dictionary): + options.merge(data, true) + + +func set_interfer(data): + if interfers.has(data['ispp']): + interfers[data['ispp']].update_interfer(data) + var new_row = interfers[data['ispp']].update_row() + g_table.set_row_text(interfers[data['ispp']].row_id, new_row) + else: + var new_interfer = Interfer.new(data) + interfers[data['ispp']] = new_interfer + on_row_add(g_table, interfers[data['ispp']]) + var cmd_state: int = fs.set_fs(interfers[data['ispp']]) + interfers[data['ispp']].svk = cmd_state + var cell = g_table.get_node2(COLUMN_SVK, interfers[data['ispp']].row_id) + cell.select(cmd_state) func init_table(table: Table, sizes: Array): @@ -95,24 +126,61 @@ func init_opt_btns(row : int, table): func init_pomehi(table): # Инициализация вкладки с целями - table.set_header(TABLE_HEADER_TYPES) - table.set_header_text(TABLE_HEADERS) - on_btn_add(table) - init_table(table, TABLE_COLUMN_SIZES) - table.connect('row_pressed', Callable(self, 'on_row_pressed').bind(table)) - table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [table]) + g_table = table + g_table.set_header(TABLE_HEADER_TYPES) + g_table.set_header_text(TABLE_HEADERS) + init_table(g_table, TABLE_COLUMN_SIZES) + g_table.connect('row_pressed', Callable(self, 'on_row_pressed').bind(g_table)) -func on_btn_add(table): - var pomeha : = Pomeha.new([1,2,3,4,5,6]) - pomehi['%d' % 1] = pomeha - var row = pomeha.update_rows() +func on_row_add(table, interfer): + var row = interfer.update_row() table.add_row(TABLE_ROW_TYPES) table.set_row_text(table.get_rows_count()-1, row) table.set_columns_min_size(TABLE_COLUMN_SIZES) + table.set_node_user_data(0, table.get_rows_count()-1, interfer) + interfer.row_id = table.get_rows_count()-1 init_opt_btns(table.get_rows_count()-1, table) table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, []) +func on_item_selected(item_num, node): + var optbtn_text = node[0].text + var indexis = g_table.get_key_indexes(node[0].name) + var row_i = indexis[1] + var col_i = indexis[0] + var cell = g_table.get_node2(0,row_i) + var interfer = g_table.get_node_user_data(0, row_i) + interfer.svk = item_num + + +func get_msg7_data(): + var data_to_json : Dictionary + data_to_json['ts'] = 7 + msg_counter += 1 + data_to_json['ss'] = msg_counter + data_to_json['sa'] = 1 + data_to_json['msfs'] = [] + data_to_json['msrr'] = [] + data_to_json['ret'] = [] + data_to_json['retss'] = 0 + for key in fs.g_fs_dict: + var block_fs: fs.Fs = fs.g_fs_dict[key] + var fs_param: Dictionary = {} + fs_param['nmfs'] = int(block_fs.nmfs) + fs_param['isg'] = int(block_fs.isg) + if block_fs.pow is float: + fs_param['pow'] = str(block_fs.pow) + if block_fs.freq is float: + fs_param['freq'] = str(block_fs.freq) + if block_fs.width is float: + fs_param['width'] = str(block_fs.width) + data_to_json['msfs'].append(fs_param) + var json = JSON.new().stringify(data_to_json) + var pac = json.to_utf8_buffer() + return pac + + func on_row_pressed(i_row: int, table): pass + diff --git a/main.gd b/main.gd index aca178b..059ccf6 100644 --- a/main.gd +++ b/main.gd @@ -13,7 +13,8 @@ func _ready(): sock.bind(Consts.MAIN_ADDR[1], Consts.MAIN_ADDR[0]) sock.set_dest_address(Consts.DST_ADDR[0], Consts.DST_ADDR[1]) Threats.init_treats(table_threads, btn_add_threads, btn_del_threads, btn_save_threads) - Pomehi.init_pomehi(table_pomehi) + Interfers.init_pomehi(table_pomehi) + fs.init_fs($tabs/pomehi, $tabs/pomehi/fs_rect) var timer = Timer.new() timer.connect('timeout', Callable(self, 'on_timeout').bind()) add_child(timer) #to process @@ -24,6 +25,40 @@ func on_timeout(): sock.put_packet(Threats.get_threats_data()) +func on_receive(data): + var json_conv: = JSON.new() + var utf8_data = data.get_string_from_utf8() + if Error.OK == json_conv.parse(utf8_data): + var json_data = json_conv.get_data() + if not (json_data is Dictionary): return + if not json_data.has('ts'): return + if not ((json_data['ts'] is int) or (json_data['ts'] is float)): return + if json_data['ts'] == 6: + if not json_data.has('ispp'): return + if not ((json_data['ispp'] is int) or (json_data['ispp'] is float)): return + if not json_data.has('ss'): return + if not ((json_data['ss'] is int) or (json_data['ss'] is float)): return + if not json_data.has('krp'): return + if not json_data.has('powp'): return + if not json_data.has('kni'): return + if not json_data.has('params'): return + if not json_data.has('get'): return + Interfers.set_interfer(json_data) + sock.put_packet(Interfers.get_msg7_data()) + elif json_data['ts'] == 8: + fs.on_receive_msg8(json_data) + + + # Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass +func _process(delta): + 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] + on_receive(data) + + + + diff --git a/main.tscn b/main.tscn index f6ac35a..d6b745b 100644 --- a/main.tscn +++ b/main.tscn @@ -1,14 +1,14 @@ [gd_scene load_steps=7 format=3 uid="uid://87gtvqd7bbje"] -[ext_resource type="Script" path="res://main.gd" id="1_cvm0h"] -[ext_resource type="Script" path="res://table/table.gd" id="2_su0xk"] -[ext_resource type="Texture2D" uid="uid://cex4jiu1pcj3x" path="res://edit-add-0.png" id="3_lumft"] -[ext_resource type="Texture2D" uid="uid://cx746np1wexnd" path="res://edit-add-1.png" id="4_gd6ts"] -[ext_resource type="Texture2D" uid="uid://blpkoi7s8qugp" path="res://document-save-0.png" id="5_hmvq3"] -[ext_resource type="Texture2D" uid="uid://wh7p3t4frxf" path="res://disconnect.png" id="6_2646i"] +[ext_resource type="Script" path="res://main.gd" id="1_do14e"] +[ext_resource type="Script" path="res://table/table.gd" id="2_vhqjb"] +[ext_resource type="Texture2D" uid="uid://cex4jiu1pcj3x" path="res://edit-add-0.png" id="3_aeg5a"] +[ext_resource type="Texture2D" uid="uid://cx746np1wexnd" path="res://edit-add-1.png" id="4_vmaqo"] +[ext_resource type="Texture2D" uid="uid://blpkoi7s8qugp" path="res://document-save-0.png" id="5_ysafc"] +[ext_resource type="Texture2D" uid="uid://wh7p3t4frxf" path="res://disconnect.png" id="6_8jprr"] [node name="main" type="Node2D"] -script = ExtResource("1_cvm0h") +script = ExtResource("1_do14e") [node name="tabs" type="TabContainer" parent="."] offset_right = 1594.0 @@ -28,7 +28,7 @@ offset_right = 1.0 offset_bottom = 10.0 grow_horizontal = 2 grow_vertical = 2 -script = ExtResource("2_su0xk") +script = ExtResource("2_vhqjb") node_type_file = "res://ячейка-1.tscn" [node name="btn_add" type="TextureButton" parent="tabs/threats"] @@ -37,8 +37,8 @@ offset_left = 1533.0 offset_top = -2.0 offset_right = 1581.0 offset_bottom = 46.0 -texture_normal = ExtResource("3_lumft") -texture_pressed = ExtResource("4_gd6ts") +texture_normal = ExtResource("3_aeg5a") +texture_pressed = ExtResource("4_vmaqo") [node name="btn_save" type="TextureButton" parent="tabs/threats"] layout_mode = 0 @@ -46,7 +46,7 @@ offset_left = 1442.0 offset_top = -1.0 offset_right = 1490.0 offset_bottom = 47.0 -texture_normal = ExtResource("5_hmvq3") +texture_normal = ExtResource("5_ysafc") [node name="btn_del" type="TextureButton" parent="tabs/threats"] layout_mode = 0 @@ -55,7 +55,7 @@ offset_top = 1.0 offset_right = 1547.0 offset_bottom = 67.0 scale = Vector2(0.62, 0.62) -texture_normal = ExtResource("6_2646i") +texture_normal = ExtResource("6_8jprr") [node name="pomehi" type="Panel" parent="tabs"] visible = false @@ -63,8 +63,18 @@ layout_mode = 2 [node name="table_p" type="GridContainer" parent="tabs/pomehi"] layout_mode = 0 -offset_top = 100.0 +offset_top = 30.0 offset_right = 1587.0 -offset_bottom = 861.0 -script = ExtResource("2_su0xk") +offset_bottom = 886.0 +script = ExtResource("2_vhqjb") node_type_file = "res://ячейка-1.tscn" + +[node name="fs_rect" type="ReferenceRect" parent="tabs/pomehi"] +layout_mode = 0 +offset_left = 1000.0 +offset_top = 91.0 +offset_right = 1012.0 +offset_bottom = 103.0 +border_color = Color(1, 1, 0, 1) +border_width = 2.4 +editor_only = false diff --git a/project.godot b/project.godot index 507241e..eee5af4 100644 --- a/project.godot +++ b/project.godot @@ -19,9 +19,10 @@ config/icon="res://icon.png" Consts="*res://consts.gd" Threats="*res://threats.gd" -Pomehi="*res://pomehi.gd" Tools="*res://tools.gd" Table="*res://table/table.gd" +Interfers="*res://interfers.gd" +fs="*res://fs.gd" [display] diff --git a/red.png b/red.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8aa72ed3d29fcda997cb1bbb0e6a2bdf3d125c GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ihk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)buCjv*Ss$u-)G4>d>|IA+Quq<9${Ffdg3 WF*@4Y{m=udVeoYIb6Mw<&;$VE4jy~} literal 0 HcmV?d00001 diff --git a/red.png.import b/red.png.import new file mode 100644 index 0000000..b5c4920 --- /dev/null +++ b/red.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6lkwjysawepu" +path="res://.godot/imported/red.png-13f6abb0e0c70056504666ed9c349d99.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://red.png" +dest_files=["res://.godot/imported/red.png-13f6abb0e0c70056504666ed9c349d99.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/кнопка-4.tscn b/кнопка-4.tscn index afb4789..40e132c 100644 --- a/кнопка-4.tscn +++ b/кнопка-4.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://ccxre8mwhndjk"] -[ext_resource type="Texture2D" uid="uid://dag8n0gknjwak" path="res://индикатор-1-0.png" id="1_ha0ig"] -[ext_resource type="Texture2D" uid="uid://b3ext3w4ftgg2" path="res://индикатор-1-1.png" id="2_gmc7h"] +[ext_resource type="Texture2D" uid="uid://dag8n0gknjwak" path="res://индикатор-1-0.png" id="1_stfie"] +[ext_resource type="Texture2D" uid="uid://b3ext3w4ftgg2" path="res://индикатор-1-1.png" id="2_xepyc"] [node name="indicator_1" type="TextureButton"] modulate = Color(1, 0.596078, 0.4, 1) @@ -9,5 +9,5 @@ offset_right = 35.0 offset_bottom = 29.0 toggle_mode = true button_mask = 0 -texture_normal = ExtResource("1_ha0ig") -texture_pressed = ExtResource("2_gmc7h") +texture_normal = ExtResource("1_stfie") +texture_pressed = ExtResource("2_xepyc")