Breakpoint

This commit is contained in:
CortexCore 2023-07-04 04:08:18 +08:00
parent 4af38a021c
commit d12e53739d
24 changed files with 1411 additions and 342 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://yamai0emyd0a"
path="res://.godot/imported/icon_ant-design_copy-twotone.png-22841f19d7ec4c9b9f8555f6458478fb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Artists/Art/Icons/icon_ant-design_copy-twotone.png"
dest_files=["res://.godot/imported/icon_ant-design_copy-twotone.png-22841f19d7ec4c9b9f8555f6458478fb.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gtho2m1sv43b"
path="res://.godot/imported/material-symbols_update.png-d1078a787b940682765e80589cd47680.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Artists/Art/Icons/material-symbols_update.png"
dest_files=["res://.godot/imported/material-symbols_update.png-d1078a787b940682765e80589cd47680.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://du6xc0u767362"
path="res://.godot/imported/shape_hexagon.png-65c4059e52b365301bf44f2da31b3195.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Artists/Art/Shapes/shape_hexagon.png"
dest_files=["res://.godot/imported/shape_hexagon.png-65c4059e52b365301bf44f2da31b3195.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

File diff suppressed because one or more lines are too long

View File

@ -16,6 +16,14 @@ public partial class UXContainer:Control,IUXContainer
[Export] public Label titleLabel;
[Export] public TextureRect icon;
[Export] public Button button;
[ExportCategory("Label")]
[Export] public Label updateTimeLabel;
[Export] public Label createTimeLabel;
[Export] public Label headerLabel;
[ExportCategory("Button")]
[Export] public Button mainButton;
[Export] public Button secButton;
[Export] public Button thirdButton;
public string Text
{

View File

@ -1,33 +1,77 @@
[gd_scene load_steps=4 format=3 uid="uid://x86mmss5del3"]
[gd_scene load_steps=7 format=3 uid="uid://x86mmss5del3"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_asno5"]
[ext_resource type="Texture2D" uid="uid://biotbf2rpqme8" path="res://Artists/Art/Icons/icon_style_round.png" id="2_sudlp"]
[ext_resource type="Texture2D" uid="uid://yamai0emyd0a" path="res://Artists/Art/Icons/icon_ant-design_copy-twotone.png" id="3_fv51f"]
[ext_resource type="Texture2D" uid="uid://dqhcsm0j6w85j" path="res://Artists/Art/Icons/icon_material-symbols_search.png" id="3_xsyvo"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ofhjj"]
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
bg_color = Color(0, 0, 0, 0.501961)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
shadow_size = 2
[node name="Container" type="PanelContainer" node_paths=PackedStringArray("label", "richTextLabel", "titleLabel", "icon")]
custom_minimum_size = Vector2(512, 100)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2ohxf"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
bg_color = Color(0.956863, 0.956863, 0.956863, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
[node name="Container" type="PanelContainer" node_paths=PackedStringArray("label", "richTextLabel", "titleLabel", "icon", "updateTimeLabel", "createTimeLabel", "headerLabel", "mainButton", "secButton")]
custom_minimum_size = Vector2(768, 0)
theme_override_styles/panel = SubResource("StyleBoxFlat_ofhjj")
script = ExtResource("1_asno5")
label = NodePath("")
richTextLabel = NodePath("MarginContainer/HBoxContainer/MarginContainer/VBoxContainer/RichTextLabel")
titleLabel = NodePath("MarginContainer/HBoxContainer/MarginContainer/VBoxContainer/Label")
icon = NodePath("MarginContainer/HBoxContainer/Control/MarginContainer2/Icon")
richTextLabel = NodePath("VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer/RichTextLabel")
titleLabel = NodePath("VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer/Label")
icon = NodePath("")
updateTimeLabel = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer2/CreateTime")
createTimeLabel = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer3/CreateTime")
headerLabel = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer4/Id")
mainButton = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer2/Button")
secButton = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer2/Button2")
[node name="MarginContainer" type="MarginContainer" parent="."]
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer"]
visible = false
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_2ohxf")
text = "Header"
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="Container" type="HBoxContainer" parent="VBoxContainer/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Container"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_right = 16
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer"]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
[node name="Control" type="Control" parent="MarginContainer/HBoxContainer"]
[node name="Control" type="Control" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer/Control"]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/Control"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -40,49 +84,91 @@ theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="DefaultIcon" type="TextureRect" parent="MarginContainer/HBoxContainer/Control/MarginContainer"]
[node name="DefaultIcon" type="TextureRect" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/Control/MarginContainer"]
layout_mode = 2
texture = ExtResource("2_sudlp")
expand_mode = 1
stretch_mode = 5
[node name="MarginContainer2" type="MarginContainer" parent="MarginContainer/HBoxContainer/Control"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = -28.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="Icon" type="TextureRect" parent="MarginContainer/HBoxContainer/Control/MarginContainer2"]
layout_mode = 2
expand_mode = 2
stretch_mode = 4
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer"]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_top = 8
theme_override_constants/margin_bottom = 8
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer/MarginContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Name"
[node name="HSeparator" type="HSeparator" parent="MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
[node name="RichTextLabel" type="RichTextLabel" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Value
"
fit_content = true
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer/Container"]
layout_mode = 2
alignment = 1
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer4"]
layout_mode = 2
text = "标识码:"
[node name="Id" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer4"]
custom_minimum_size = Vector2(0, 28)
layout_mode = 2
text = "88.123.99/02020220225008"
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer2"]
layout_mode = 2
text = "最后更新时间:"
[node name="CreateTime" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer2"]
custom_minimum_size = Vector2(0, 28)
layout_mode = 2
text = "2023年7月4日02:46:16"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
visible = false
layout_mode = 2
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer3"]
layout_mode = 2
text = "创建标识时间:"
[node name="CreateTime" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer3"]
custom_minimum_size = Vector2(0, 28)
layout_mode = 2
text = "2023年7月4日02:46:16"
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/MarginContainer/Container"]
layout_mode = 2
[node name="Button" type="Button" parent="VBoxContainer/MarginContainer/Container/VBoxContainer2"]
layout_mode = 2
text = "复制标识到剪贴板"
icon = ExtResource("3_fv51f")
expand_icon = true
[node name="Button2" type="Button" parent="VBoxContainer/MarginContainer/Container/VBoxContainer2"]
layout_mode = 2
text = "搜索相关标识"
icon = ExtResource("3_xsyvo")
expand_icon = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfxo7yqmaygm0"
path="res://.godot/imported/标识解析-开始动画.png-50fda1f7f848d8f23586ee77f0e1c711.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/工业数据采集与分析应用分享/Arts/Animations/标识解析-开始动画.png"
dest_files=["res://.godot/imported/标识解析-开始动画.png-50fda1f7f848d8f23586ee77f0e1c711.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

View File

@ -15,7 +15,14 @@ custom_minimum_size = Vector2(384, 512)
[node name="BaseComponent" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="Name" type="Button" parent="BaseComponent"]
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_tg46m")
text = "准备环境"
[node name="Label" type="Label" parent="BaseComponent"]
visible = false
custom_minimum_size = Vector2(0, 48)
layout_mode = 2
theme_type_variation = &"HeaderMedium"
@ -35,6 +42,7 @@ theme_type_variation = &"HeaderMedium"
text = "准备一些工具"
[node name="ColorRect" type="ColorRect" parent="BaseComponent"]
visible = false
custom_minimum_size = Vector2(0, 256)
layout_mode = 2
color = Color(0.0196078, 0.0196078, 0.0196078, 1)
@ -52,6 +60,17 @@ grow_vertical = 2
texture = ExtResource("1_hpoox")
metadata/_edit_lock_ = true
[node name="Label" type="Label" parent="BaseComponent/ColorRect"]
layout_mode = 0
offset_left = -2.0
offset_top = 169.0
offset_right = 383.0
offset_bottom = 217.0
text = "这是图标占位符"
horizontal_alignment = 1
vertical_alignment = 1
metadata/_edit_lock_ = true
[node name="TextureRect" type="TextureRect" parent="BaseComponent/ColorRect"]
layout_mode = 1
anchors_preset = 15

View File

@ -0,0 +1,209 @@
[gd_scene load_steps=6 format=3 uid="uid://n3v64dkgpccy"]
[sub_resource type="Animation" id="Animation_d44nr"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_ct3is"]
resource_name = "Start"
length = 10.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 100.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("HBoxContainer/2:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("HBoxContainer/3:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("HBoxContainer/4:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("HBoxContainer/5:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 8),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xn1ws"]
_data = {
"RESET": SubResource("Animation_d44nr"),
"Start": SubResource("Animation_ct3is")
}
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gdc24"]
bg_color = Color(0.317647, 0.639216, 0.827451, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wrsde"]
bg_color = Color(0.282353, 0.698039, 0.4, 1)
[node name="手动注册与更新标识" type="ReferenceRect"]
custom_minimum_size = Vector2(1024, 384)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = -896.0
offset_bottom = -696.0
grow_horizontal = 2
grow_vertical = 2
metadata/_edit_lock_ = true
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_xn1ws")
}
[node name="ProgressBar" type="ProgressBar" parent="."]
layout_mode = 0
offset_top = 192.0
offset_right = 1024.0
offset_bottom = 224.0
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 0
offset_top = 224.0
offset_right = 1024.0
offset_bottom = 384.0
[node name="1" type="PanelContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/1"]
layout_mode = 2
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/1/VBoxContainer"]
layout_mode = 2
text = "正在准备注册标识"
horizontal_alignment = 1
[node name="2" type="PanelContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/2"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/2/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_gdc24")
text = "标识码"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label2" type="Label" parent="HBoxContainer/2/VBoxContainer"]
layout_mode = 2
text = "88.123.99/02020220225008"
[node name="Label3" type="Label" parent="HBoxContainer/2/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_gdc24")
text = "标识值"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label4" type="Label" parent="HBoxContainer/2/VBoxContainer"]
layout_mode = 2
text = "t.h.sensor"
[node name="3" type="PanelContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/3"]
layout_mode = 2
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/3/VBoxContainer"]
layout_mode = 2
text = "已提交标识"
horizontal_alignment = 1
[node name="4" type="PanelContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/4"]
layout_mode = 2
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/4/VBoxContainer"]
layout_mode = 2
text = "正在等待返回标识解析结果"
horizontal_alignment = 1
[node name="5" type="PanelContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/5"]
layout_mode = 2
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/5/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"HeaderLarge"
theme_override_styles/normal = SubResource("StyleBoxFlat_wrsde")
text = "已注册标识"
horizontal_alignment = 1
vertical_alignment = 1
[connection signal="hidden" from="." to="AnimationPlayer" method="stop" binds= [false]]

View File

@ -0,0 +1,198 @@
[gd_scene load_steps=5 format=3 uid="uid://dv3ugwbqu3t77"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cpr2j"]
bg_color = Color(0.317647, 0.639216, 0.827451, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gtj8f"]
bg_color = Color(0.282353, 0.698039, 0.4, 1)
[sub_resource type="Animation" id="Animation_tewal"]
resource_name = "Start"
length = 6.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 100.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("VBoxContainer/HBoxContainer/提交温度标识:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("VBoxContainer/HBoxContainer/提交湿度标识:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("VBoxContainer/HBoxContainer/已完成提交:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ul3u4"]
_data = {
"Start": SubResource("Animation_tewal")
}
[node name="更新温湿度传感器的标识" type="Control"]
custom_minimum_size = Vector2(512, 384)
layout_mode = 3
anchors_preset = 0
offset_right = 1024.0
offset_bottom = 384.0
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
offset_right = 1024.0
offset_bottom = 384.0
[node name="ProgressBar" type="ProgressBar" parent="VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="收集数据" type="Label" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_type_variation = &"HeaderLarge"
text = "正在收集数据与标识"
horizontal_alignment = 1
vertical_alignment = 1
[node name="提交温度标识" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
visible = false
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
text = "正在提交温度标识"
[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_cpr2j")
text = "标识码"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
text = "88.123.99/02020220225008"
[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_cpr2j")
text = "标识Id"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
text = "t.h.sensor.temperature"
[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_cpr2j")
text = "标识值"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label7" type="Label" parent="VBoxContainer/HBoxContainer/提交温度标识"]
layout_mode = 2
text = "42℃"
[node name="提交湿度标识" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
visible = false
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
text = "正在提交湿度标识"
[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_cpr2j")
text = "标识码"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
text = "88.123.99/02020220225008"
[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_cpr2j")
text = "标识Id"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
text = "t.h.sensor.humidity"
[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_styles/normal = SubResource("StyleBoxFlat_cpr2j")
text = "标识值"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label7" type="Label" parent="VBoxContainer/HBoxContainer/提交湿度标识"]
layout_mode = 2
text = "50%"
[node name="已完成提交" type="Label" parent="VBoxContainer/HBoxContainer"]
visible = false
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_type_variation = &"HeaderLarge"
theme_override_styles/normal = SubResource("StyleBoxFlat_gtj8f")
text = "标识已解析"
horizontal_alignment = 1
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_ul3u4")
}

View File

@ -0,0 +1,94 @@
[gd_scene load_steps=4 format=3 uid="uid://fybiswo7gltf"]
[ext_resource type="Texture2D" uid="uid://du6xc0u767362" path="res://Artists/Art/Shapes/shape_hexagon.png" id="1_2308n"]
[sub_resource type="Animation" id="Animation_ohv0y"]
resource_name = "Spawn"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Name:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(1, 1.5),
"transitions": PackedFloat32Array(2, 2),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Icon:custom_minimum_size")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.5, 1),
"transitions": PackedFloat32Array(2, 2),
"update": 0,
"values": [Vector2(64, 0), Vector2(64, 64)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = false
tracks/2/path = NodePath("Icon/IconText:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Icon/IconText:theme_override_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(0.12549, 0.12549, 0.12549, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_8iohj"]
_data = {
"Spawn": SubResource("Animation_ohv0y")
}
[node name="解析节点" type="HFlowContainer"]
offset_right = 40.0
offset_bottom = 40.0
alignment = 1
[node name="Icon" type="TextureRect" parent="."]
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
texture = ExtResource("1_2308n")
expand_mode = 1
[node name="IconText" type="Label" parent="Icon"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(1, 1, 1, 0)
theme_override_font_sizes/font_size = 32
text = "R"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Name" type="Label" parent="."]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
text = "国家顶级节点"
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_8iohj")
}

View File

@ -79,6 +79,15 @@ theme_override_constants/side_margin = 128
[node name="标识注册" parent="TabContainer" instance=ExtResource("6_nuph1")]
layout_mode = 2
[node name="ScrollContainer" parent="TabContainer/标识注册/VBoxContainer" index="2"]
horizontal_scroll_mode = 1
[node name="注册标识" parent="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement2" index="15"]
visible = false
[node name="Label" parent="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="1"]
text = "注册与更新标识"
[node name="标识解析" parent="TabContainer" instance=ExtResource("7_fapjq")]
visible = false
layout_mode = 2
@ -111,7 +120,7 @@ script = ExtResource("16_qcre0")
[node name="SearchEngine" type="Node" parent="." node_paths=PackedStringArray("nodeContainer", "searchInput", "searchButton", "quickSearchButton", "searchProgressBar", "searchLogLabel")]
script = ExtResource("12_m0fjq")
nodeContainer = NodePath("../TabContainer/标识解析/MarginContainer/VBoxContainer/SearchResult-Container")
nodeContainer = NodePath("../TabContainer/标识解析/MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container")
searchEntry = ExtResource("3_buh0o")
searchInput = NodePath("../TabContainer/标识解析/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer/SearchInput")
searchButton = NodePath("../TabContainer/标识解析/MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer/SearchButton")
@ -119,7 +128,7 @@ quickSearchButton = NodePath("../TabContainer/标识解析/MarginContainer/VBoxC
searchProgressBar = NodePath("../TabContainer/标识解析/MarginContainer/VBoxContainer/SearchProgressBar")
searchLogLabel = NodePath("../TabContainer/标识解析/SearchLogLabel")
[node name="SearchRegister" type="Node" parent="." node_paths=PackedStringArray("keyLine", "valueLine", "nameLine", "idLine", "registryRecordLine", "registryButton")]
[node name="SearchRegister" type="Node" parent="." node_paths=PackedStringArray("keyLine", "valueLine", "nameLine", "idLine", "registryRecordLine", "registryButton", "registryResultLabel")]
script = ExtResource("13_p3ia1")
keyLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer/keyLine")
valueLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2/valueLine")
@ -127,16 +136,27 @@ nameLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/
idLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4/idLine")
registryRecordLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5/registryRecordLine")
registryButton = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/register-button")
registryResultLabel = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/RegistryResultLabel")
[connection signal="visibility_changed" from="TabContainer/标识注册/Animations/Start" to="TabContainer/标识注册/Animations/Start/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="visibility_changed" from="TabContainer/标识注册/Animations/Start" to="TabContainer/标识注册/Animations/Start/AnimationPlayer" method="stop" binds= [false]]
[connection signal="pressed" from="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/register-button" to="TabContainer/标识注册/Animations/手动注册与更新标识/AnimationPlayer" method="play" flags=18 binds= ["Start"]]
[connection signal="pressed" from="Return-Button" to="Return-Button" method="Return"]
[editable path="教程Header"]
[editable path="TabContainer/标识注册"]
[editable path="TabContainer/标识注册/Animations/Start/Root/Node-0"]
[editable path="TabContainer/标识注册/Animations/Start/Node/Node1-1"]
[editable path="TabContainer/标识注册/Animations/Start/Node/Node-1-2"]
[editable path="TabContainer/标识注册/Animations/Start/SubNode/Node-2-1"]
[editable path="TabContainer/标识注册/Animations/Start/SubNode/Node-2-2"]
[editable path="TabContainer/标识注册/Animations/Start/SubNode/Node-2-3"]
[editable path="TabContainer/标识注册/Animations/手动注册与更新标识"]
[editable path="TabContainer/标识注册/Animations/更新温湿度传感器的标识"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement6"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
[editable path="TabContainer/标识解析"]

View File

@ -1,19 +1,88 @@
[gd_scene load_steps=7 format=3 uid="uid://bx4v3ofh4on5e"]
[gd_scene load_steps=16 format=3 uid="uid://bx4v3ofh4on5e"]
[ext_resource type="PackedScene" uid="uid://dmk2vf7jamysi" path="res://Mods/工业数据采集与分析应用分享/Templates/StepElement.tscn" id="1_6n8rk"]
[ext_resource type="Texture2D" uid="uid://dytwon7lxa5gw" path="res://Artists/Art/Icons/Icon_Registry_Editor.png" id="2_1ml36"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="2_ugkdr"]
[ext_resource type="PackedScene" uid="uid://fybiswo7gltf" path="res://Mods/工业数据采集与分析应用分享/Templates/解析节点.tscn" id="2_y06ys"]
[ext_resource type="PackedScene" uid="uid://n3v64dkgpccy" path="res://Mods/工业数据采集与分析应用分享/Templates/手动注册与更新标识.tscn" id="3_cnqit"]
[ext_resource type="Theme" uid="uid://dokwscirps6nt" path="res://Artists/Themes/Factory_Theme.tres" id="4_gvxxh"]
[ext_resource type="VideoStream" path="res://Mods/工业数据采集与分析应用分享/Arts/Videos/生产过程模拟.ogv" id="4_o4kja"]
[ext_resource type="Script" path="res://Temp/ReadyDebug.cs" id="4_v65a4"]
[ext_resource type="Texture2D" uid="uid://gtho2m1sv43b" path="res://Artists/Art/Icons/material-symbols_update.png" id="5_qj746"]
[ext_resource type="PackedScene" uid="uid://dv3ugwbqu3t77" path="res://Mods/工业数据采集与分析应用分享/Templates/更新温湿度传感器的标识.tscn" id="5_r3ufd"]
[ext_resource type="Texture2D" uid="uid://bgwx8t6ugami" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/1-6分钟快速理解Modbus通信协议-480P 清晰-AVC.Cover.jpg" id="9_bnn3v"]
[ext_resource type="Texture2D" uid="uid://cjk4xep1wgmul" path="res://Artists/Art/Icons/Icon_ic_baseline-video-file.png" id="10_o41te"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6ug6k"]
bg_color = Color(0.0901961, 0.0901961, 0.0901961, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tkumr"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1emc7"]
bg_color = Color(0.2167, 0.560482, 0.759032, 1)
[sub_resource type="Animation" id="Animation_yhxk4"]
resource_name = "Start"
length = 6.0
tracks/0/type = "animation"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Root/Node-0/AnimationPlayer")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": PackedStringArray("Spawn"),
"times": PackedFloat32Array(0)
}
tracks/1/type = "animation"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Node/Node1-1/AnimationPlayer")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(1.9, 2)
}
tracks/2/type = "animation"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Node/Node-1-2/AnimationPlayer")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(1.9, 2)
}
tracks/3/type = "animation"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SubNode/Node-2-1/AnimationPlayer")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(3.9, 4)
}
tracks/4/type = "animation"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("SubNode/Node-2-2/AnimationPlayer")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(3.9, 4)
}
tracks/5/type = "animation"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("SubNode/Node-2-3/AnimationPlayer")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(3.9, 4)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_efxtn"]
_data = {
"Start": SubResource("Animation_yhxk4")
}
[node name="标识注册" type="ColorRect"]
anchors_preset = 15
@ -24,11 +93,137 @@ grow_vertical = 2
theme = ExtResource("4_gvxxh")
color = Color(0.121569, 0.129412, 0.145098, 1)
[node name="Animations" type="TabContainer" parent="."]
custom_minimum_size = Vector2(1024, 384)
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -473.0
offset_top = 64.0
offset_right = 551.0
offset_bottom = 448.0
grow_horizontal = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_tkumr")
tabs_visible = false
[node name="Start" type="VBoxContainer" parent="Animations"]
layout_mode = 2
alignment = 1
[node name="Root" type="HBoxContainer" parent="Animations/Start"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node-0" parent="Animations/Start/Root" instance=ExtResource("2_y06ys")]
layout_mode = 2
size_flags_vertical = 3
[node name="Node" type="HBoxContainer" parent="Animations/Start"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node1-1" parent="Animations/Start/Node" instance=ExtResource("2_y06ys")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/Node/Node1-1/Icon" index="0"]
text = "S"
[node name="Name" parent="Animations/Start/Node/Node1-1" index="1"]
text = "二级节点"
[node name="Node-1-2" parent="Animations/Start/Node" instance=ExtResource("2_y06ys")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/Node/Node-1-2/Icon" index="0"]
text = "S"
[node name="Name" parent="Animations/Start/Node/Node-1-2" index="1"]
text = "二级节点"
[node name="SubNode" type="HBoxContainer" parent="Animations/Start"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node-2-1" parent="Animations/Start/SubNode" instance=ExtResource("2_y06ys")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/SubNode/Node-2-1/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/SubNode/Node-2-1" index="1"]
text = "企业节点"
[node name="Node-2-2" parent="Animations/Start/SubNode" instance=ExtResource("2_y06ys")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/SubNode/Node-2-2/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/SubNode/Node-2-2" index="1"]
text = "企业节点"
[node name="Node-2-3" parent="Animations/Start/SubNode" instance=ExtResource("2_y06ys")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/SubNode/Node-2-3/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/SubNode/Node-2-3" index="1"]
text = "企业节点"
[node name="AnimationPlayer" type="AnimationPlayer" parent="Animations/Start"]
method_call_mode = 1
libraries = {
"": SubResource("AnimationLibrary_efxtn")
}
[node name="手动注册与更新标识" parent="Animations" instance=ExtResource("3_cnqit")]
visible = false
layout_mode = 2
[node name="准备环境" type="Control" parent="Animations"]
visible = false
layout_mode = 2
[node name="认识与采集" type="Control" parent="Animations"]
visible = false
layout_mode = 2
[node name="生产模拟" type="Control" parent="Animations"]
visible = false
layout_mode = 2
[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="Animations/生产模拟"]
custom_minimum_size = Vector2(384, 256)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -256.0
offset_top = -192.0
offset_right = 256.0
offset_bottom = 192.0
grow_horizontal = 2
grow_vertical = 2
stream = ExtResource("4_o4kja")
autoplay = true
expand = true
[node name="更新温湿度传感器的标识" parent="Animations" instance=ExtResource("5_r3ufd")]
visible = false
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
offset_left = 64.0
offset_top = 64.0
offset_right = 1856.0
offset_top = 461.0
offset_right = 1864.0
offset_bottom = 1018.0
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer"]
@ -36,17 +231,6 @@ visible = false
layout_mode = 2
theme_override_constants/separation = 32
[node name="Control" type="Control" parent="VBoxContainer"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/Control"]
layout_mode = 2
offset_top = 4.0
offset_right = 1792.0
offset_bottom = 31.0
text = "当前步骤"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
@ -54,8 +238,8 @@ theme_override_constants/separation = 32
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
follow_focus = true
vertical_scroll_mode = 0
horizontal_scroll_mode = 0
script = ExtResource("4_v65a4")
[node name="HFlowContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer"]
layout_mode = 2
@ -64,16 +248,18 @@ theme_override_constants/separation = 64
[node name="StepElement2" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="0"]
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="0"]
text = "注册标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="2"]
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="1"]
text = "注册标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="3"]
text = "为温湿度传感器注册标识码"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="4"]
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="5"]
bbcode_enabled = true
text = "标识注册服务器向解析服务器发送创建标识请求来创建新的标识
via: [url=\"https://www.aii-alliance.org/uploads/1/20220519/981fd98199f940f8d2b5dd2fb43ba97d.pdf\"]工业互联网产业联盟标准[/url]"
text = "通过二级节点向顶级节点发送数据"
[node name="32493" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent/RichTextLabel" index="1"]
visible = false
@ -209,13 +395,16 @@ expand_icon = true
[node name="StepElement9" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="0"]
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="0"]
text = "手动注册与更新标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="2"]
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="1"]
text = "手动注册与更新标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="3"]
text = "你需要手动注册一些标识数据"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="4"]
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="5"]
text = "在这里手动添加数据"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
@ -297,16 +486,26 @@ caret_blink_interval = 0.5
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
text = "在标识码和Id相同时提交更新,不相同时注册标识"
[node name="register-button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
text = "手动注册"
text = "手动注册和更新"
icon = ExtResource("2_1ml36")
expand_icon = true
[node name="RegistryResultLabel" type="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
bbcode_enabled = true
text = "这里是注册结果"
fit_content = true
[node name="StepElement" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent" index="4"]
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent" index="5"]
text = "这里是需要安装和配置的软件"
[node name="32492" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent/RichTextLabel" index="1"]
@ -321,28 +520,29 @@ step = 1.0
page = 24.0
[node name="CheckButton" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "ModbusPoll.exe"
flat = true
[node name="CheckButton2" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "NetAssist.exe"
flat = true
[node name="CheckButton3" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "UartAssist.exe"
flat = true
[node name="CheckButton4" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "chfs.exe"
flat = true
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
@ -350,19 +550,46 @@ text = "准备好了么?"
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
text = "打开需要使用的PPT"
text = "一键配置并打开环境"
icon = ExtResource("2_ugkdr")
expand_icon = true
[node name="Label2" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "别忘了,我们还有Modbus学习的视频"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
[node name="TextureButton" type="TextureRect" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
texture = ExtResource("9_bnn3v")
expand_mode = 3
stretch_mode = 5
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "打开视频"
icon = ExtResource("10_o41te")
[node name="StepElement5" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="0"]
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="0"]
text = "认识与采集"
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="1"]
text = "开始采集"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="2"]
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="3"]
text = "配置好环境后开始采集"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="5"]
text = "跟随以下步骤,开始采集数据"
[node name="32496" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
@ -374,17 +601,53 @@ max_value = 24.0
step = 1.0
page = 24.0
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "查看 温湿度模块 设备使用手册;
查看 485转以太网网口串口服务器 设备使用手册;
分析需要连接的导线,并完成导线连接;
使用Modbus Poll读取数据
使用SCADA等工具采集数据
"
[node name="StepElement4" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="0"]
text = "开始生产"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="3"]
text = "我们来生产笔记本吧"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="5"]
text = "在生产过程中,我们会创建和更新一些标识"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
layout_mode = 2
text = "订单信息
温度数据
湿度数据
AGV的电量
AGV的电流
装配机械臂的标识
拧紧机械臂的标识
夹爪的标识"
[node name="StepElement3" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
custom_minimum_size = Vector2(512, 512)
layout_mode = 2
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="0"]
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="0"]
text = "获取数据"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="2"]
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="1"]
text = "获取数据"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="3"]
text = "已经采集到数据了"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="4"]
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="5"]
text = "当前传感器数据"
[node name="32494" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent/RichTextLabel" index="1"]
@ -401,10 +664,15 @@ page = 24.0
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
[node name="TextEdit" type="TextEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer"]
layout_mode = 2
placeholder_text = "http://192.168.254.254:81/WebApi/"
scroll_fit_content_height = true
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer"]
[node name="VBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 8
@ -412,114 +680,41 @@ theme_override_constants/separation = 8
custom_minimum_size = Vector2(256, 128)
layout_mode = 2
theme_type_variation = &"ColorPanel"
text = "温度36"
[node name="Button2" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(256, 128)
layout_mode = 2
theme_type_variation = &"ColorPanel"
text = "湿度37"
[node name="Button3" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(256, 128)
layout_mode = 2
theme_type_variation = &"ColorPanel"
[node name="StepElement4" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="0"]
text = "更新标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="2"]
text = "将传感器的数据更新到解析节点"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="4"]
text = "每隔一段时间,就会更新数据到标识"
[node name="32495" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -8.0
max_value = 24.0
step = 1.0
page = 24.0
[node name="Panel" type="PanelContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
clip_children = 2
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_6ug6k")
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel"]
layout_mode = 2
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel/VBoxContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_1emc7")
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel/VBoxContainer/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel/VBoxContainer/PanelContainer/MarginContainer"]
layout_mode = 2
text = "更新数据:温度"
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel/VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="Label" type="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/Panel/VBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "温度:256℃
湿度:50%"
fit_content = true
[node name="StepElement6" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement6/BaseComponent" index="0"]
text = "生产模拟"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement6/BaseComponent" index="2"]
text = "数据"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement6/BaseComponent" index="4"]
text = "更改"
[node name="32497" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement6/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -8.0
max_value = 24.0
step = 1.0
page = 24.0
[node name="StepElement7" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
layout_mode = 2
[node name="StepElement8" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")]
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
text = "提交标识更新数据"
icon = ExtResource("5_qj746")
expand_icon = true
[connection signal="ready" from="VBoxContainer/ScrollContainer" to="VBoxContainer/ScrollContainer" method="set_horizontal_scroll_mode" binds= [1]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [0]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [1]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/register-button" to="Animations/手动注册与更新标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [2]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [3]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [4]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [5]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/Button" to="Animations/更新温湿度传感器的标识/AnimationPlayer" method="play" binds= ["Start"]]
[editable path="Animations/Start/Root/Node-0"]
[editable path="Animations/Start/Node/Node1-1"]
[editable path="Animations/Start/Node/Node-1-2"]
[editable path="Animations/Start/SubNode/Node-2-1"]
[editable path="Animations/Start/SubNode/Node-2-2"]
[editable path="Animations/Start/SubNode/Node-2-3"]
[editable path="Animations/手动注册与更新标识"]
[editable path="Animations/更新温湿度传感器的标识"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement6"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]

View File

@ -12,9 +12,9 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
metadata/_edit_lock_ = true
[node name="SearchLogLabel" type="RichTextLabel" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -41,12 +41,11 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_top = 64
metadata/_edit_lock_ = true
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 32
metadata/_edit_lock_ = true
alignment = 1
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
@ -61,7 +60,7 @@ layout_mode = 2
size_flags_horizontal = 4
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(512, 0)
custom_minimum_size = Vector2(768, 0)
layout_mode = 2
size_flags_horizontal = 4
@ -95,32 +94,35 @@ text = "未填写则查找所有条目"
horizontal_alignment = 1
vertical_alignment = 1
[node name="SearchResult-Container" type="GridContainer" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(512, 0)
layout_mode = 2
size_flags_horizontal = 4
theme_override_constants/h_separation = 16
theme_override_constants/v_separation = 16
columns = 3
[node name="ColorRect" parent="MarginContainer/VBoxContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect2" parent="MarginContainer/VBoxContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect3" parent="MarginContainer/VBoxContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect4" parent="MarginContainer/VBoxContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect5" parent="MarginContainer/VBoxContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="SearchProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(512, 0)
layout_mode = 2
size_flags_horizontal = 4
value = 50.0
rounded = true
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(1568, 0)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 3
[node name="SearchResult-Container" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 16
[node name="ColorRect" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect2" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect3" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect4" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2
[node name="ColorRect5" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("3_tao46")]
layout_mode = 2

View File

@ -1,5 +1,4 @@
using Godot;
using System;
using BITKit;
namespace BITFactory;
@ -37,13 +36,20 @@ public partial class CourseElement : Node
{
return;
}
if (CurrentScene?.Name == CourseScene?.ResourceName)
{
BIT4Log.Log<CourseElement>($"已返回当前课程");
UXService.Open(CurrentScene as Control);
return;
}
if (CurrentScene is not null)
{
BIT4Log.Log<CourseElement>($"正在释放课程:\t{CurrentScene.Name}");
CurrentScene.QueueFree();
BIT4Log.Log<CourseElement>($"已释放当前课程:\t{CurrentScene.Name}");
}
CurrentScene = CourseScene.Instantiate();
CurrentScene = CourseScene!.Instantiate();
GetTree().Root.AddChild(CurrentScene);
UXService.Open(CurrentScene as Control);
BIT4Log.Log<CourseElement>($"已加载新的课程:\t{CurrentScene.Name}");

View File

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Text;
using BITKit;
@ -36,6 +37,7 @@ public class SearchResult:ISearchEntry
public interface ISearchEngine
{
SearchResult[] GetSearchResults(string key);
void SaveChanges();
void Add(SearchResult result);
void Remove(string key, string id);
}
@ -91,11 +93,22 @@ public partial class SearchEngine:Node,ISearchEngine
QueueContainerFree();
searchProgressBar.Show();
var list = await Context.context.ToListAsync();
Spawn(string.IsNullOrEmpty(key) ? list : list.Where(x => x.Key.Contains(key)));
var result = (string.IsNullOrEmpty(key) ? list : list.Where(x => x.Key.Contains(key))).ToArray();
//Fallback
if (result.Any() is false)
{
result = list.Where(x => x.Display.Contains(key!)).ToArray();
}
if (result.Any() is false)
{
result = list.Where(x => x.Id.Contains(key!)).ToArray();
}
Spawn(result);
_logBuilder.AppendLine($"已获取到集合");
_logBuilder.AppendLine($"{string.Join("\n",list)}");
searchProgressBar.Hide();
//searchLogLabel.Text = _logBuilder.ToString();
}
private void QuickSearch()
@ -109,12 +122,6 @@ public partial class SearchEngine:Node,ISearchEngine
var index = i;
var element = searchResults[i];
quickSearchButton.GetPopup().AddItem(element.Key);
// quickSearchButton.GetPopup().IdPressed = id =>
// {
// var entry = searchResults[index];
// searchInput.Text = entry.Key;
// Search(entry.Key);
// };
}
}
private void OnPressedIndex(long index)
@ -133,6 +140,9 @@ public partial class SearchEngine:Node,ISearchEngine
instance.titleLabel.Text = entry.Display ?? entry.Id ?? entry.Key;
instance.Text = entry.Value;
instance.updateTimeLabel.Text = entry.UpdateDate.ToString(CultureInfo.InvariantCulture);
instance.createTimeLabel.Text = entry.CreateDate.ToString(CultureInfo.InvariantCulture);
instance.headerLabel.Text = entry.Key;
}
}
@ -145,6 +155,7 @@ public partial class SearchEngine:Node,ISearchEngine
}
public SearchResult[] GetSearchResults(string key)=>Context.context.Where(x=>x.Key.Contains(key)).ToArray();
public void SaveChanges() => Context.SaveChanges();
public void Add(SearchResult result)
{

View File

@ -1,4 +1,5 @@
using System;
using System.Linq;
using BITKit;
using Godot;
using Microsoft.Extensions.DependencyInjection;
@ -13,6 +14,7 @@ public partial class SearchRegister:Node
[Export] private LineEdit idLine;
[Export] private LineEdit registryRecordLine;
[Export] private Button registryButton;
[Export] private RichTextLabel registryResultLabel;
public override void _Ready()
{
registryButton.Pressed += Create;
@ -20,16 +22,51 @@ public partial class SearchRegister:Node
private void Create()
{
var result = new SearchResult()
var searchEngine = DI.Get<ISearchEngine>();
registryResultLabel.Text = $"正在注册标识";
var current = searchEngine
.GetSearchResults(keyLine.Text)
.Where(x=>x.Key == keyLine.Text && x.Id == idLine.Text)
;
SearchResult result=default;
var searchResults = current as SearchResult[] ?? current.ToArray();
if (searchResults.Any())
{
Key = keyLine.Text,
Value = valueLine.Text,
Display = nameLine.Text,
Id = idLine.Text,
RegistryRecord = registryRecordLine.Text,
CreateDate = DateTime.Now,
UpdateDate = DateTime.Now,
};
DI.Get<ISearchEngine>().Add(result);
result = searchResults.First();
result.Value = valueLine.Text;
result.Display = nameLine.Text;
result.RegistryRecord = registryRecordLine.Text;
result.UpdateDate = DateTime.Now;
searchEngine.SaveChanges();
registryResultLabel.Text = $"标识:{result.Key}已完成更新";
}
else
{
result = new SearchResult()
{
Key = keyLine.Text,
Value = valueLine.Text,
Display = nameLine.Text,
Id = idLine.Text,
RegistryRecord = registryRecordLine.Text,
CreateDate = DateTime.Now,
UpdateDate = DateTime.Now,
};
try
{
registryResultLabel.Text = $"标识:{result.Key}已完成注册";
}
catch (Exception e)
{
registryResultLabel.Text = $"标识:{result.Key}注册失败,原因:\n{e.Message}";
throw;
}
}
}
}

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=3 uid="uid://bu5w3n4me3xj2"]
[gd_scene load_steps=13 format=3 uid="uid://bu5w3n4me3xj2"]
[ext_resource type="Texture2D" uid="uid://6dpw3hl2gu10" path="res://Mods/工业数据采集与分析应用分享/Arts/Illustrations/Illustration_ABB_Rotbotic_Arm_Rendering_DWADWFF.jpg" id="1_uwo3j"]
[ext_resource type="PackedScene" uid="uid://dwdlewpjrt8pf" path="res://Mods/教育平台/Templates/选择课程.tscn" id="2_rvvu8"]
@ -12,6 +12,13 @@
[ext_resource type="Texture2D" uid="uid://2ka8taavxcn0" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/实战-激光雷达数据采集.jpg" id="7_c28nt"]
[ext_resource type="PackedScene" uid="uid://cgocposhaflgj" path="res://Mods/工业数据采集与分析应用分享/激光雷达数据采集.tscn" id="8_uj17p"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0jsjw"]
bg_color = Color(0, 0, 0, 0.501961)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[node name="教育平台主菜单" type="Node"]
[node name="TextureRect" type="TextureRect" parent="."]
@ -120,12 +127,12 @@ layout_mode = 2
[node name="Label" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/HBoxContainer/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "试用版"
text = "CAICT定制版"
[node name="Label2" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/HBoxContainer/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "仅包括2个课程"
text = "仅包括1个课程"
[node name="HSeparator" type="HSeparator" parent="UXPanel/ReferenceRect/HBoxContainer/HBoxContainer"]
layout_mode = 2
@ -148,12 +155,15 @@ theme_override_constants/separation = 32
[node name="RichTextLabel" type="RichTextLabel" parent="UXPanel/ReferenceRect/HBoxContainer/HBoxContainer"]
layout_mode = 2
bbcode_enabled = true
text = "最后更新时间:
2023年6月28日13:46:24
中安颖立智能科技有限公司
Powered By
[url]中安颖立智能科技有限公司[/url]
地址:"
地址:
重庆市渝北区宝圣湖街道食品城大道18号重庆广告产业园15幢1单元2-3"
fit_content = true
[node name="ScrollContainer" type="ScrollContainer" parent="UXPanel/ReferenceRect/HBoxContainer"]
@ -165,12 +175,8 @@ layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 16
[node name="Label" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "数据采集实训"
[node name="NinePatchRect" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer" instance=ExtResource("2_rvvu8")]
visible = false
layout_mode = 2
CourseScene = ExtResource("5_2s7gj")
@ -182,6 +188,7 @@ texture = ExtResource("5_5ul10")
expand_mode = 2
[node name="NinePatchRect2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer" instance=ExtResource("2_rvvu8")]
visible = false
layout_mode = 2
[node name="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect2/MarginContainer/HBoxContainer/VBoxContainer" index="0"]
@ -191,6 +198,7 @@ text = "实战-模拟量数字量采集"
texture = ExtResource("6_6n5xr")
[node name="NinePatchRect3" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer" instance=ExtResource("2_rvvu8")]
visible = false
layout_mode = 2
CourseScene = ExtResource("8_uj17p")
@ -213,6 +221,36 @@ CourseName = "标注解析与注册"
[node name="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer" index="0"]
text = "工业互联网标识解析"
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer" index="1"]
text = "#371647"
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer2" index="1"]
text = "2"
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer3" index="1"]
text = "0"
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer6" index="1"]
text = "30"
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer2" index="2"]
text = "2023年7月3日"
[node name="Label" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "更多实训"
[node name="Label3" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_colors/font_color = Color(0.729412, 0.729412, 0.729412, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_0jsjw")
text = "该版本为定制版,只有定制课程"
horizontal_alignment = 1
vertical_alignment = 1
[editable path="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect"]
[editable path="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect2"]
[editable path="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect3"]

204
README.md
View File

@ -157,11 +157,11 @@
public interface IService{}
public class MyService:Node,IService
{
public MyService()
{
//注入服务
BITApp.ServiceCollection.AddSingleton<IService>(this);
}
public MyService()
{
//注入服务
BITApp.ServiceCollection.AddSingleton<IService>(this);
}
}
```
#### 注入服务
@ -169,27 +169,27 @@ public class MyService:Node,IService
```csharp
public class MyService:Node
{
public override void _Ready()
{
var myService = BITApp.ServiceProvider.GetService<IService>();
}
public override void _Ready()
{
var myService = BITApp.ServiceProvider.GetService<IService>();
}
}
```
##### 基于封装的懒加载
```csharp
public class MyService:Node
{
//声明懒加载服务
private readonly ServiceLoader<IService> myService=new();
public override void _Process(double delta)
{
//如果服务未加载,则跳过执行
if(myService.Loaded is false)return;
//获取服务
var _myService = myService.Value;
//执行
_myService.DoSomething();
}
//声明懒加载服务
private readonly ServiceLoader<IService> myService=new();
public override void _Process(double delta)
{
//如果服务未加载,则跳过执行
if(myService.Loaded is false)return;
//获取服务
var _myService = myService.Value;
//执行
_myService.DoSomething();
}
}
```
***
@ -211,27 +211,27 @@ public class MyService:Node
/// </summary>
public partial class RotationComponent : EntityComponent
{
/// <summary>
/// 获取角度的路径
/// </summary>
[Export] public string Path { get; private set; }
/// <summary>
/// 角度的绝对权重例如90* (0,0,1) = 0,0,90
/// </summary>
[Export] public Vector3 Weight { get; private set; }
/// <summary>
/// 角度的相对偏移
/// </summary>
[Export] public Vector3 Offset { get; private set; }
/// <summary>
/// 默认角度的缓存
/// </summary>
public Vector3 OriginalEuler { get; private set; }
public override void _Ready()
{
//保存默认角度
OriginalEuler = Rotation;
}
/// <summary>
/// 获取角度的路径
/// </summary>
[Export] public string Path { get; private set; }
/// <summary>
/// 角度的绝对权重例如90* (0,0,1) = 0,0,90
/// </summary>
[Export] public Vector3 Weight { get; private set; }
/// <summary>
/// 角度的相对偏移
/// </summary>
[Export] public Vector3 Offset { get; private set; }
/// <summary>
/// 默认角度的缓存
/// </summary>
public Vector3 OriginalEuler { get; private set; }
public override void _Ready()
{
//保存默认角度
OriginalEuler = Rotation;
}
}
```
***
@ -244,26 +244,26 @@ public partial class RotationComponent : EntityComponent
```csharp
public partial class RotationService:Node
{
//在构造函数中注入依赖
public ApplyRotationService()
{
BITApp.ServiceCollection.AddSingleton(this);
}
//非基于ECS的注册方式,例如Node在_Ready回调中调用该方法注册
public static void Register(IObj obj);
//基于非ECS的注册方式,例如Node在Dispose方法中调用该方法注销
public static void UnRegister(IObj obj)
//通常情况下,Register和UnRegister最好使用Queue作为队列的方式注册和注销元素,而非List<T>.Add和List<T>.Remove
//使用消息队列可以解决异步中动态注册和注销导致队列被更改的问题
public override _Process(double delta)
{
//在这里遍历已注册的元素,并
foreach(var element in registriedElement)
{
//你的Code,不,是你的Code
element.Rotation = new(0,1,0);
}
}
//在构造函数中注入依赖
public ApplyRotationService()
{
BITApp.ServiceCollection.AddSingleton(this);
}
//非基于ECS的注册方式,例如Node在_Ready回调中调用该方法注册
public static void Register(IObj obj);
//基于非ECS的注册方式,例如Node在Dispose方法中调用该方法注销
public static void UnRegister(IObj obj)
//通常情况下,Register和UnRegister最好使用Queue作为队列的方式注册和注销元素,而非List<T>.Add和List<T>.Remove
//使用消息队列可以解决异步中动态注册和注销导致队列被更改的问题
public override _Process(double delta)
{
//在这里遍历已注册的元素,并
foreach(var element in registriedElement)
{
//你的Code,不,是你的Code
element.Rotation = new(0,1,0);
}
}
}
```
***
@ -272,26 +272,26 @@ public partial class RotationService:Node
```csharp
public partial class RotationService:Node
{
//在构造函数中注入依赖
public ApplyRotationService()
{
BITApp.ServiceCollection.AddSingleton(this);
}
public override _Process(double delta)
{
//遍历所有包含RotationComponent的Entity
foreach(var entity in EntitiesManager.Query<RotationComponent>())
{
//或者RotationComponent组件
if(entity.TryGetComponent<RotationComponent>(out var rotationComponent)
{
//获取该组件的角度
var angle = //你的Code
//应用组件计算后的角度
rotationComponent.Rotation = angle * rotationComponent.Weight;
}
}
}
//在构造函数中注入依赖
public ApplyRotationService()
{
BITApp.ServiceCollection.AddSingleton(this);
}
public override _Process(double delta)
{
//遍历所有包含RotationComponent的Entity
foreach(var entity in EntitiesManager.Query<RotationComponent>())
{
//或者RotationComponent组件
if(entity.TryGetComponent<RotationComponent>(out var rotationComponent)
{
//获取该组件的角度
var angle = //你的Code
//应用组件计算后的角度
rotationComponent.Rotation = angle * rotationComponent.Weight;
}
}
}
}
```
#### 配置UI
@ -358,14 +358,14 @@ RmRf();
//在完成任务后,切换回主线程
try
{
//切换回主线程的同时,应该添加CancellationToken
await UniTask.SwitchToSynchronizationContext(BITApp.SynchronizationContext,
cancellationTokenSource.Token);
//切换回主线程的同时,应该添加CancellationToken
await UniTask.SwitchToSynchronizationContext(BITApp.SynchronizationContext,
cancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
//任务取消后应该怎么处理,比如回滚数据
return;
//任务取消后应该怎么处理,比如回滚数据
return;
}
//完成任务后,打印出任务耗时时间
@ -380,27 +380,27 @@ Console.WriteLine($"该任务耗时:{stopwatch.ElapsedMilliseconds}ms");
private CancellationTokenSource cancellationTokenSource;
public override void _Ready()
{
//创建新的CancellationTokenSource
cancellationTokenSource = new CancellationTokenSource();
//创建新的CancellationTokenSource
cancellationTokenSource = new CancellationTokenSource();
}
public override void _ExitTree()
{
//取消任务
cancellationTokenSource.Cancel();
//取消任务
cancellationTokenSource.Cancel();
}
public override void _Process()
{
//如果任务已取消,抛出任务取消的异常
cancellationTokenSource.Token.ThrowIfCancellationRequested();
//如果任务已取消,抛出任务取消的异常
cancellationTokenSource.Token.ThrowIfCancellationRequested();
//用try catch捕获取消异常
try
{
//等待某个任务,并添加CancellationToken
await SomeAsync(cancellationTokenSource.Token);
}catch(OperationCanceledException)
{
//任务已取消,你需要做些什么,比如回滚数据
}
//用try catch捕获取消异常
try
{
//等待某个任务,并添加CancellationToken
await SomeAsync(cancellationTokenSource.Token);
}catch(OperationCanceledException)
{
//任务已取消,你需要做些什么,比如回滚数据
}
}
```
```

10
Temp/ReadyDebug.cs Normal file
View File

@ -0,0 +1,10 @@
using Godot;
using System;
public partial class ReadyDebug : Node
{
public override void _Ready()
{
GD.Print("该节点已准备好");
}
}