Breakpoint

This commit is contained in:
CortexCore
2023-09-16 01:16:31 +08:00
parent eabf0c6188
commit 964e1a5875
145 changed files with 89 additions and 11999 deletions

View File

@@ -1,3 +0,0 @@
[gd_resource type="ButtonGroup" format=3 uid="uid://cwiiipy56pktn"]
[resource]

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://cs0mh0ev6u0cf"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_vgs8l"]
[resource]
script = ExtResource("1_vgs8l")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://574gf1b8pq71"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_xdojh"]
[resource]
script = ExtResource("1_xdojh")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://vsysp5ftn5do"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_4uwqb"]
[resource]
script = ExtResource("1_4uwqb")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://c2he5e5rahatp"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_b50nr"]
[resource]
script = ExtResource("1_b50nr")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://b38onsp3c3jem"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_3kqe2"]
[resource]
script = ExtResource("1_3kqe2")
HandleSeed = "th.record"
Format = "float"
Category = "环境"
Name = "温度"
Value = "42"
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://d3xam2no2uaas"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_lqwbc"]
[resource]
script = ExtResource("1_lqwbc")
HandleSeed = "th.record"
Format = "float"
Category = "环境"
Name = "湿度"
Value = "50"
RefHandleSeed = "th"

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://cgk1wmiqqedmi"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_8mak5"]
[resource]
script = ExtResource("1_8mak5")
HandleSeed = "th"
Format = "string"
Category = "参数"
Name = "型号"
Value = "th.sensor"
RefHandleSeed = "th.record"

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://hixuaakj8opt"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_hthhx"]
[resource]
script = ExtResource("1_hthhx")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://ngju0miy7a6b"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_brytp"]
[resource]
script = ExtResource("1_brytp")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://c4a5buevs88ko"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_25hnv"]
[resource]
script = ExtResource("1_25hnv")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@@ -1,41 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using BITKit;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_RegisterDB : FormDBProvider
{
public override void Submit(string data)
{
var jObject = JsonConvert.DeserializeObject<JObject>(data);
var handle = jObject["handle"]!.ToObject<string>();
var values = jObject["values"]!.ToObject<List<IDIS_Data>>();
var references = jObject["references"]!.ToObject<List<string>>();
var createUser = jObject["createUser"]!.ToObject<string>();
if(Regex.IsMatch(handle,IDIS_Code.AddressRegex) is false)
{
throw new InvalidOperationException("标识格式不正确");
}
IDIS_Service.Singleton.Register(handle, createUser);
foreach (var x in values)
{
IDIS_Service.Singleton.Register(handle,x.Name, x.Format, x.Value,x.Category);
}
foreach (var x in references)
{
IDIS_Service.Singleton.RegisterReference(handle,x);
}
}
}
#endif

View File

@@ -1,108 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Collections.Generic;
using BITKit;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_RegisterWeaver : FormWeaverResource
{
[Export] private NodePath handleEditPath;
[Export] private NodePath generateButtonPath;
[Export] private NodePath addReferenceButtonPath;
[Export] private NodePath referenceEditBuilderPath;
[Export] private NodePath templateBuilderPath;
private LineEdit handleEdit=>formBuilder.GetNode<LineEdit>(handleEditPath);
private Button generateButton=>formBuilder.GetNode<Button>(generateButtonPath);
private Button addReferenceButton=>formBuilder.GetNode<Button>(addReferenceButtonPath);
private NodeBuilder referenceEditBuilder=>formBuilder.GetNode<NodeBuilder>(referenceEditBuilderPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private readonly List<IDIS_Data> _values=new();
private readonly List<string> _references=new();
public override void Weaver(Control container, IFormField formField)
{
var field = (IDIS_TemplateForm)formField;
var data = new IDIS_Data();
var vBox = container.Create<HBoxContainer>();
var label = vBox.Create<Label>();
var typeLabel = vBox.Create<Label>();
var valueEdit = vBox.Create<LineEdit>();
var myIndex = _values.Count;
_values.Add(data);
label.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
typeLabel.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
valueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
label.Text = field.Name;
typeLabel.Text = field.Type;
valueEdit.PlaceholderText = field.DefaultValue;
data.Category = field.Category;
data.Handle = handleEdit.Text;
data.Format = field.Type;
data.Name = field.Name;
data.Value = field.DefaultValue;
//valueEdit.TextChanged += x => data.Value = x;
valueEdit.TextChanged += newValue =>
{
data.Value = string.IsNullOrEmpty(newValue) ? field.DefaultValue : newValue;
};
}
public override string GetContent()
{
if (string.IsNullOrEmpty(handleEdit.Text))
{
throw new InvalidOperationException("[color=red]输入的标识码为空[/color]");
}
var value = new Dictionary<object, object>
{
{ "handle", handleEdit.Text },
{ "values",_values},
{ "references",_references},
{"createUser",templateBuilder.CurrentTemplate.Name}
};
var json = JsonHelper.Get(value);
return json;
}
public override void Clear()
{
_values.Clear();
_references.Clear();
referenceEditBuilder.Clear();
}
public override void OnStart()
{
generateButton.Pressed += () =>
{
handleEdit.Text = IDIS_Service.GenerateHandle();
};
addReferenceButton.Pressed += AddReference;
}
private void AddReference()
{
var container = referenceEditBuilder.Build<UXContainer>();
var myIndex = _references.Count;
_references.Add("");
container.lineEdit.Text = string.Empty;
container.label.Text = "引用标识码:";
container.lineEdit.PlaceholderText = "8.123.99/xxxxxxxx";
container.lineEdit.TextChanged += x => _references[myIndex] = x;
}
}
#endif

View File

@@ -1,37 +0,0 @@
using Godot;
using System;
using BITKit;
using Newtonsoft.Json;
namespace BITFactory;
[Serializable]
[JsonObject(MemberSerialization.OptIn)]
public class IDIS_TemplateForm:IFormField
{
[JsonProperty]
public string Name { get; set; }
[JsonProperty]
public string Type { get; set; }
[JsonProperty]
public string DefaultValue { get; set; }
[JsonProperty]
public string Category { get; set; }
public int FieldCount => 4;
public string[] FieldNames => new string[]
{
nameof(Name),
nameof(Type),
nameof(DefaultValue),
nameof(Category),
};
public string[] FieldTypes => FieldNames;
public string[] DefaultValues => FieldNames;
}
[GlobalClass]
public partial class IDIS_TemplateFormResource : FormResource
{
public override string Name { get; set; }
public override IFormField[] Fields { get; set; }
}

View File

@@ -1,96 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using BITKit;
using BITKit.IO;
using Godot.Collections;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_TemplateResource : TemplateResource
{
private static readonly List<FormResource> Templates=new();
private static InitializationState state = InitializationState.None;
private static string assetPath => PathHelper.GetPath("标识模板资源包.zip");
private static string entryPath => "Templates.json";
public override FormResource[] GetTemplates()
{
EnsureCreated();
return Templates.ToArray();
}
public override string[] GetTemplateNames()
{
EnsureCreated();
return Templates.Select(x => x.Name).ToArray();
}
public override FormResource GetTemplate(string name)
{
EnsureCreated();
return Templates.Single(x => x.Name == name);
}
public override bool IsSupportCreateTemplate => true;
public override FormResource CreateTemplate()
{
var newResource =
new IDIS_TemplateFormResource()
{
Name = "新的标识模板:"+Guid.NewGuid(),
Fields = new IFormField[]
{
new IDIS_TemplateForm()
{
Name = "新的标识字段:",
Type = "string",
DefaultValue = "new",
Category = "默认分类"
}
}
};
Templates.Add(newResource);
return newResource;
}
public override void DeleteTemplate(string name)
{
var index = Templates.FindIndex(x => x.Name == name);
if (index == -1) return;
Templates.RemoveAt(index);
}
private void EnsureCreated()
{
if (state != InitializationState.None) return;
if (File.Exists(assetPath))
{
foreach (var x in BITAssets.Read<KeyValuePair<string,IDIS_TemplateForm[]>[]>(assetPath, entryPath))
{
Templates.Add(new IDIS_TemplateFormResource()
{
Name = x.Key,
Fields = x.Value.Select(_=>_ as IFormField).ToArray()
});
}
}
state = InitializationState.Initialized;
}
public override void OnStop()
{
ManualSave();
}
public override void ManualSave()
{
// var values = new System.Collections.Generic.Dictionary<string, List<IFormField>>(
// Templates.Select(x=>new KeyValuePair<string, List<IFormField>>(
// x.Key,x.Value.Fields.ToList()
// ))
// );
var values = Templates.Select(x => new KeyValuePair<string, object>(
x.Name, x.Fields
));
BITAssets.Build(assetPath,new BITAsset(entryPath,JsonHelper.Get(values)));
}
}

View File

@@ -1,155 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using BITKit;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_TemplateWeaver : FormWeaverResource
{
[Export] private IDIS_TemplateResource templateResource;
[ExportCategory(nameof(NodePath))]
[Export] private NodePath addFieldsButtonPath;
[Export] private NodePath templateBuilderPath;
[Export] private NodePath templateNameEditPath;
[Export] private NodePath saveTemplateNameButtonPath;
[Export] private NodePath deleteTemplateButtonPath;
private Button addFieldsButton => formBuilder.GetNode<Button>(addFieldsButtonPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private LineEdit templateNameEdit => formBuilder.GetNode<LineEdit>(templateNameEditPath);
private Button saveTemplateNameButton => formBuilder.GetNode<Button>(saveTemplateNameButtonPath);
private Button deleteTemplateButton => formBuilder.GetNode<Button>(deleteTemplateButtonPath);
private readonly List<IDIS_TemplateForm> fields = new();
public override void Weaver(Control container, IFormField formField)
{
var field = formField as IDIS_TemplateForm;
fields.Add(field);
var hBox = container.Create<HBoxContainer>();
var nameEdit = hBox.Create<LineEdit>();
var typeButton = hBox.Create<OptionButton>();
var defaultValueEdit = hBox.Create<LineEdit>();
var categoryEdit = hBox.Create<LineEdit>();
var removeButton = hBox.Create<Button>();
nameEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
typeButton.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
defaultValueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
categoryEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
nameEdit.PlaceholderText="名称";
typeButton.Text = "类型";
defaultValueEdit.PlaceholderText="默认值";
categoryEdit.PlaceholderText="分类";
typeButton.GetPopup().AddItem("string");
typeButton.GetPopup().AddItem("int");
typeButton.GetPopup().AddItem("ulong");
typeButton.GetPopup().AddItem("double");
typeButton.GetPopup().AddItem("h_site");
typeButton.GetPopup().AddItem("base64");
typeButton.GetPopup().AddItem("guid");
typeButton.GetPopup().AddItem("url");
typeButton.GetPopup().AddItem("dateTime");
typeButton.GetPopup().AddItem("float");
typeButton.Selected = 0;
nameEdit.Text = field!.Name;
typeButton.Text = field!.Type;
defaultValueEdit.Text = field!.DefaultValue;
categoryEdit.Text = field!.Category;
removeButton.Text= "删除";
nameEdit.TextChanged+=x=>field!.Name=x;
typeButton.ItemSelected+=x=>field!.Type=typeButton.GetPopup().GetItemText((int)x);
defaultValueEdit.TextChanged+=x=>field!.DefaultValue=x;
categoryEdit.TextChanged+=x=>field!.Category=x;
removeButton.Pressed+=()=>
{
fields.Remove(field!);
container.QueueFree();
var current = templateBuilder.CurrentTemplate.Fields.ToList();
current.Remove(formField);
templateBuilder.CurrentTemplate.Fields = current.ToArray();
};
}
public override string GetContent()
{
if (fields.Any(x =>
{
switch (x.Name, x.Type, x.DefaultValue, x.Category)
{
case ("", _, _, _):
case (_, "", _, _):
case (_, _, "", _):
return true;
default:
return false;
}
}))
{
throw new InvalidOperationException("请填写完整");
}
var value = JsonHelper.Get(fields);
return value;
}
public override void Clear()
{
fields.Clear();
if (templateBuilder.CurrentTemplate is null) return;
templateNameEdit.Text = templateBuilder.CurrentTemplate?.Name;
}
public override void OnStart()
{
addFieldsButton.Pressed+=AddFields;
deleteTemplateButton.Pressed += DeleteCurrentTemplate;
saveTemplateNameButton.Pressed+=()=>
{
ChangeCurrentTemplateName(templateNameEdit.Text);
};
templateNameEdit.TextSubmitted+=ChangeCurrentTemplateName;
}
private void AddFields()
{
var current = templateBuilder.CurrentTemplate.Fields.ToList();
current.Add(new IDIS_TemplateForm()
{
Name = "新字段",
Type = "string",
DefaultValue = "",
Category = ""
});
templateBuilder.CurrentTemplate.Fields = current.ToArray();
templateBuilder.Rebuild();
}
private void ChangeCurrentTemplateName(string newName)
{
if(templateBuilder.CurrentTemplate==null) return;
if (templateBuilder.template.GetTemplates().Any(x => x.Name == newName))
// ReSharper disable once StringLiteralTypo
newName+=DateTime.Now.ToString("mmss");
templateBuilder.CurrentTemplate.Name = newName;
templateBuilder.template.ManualSave();
templateBuilder.Rebuild();
}
private void DeleteCurrentTemplate()
{
if(templateBuilder.CurrentTemplate==null) return;
templateResource.DeleteTemplate(templateBuilder.CurrentTemplate.Name);
templateBuilder.Rebuild();
}
}

View File

@@ -1,21 +0,0 @@
#if Deprecated
using Godot;
using System;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_AutoRegResource : Resource
{
[Export] public string HandleSeed;
[ExportCategory("IDIS")]
[Export] public string Format;
[Export] public string Category;
[Export] public string Name;
[Export] public string Value;
[ExportCategory("标识引用")]
[Export] public string RefHandleSeed;
}
#endif

View File

@@ -1,87 +0,0 @@
#if deprecated
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BITFactory;
using BITKit;
using Godot.Collections;
namespace BITFactory;
public partial class IDIS_AutoRegister : Node
{
[Export] private Array<IDIS_AutoRegResource> regResources;
[ExportCategory("UI 绑定")]
[Export] private Array<ProgressBar> progressBars;
[Export] private RichTextLabel logLabel;
private readonly Queue<ProgressBar> _progressQueue = new();
private ProgressBar _currentProgressBar;
private void Register()
{
BIT4Log.Log<IDIS_AutoRegister>("开始自动注册中...");
var seeds = new List<string>();
foreach (var x in regResources)
{
seeds.Add(x.HandleSeed);
if (string.IsNullOrEmpty(x.RefHandleSeed) is false)
{
seeds.Add(x.RefHandleSeed);
}
}
seeds = seeds.Distinct().ToList();
var handles =
new System.Collections.Generic.Dictionary<string, string>(seeds.Select(x =>
new KeyValuePair<string, string>(x, IDIS_Service.GenerateHandle())));
try
{
foreach (var x in regResources)
{
var handle = handles[x.HandleSeed];
IDIS_Service.Singleton.Register(handle, x.Name, x.Format, x.Value, x.Category);
if (string.IsNullOrEmpty(x.RefHandleSeed) is false && handles.TryGetValue(x.RefHandleSeed, out var refHandle))
{
IDIS_Service.Singleton.RegisterReference(handle, refHandle);
}
logLabel.Text+=$"\n[{DateTime.Now}]{x.Name} 已注册,使用标识: {handle}";
}
}
catch (Exception e)
{
logLabel.Text += $"\n[color=red]错误:\n{e.Message}[/color]";
}
foreach (var x in progressBars)
{
x.Value = x.MinValue;
_progressQueue.Enqueue(x);
}
}
public override void _Process(double delta)
{
switch (_currentProgressBar)
{
case null when _progressQueue.Count == 0:
return;
case null:
_progressQueue.TryDequeue(out _currentProgressBar);
return;
case (var x) when x.Value >= x.MaxValue:
_progressQueue.TryDequeue(out _currentProgressBar);
return;
default:
_currentProgressBar.Value +=
Mathf.Lerp(_currentProgressBar.MinValue, _currentProgressBar.MaxValue, delta);
break;
}
}
}
#endif

View File

@@ -1,171 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BITKit;
using Cysharp.Threading.Tasks;
namespace BITFactory;
public partial class IDIS_SearchService : Node
{
[ExportCategory("Service")]
[Export] private IDIS_Service service;
[ExportCategory("UI 绑定 ")]
[Export] private LineEdit searchEdit;
[Export] private Control searchCandidateContainer;
[Export] private StringResource searchButtonVariation;
[Export] private Control searchEditPadding;
[Export] private Button searchButton;
[Export] private Button copyHandleButton;
[ExportCategory("Query 绑定")]
[Export] private Label handleLabel;
[Export] private Label nameLabel;
[Export] private Label createTimeLabel;
[Export] private Label updateTimeLabel;
[Export] private Control valueContainer;
[Export] private Control referenceContainer;
[ExportCategory("Template")]
[Export] private PackedScene valueTemplate;
[Export] private PackedScene referenceTemplate;
[Export] private PackedScene categoryTemplate;
private string currentHandle;
public override void _Ready()
{
MathNode.ClearChild(searchCandidateContainer);
MathNode.ClearChild(valueContainer);
searchEdit.TextChanged += Search;
//searchEdit.FocusExited += Clear;
searchButton.Pressed+=Search;
copyHandleButton.Pressed += CopyCurrentHandle;
}
private void Search()
{
Search(searchEdit.Text);
}
private void Search(string word)
{
var split = word.Split('?');
var condition = string.Empty;
switch (split)
{
case var x when x.Length is 1:
break;
case var x when x.Length is 2:
condition = split[1];
break;
case var x when x.Length > 2:
split = word.Split('?', 2);
condition = split[1];
break;
}
var rawHandle = split[0];
MathNode.ClearChild(searchCandidateContainer);
if (service.Query(word, out IDIS_Query[] queries) is false) return;
if (queries.Length is 1 && queries.First().Handle == rawHandle)
{
QueryIDIS(queries.First());
return;
}
foreach (var query in queries.Take(3))
{
var button = new Button();
button.Flat = true;
searchCandidateContainer.AddChild(button);
button.Text = $"{query.Handle}:{query.CreateUser}";
button.Pressed+=OnButtonOnPressed;
button.ThemeTypeVariation = searchButtonVariation.Value;
void OnButtonOnPressed()
{
searchEdit.Text =string.IsNullOrEmpty(condition) ? query.Handle :query.Handle + condition ;
Search(query.Handle);
QueryIDIS(query);
}
}
}
private async void Clear()
{
await Task.Delay(100);
MathNode.ClearChild(searchCandidateContainer);
}
private void QueryIDIS(IDIS_Query query)
{
searchEditPadding.Hide();
handleLabel.Text = query.Handle;
currentHandle = query.Handle;
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
updateTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
MathNode.ClearChild(valueContainer);
MathNode.ClearChild(referenceContainer);
foreach (var categoryGroup in query.Datas.GroupBy(x=>x.Category))
{
var categoryContainer = categoryTemplate.Instantiate<UXContainer>();
categoryContainer.Text = categoryGroup.First().Category;
foreach (var x in categoryGroup)
{
var container = valueTemplate.Instantiate<UXContainer>();
container.labels[0].Text = x.Name;
container.labels[1].Text = x.Value;
container.labels[2].Text = x.UpdateTime.ToString(CultureInfo.InvariantCulture);
container.labels[3].Text = x.CreateTime.ToString(CultureInfo.InvariantCulture);
categoryContainer.contextContainer.AddChild(container);
}
valueContainer.AddChild(categoryContainer);
}
foreach (var x in query.References)
{
var container = referenceTemplate.Instantiate<UXContainer>();
container.Text = x.RelatedHandle;
container.button.Pressed += () =>
{
service.Query(x.RelatedHandle,out IDIS_Query _query);
QueryIDIS(_query);
};
referenceContainer.AddChild(container);
}
}
private void CopyCurrentHandle()
{
DisplayServer.ClipboardSet(currentHandle);
}
}
#endif

View File

@@ -1,128 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Globalization;
using System.Text;
using System.Timers;
using BITFactory;
using BITKit;
using Cysharp.Threading.Tasks;
using SQLitePCL;
using Timer = System.Timers.Timer;
// ReSharper disable All
namespace BITFactory;
public partial class IDIS_THService : Node
{
public enum UpdateMode
{
None,
Update,
Insert,
UpdateAndInsert,
}
[Export] private UpdateMode currentUpdateMode = UpdateMode.Insert;
[ExportCategory("Services")]
[Export] private IDIS_Service service;
[Export] private 湿Reader thReader;
[ExportCategory("UI 绑定")]
[Export] private Button submitButton;
[Export] private CheckButton autoUpdateButton;
[Export] private OptionButton updateModeButton;
[Export] private LineEdit handleEdit;
[Export] private LineEdit temperatureEdit;
[Export] private LineEdit humidityEdit;
[Export] private RichTextLabel hintsLabel;
[Export] private RichTextLabel autoUpdateLabel;
private Timer autoUpdateTimer;
public override void _Ready()
{
submitButton.Pressed += Submit;
autoUpdateButton.Toggled += toggle =>
{
submitButton.Disabled = toggle;
handleEdit.Editable = !toggle;
temperatureEdit.Editable = !toggle;
humidityEdit.Editable = !toggle;
autoUpdateTimer.Enabled = toggle;
};
updateModeButton.GetPopup().Clear();
updateModeButton.GetPopup().AddItem("不更新");
updateModeButton.GetPopup().AddItem("更新记录");
updateModeButton.GetPopup().AddItem("添加记录");
updateModeButton.GetPopup().IndexPressed += index =>
{
currentUpdateMode = (UpdateMode)index;
};
autoUpdateTimer = new Timer();
autoUpdateTimer.AutoReset = true;
autoUpdateTimer.Interval = 1000;
autoUpdateTimer.Elapsed += AutoUpdate;
}
private async void AutoUpdate(object sender, ElapsedEventArgs e)
{
await UniTask.SwitchToSynchronizationContext(BITApp.SynchronizationContext);
UpdateTH(handleEdit.Text,thReader.temperature.ToString(),thReader.humidity.ToString());
}
private void Submit()
{
switch (handleEdit.Text, temperatureEdit.Text, humidityEdit.Text)
{
case ("", _, _):
hintsLabel.Text = "请输入标识码";
return;
case (_, "", _):
hintsLabel.Text = "请输入温度";
return;
case (_, _, ""):
hintsLabel.Text = "请输入湿度";
return;
}
UpdateTH(handleEdit.Text,temperatureEdit.Text,humidityEdit.Text);
}
private void UpdateTH(string handle,string temperature,string humidity)
{
if (string.IsNullOrEmpty(handle))
{
autoUpdateLabel.SetTextAsync("空的标识码");
return;
}
switch (currentUpdateMode)
{
case UpdateMode.Insert:
service.Register(handle,"温度" ,"float", temperature, "环境");
service.Register(handle, "湿度","float", humidity, "环境");
break;
case UpdateMode.Update:
if (service.Update(handle, "当前温度",temperature) is false)
{
autoUpdateLabel.SetTextAsync("温度更新失败,未知异常");
return;
}
if (service.Update(handle, "当前湿度",humidity) is false)
{
autoUpdateLabel.SetTextAsync("湿度更新失败,未知异常");
return;
}
break;
case UpdateMode.UpdateAndInsert:
service.Register(handle,"温度" ,"float", temperature, "环境");
service.Register(handle, "湿度","float", humidity, "环境");
goto case UpdateMode.Update;
}
autoUpdateLabel.SetTextAsync($"温湿度已自动更新:{DateTime.Now}");
}
}
#endif

View File

@@ -1,168 +0,0 @@
#if Deprecated
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using BITKit;
using BITKit.IO;
using Godot;
namespace BITFactory;
[Serializable]
public class IDIS_Template
{
public string TemplateName="标识注册模板";
public string TemplateDescription="该模板通常用于xxx用途";
public string IconPath="Register";
public DateTime CreateTime=DateTime.Now;
public DateTime UpdateTime=DateTime.Now;
public List<(string format,string hint,string category)> Formats=new();
}
public partial class IDIS_TemplateService : Node
{
private static string assetPath => PathHelper.GetPath("标识注册模板.zip");
private const string templateName = $"{nameof(IDIS_Template)}.json";
public readonly List<IDIS_Template> templates=new();
[ExportCategory("Quick Start")]
[Export] private Button createButton;
[Export] private Button newFormatButton;
[Export] private NodeBuilder templateIndexBuilder;
[Export] private NodeBuilder templateFormatBuilder;
[Export] private LineEdit templateNameEdit;
[Export] private LineEdit templateDescriptionEdit;
[Export] private Label templateCreateTimeLabel;
[Export] private Label templateUpdateTimeLabel;
[ExportCategory("Template")]
[Export] private PackedScene templateContainer;
private bool isDirty;
private IDIS_Template _selectedTemplate;
public override void _Ready()
{
if (File.Exists(assetPath) is false)
{
BIT4Log.Log<IDIS_TemplateService>($"未找到配置文件:{assetPath}");
Save();
}
var temp = BITAssets.Read<List<IDIS_Template>>(assetPath, templateName);
templates.AddRange(temp);
BIT4Log.Log<IDIS_TemplateService>($"已加载配置文件:{assetPath}");
createButton.Pressed += CreateTemplate;
newFormatButton.Pressed += CreateFormat;
templateNameEdit.TextChanged += OnTemplateNameChanged;
templateDescriptionEdit.TextChanged += OnTemplateDescriptionChanged;
EnsureConfigure();
}
private void CreateFormat()
{
if (_selectedTemplate is null) return;
_selectedTemplate.Formats ??= new();
_selectedTemplate.Formats.Add(("新的数据格式","格式类型","数据类型"));
_selectedTemplate.UpdateTime= DateTime.Now;
EnsureConfigure();
}
public override void _ExitTree()
{
Save();
}
private void CreateTemplate()
{
templates.Add(new IDIS_Template()
{
TemplateName = "新的标识注册模板"
});
EnsureConfigure();
}
private void Save()
{
BITAssets.Build(assetPath,new IAsset[]
{
new BITAsset(templateName,JsonHelper.Get(templates))
});
BIT4Log.Log<IDIS_TemplateService>($"已创建配置文件:{assetPath}");
}
private void OnTemplateNameChanged(string text)
{
if (_selectedTemplate is null) return;
_selectedTemplate.TemplateName = text;
_selectedTemplate.UpdateTime= DateTime.Now;
}
private void OnTemplateDescriptionChanged(string text)
{
if (_selectedTemplate is null) return;
_selectedTemplate.TemplateDescription = text;
_selectedTemplate.UpdateTime= DateTime.Now;
}
private void EnsureConfigure()
{
templateIndexBuilder.Clear();
templateFormatBuilder.Clear();
foreach (var x in templates)
{
var _container = templateIndexBuilder.Build<UXContainer>();
_container.button.Text = x.TemplateName;
_container.button.Pressed += () =>
{
_selectedTemplate = x;
EnsureConfigure();
};
}
if (_selectedTemplate is null) return;
templateNameEdit.Text = _selectedTemplate.TemplateName;
templateDescriptionEdit.Text = _selectedTemplate.TemplateDescription;
templateCreateTimeLabel.Text = _selectedTemplate.CreateTime.ToString(CultureInfo.InvariantCulture);
templateUpdateTimeLabel.Text = _selectedTemplate.UpdateTime.ToString(CultureInfo.InvariantCulture);
for (var i = 0; i < _selectedTemplate.Formats.Count; i++)
{
var x = _selectedTemplate.Formats[i];
var _container = templateFormatBuilder.Build<UXContainer>();
_container.lineEdits[0].Text = x.format;
_container.lineEdits[1].Text = x.hint;
_container.lineEdits[2].Text = x.category;
var index = i;
_container.lineEdits[0].TextChanged += (s) =>
{
var current = _selectedTemplate.Formats[index];
current.format = s;
_selectedTemplate.Formats[index] = current;
_selectedTemplate.UpdateTime = DateTime.Now;
};
_container.lineEdits[1].TextChanged += s =>
{
var current = _selectedTemplate.Formats[index];
current.hint = s;
_selectedTemplate.Formats[index] = current;
};
_container.lineEdits[2].TextChanged += s =>
{
var current = _selectedTemplate.Formats[index];
current.category = s;
_selectedTemplate.Formats[index] = current;
};
_container.button.Pressed += () =>
{
_selectedTemplate.Formats.RemoveAt(index);
EnsureConfigure();
};
}
}
}
#endif

View File

@@ -1,85 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using BITKit;
namespace BITFactory;
public partial class IDIS_UpdateService : Node
{
[ExportCategory("Service")]
[Export] private IDIS_Service service;
[Export] private IDIS_TemplateService templateService;
[ExportCategory("UI 绑定")]
[Export] private NodeBuilder indexBuilder;
[Export] private NodeBuilder templateBuilder;
[Export] private LineEdit handleEdit;
[Export] private Button submitButton;
[Export] private RichTextLabel hintsLabel;
private ButtonGroup _buttonGroup;
private readonly Dictionary<string,LineEdit> dataEdits = new();
public override void _Ready()
{
_buttonGroup = new ButtonGroup();
submitButton.Pressed += Submit;
submitButton.Disabled = true;
Refresh();
}
private void Refresh()
{
templateBuilder.Clear();
indexBuilder.Clear();
foreach (var x in templateService.templates)
{
var container = indexBuilder.Build<UXContainer>();
container.button.Text = x.TemplateName;
container.button.ButtonPressed = true;
container.button.ButtonGroup = _buttonGroup;
container.button.Pressed +=()=> Entry(x);
}
}
private void Entry(IDIS_Template template)
{
templateBuilder.Clear();
dataEdits.Clear();
foreach (var x in template.Formats)
{
var container = templateBuilder.Build<UXContainer>();
container.Text = x.format;
container.lineEdit.PlaceholderText = x.hint;
dataEdits.TryAdd(x.format, container.lineEdit);
}
submitButton.Disabled = false;
}
private void Submit()
{
if (string.IsNullOrEmpty(handleEdit.Text))
{
hintsLabel.Text="请填写标识码";
return;
}
var handle = handleEdit.Text;
var values = new Dictionary<string, string>(
dataEdits
.Where(x=>string.IsNullOrEmpty(x.Value.Text) is false)
.Select(x => new KeyValuePair<string, string>(x.Key, x.Value.Text))
);
foreach (var x in values)
{
service.Update(handle, x.Key, x.Value);
}
hintsLabel.Text=$"更新成功,已更新{values.Count}个值"+DateTime.Now;
}
}
#endif

View File

@@ -1,17 +0,0 @@
using Godot;
using System;
using System.Linq;
using BITKit;
namespace BITKit;
public partial class TemplateCondition : ConditionComponent
{
public override Type BaseType => typeof(ConditionComponent);
[Export] private TemplateResource templateResource;
[Export] private string templateName;
public override bool OnCheck()
{
return templateResource.GetTemplates().Any(x => x.Name == templateName);
}
}

View File

@@ -1,23 +0,0 @@
#if Deprecated
using Godot;
using System;
namespace BITFactory;
public partial class 湿 : Node
{
[Export] private string handle;
[Export] private int count;
[Export] private LineEdit _lineEdit;
private void Excute()
{
var myHandle = handle;
if (_lineEdit is not null) myHandle = _lineEdit.Text;
for (var i = 0; i < count; i++)
{
IDIS_Service.Singleton.Register(myHandle, "温度", "float", $"{new Random().Next(10, 60)}", "环境");
IDIS_Service.Singleton.Register(myHandle, "湿度", "float", $"{new Random().Next(0, 100)}", "环境");
}
}
}
#endif

View File

@@ -1,151 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net.Mime;
using System.Runtime.InteropServices;
using System.Threading;
using System.Timers;
using BITKit;
using Cysharp.Threading.Tasks;
using SharpModbus;
using Timer = System.Timers.Timer;
namespace BITFactory;
public partial class 湿Reader : Node
{
[ExportCategory("参数")]
[Export(PropertyHint.Range,"100,2000")] private int interval=500;
[ExportCategory("网络设置")]
[Export] private string ip="192.168.3.7";
[Export] private int port=502;
[ExportCategory("运行时")]
[Export]public double humidity = 50.0;
[Export]public double temperature = 26.0;
[ExportCategory("UI 绑定")]
[Export] private Button connectToModbusButton;
[Export] private UXContainer temperatureContainer;
[Export] private UXContainer humidityContainer;
[Export] private LineEdit ipEdit;
[Export] private LineEdit portEdit;
[Export] private RichTextLabel hintsLabel;
private ModbusMaster _modbus;
private Timer timer;
private CancellationTokenSource _CancellationTokenSource;
public override void _Ready()
{
_CancellationTokenSource = new CancellationTokenSource();
try
{
_modbus = ModbusMaster.TCP(ip, port);
}
catch (Exception e)
{
hintsLabel.Text = e.Message;
}
ipEdit.TextChanged+=s=>ip=s;
portEdit.TextChanged+=s=>
{
try
{
port = int.Parse(s);
}
catch (Exception e)
{
hintsLabel.SetTextAsync(e.Message);
}
};
connectToModbusButton.Pressed += Connect;
Connect();
timer = new Timer();
timer.Interval = interval;
timer.Elapsed += OnTimerElapsed;
timer.AutoReset = false;
timer.Start();
}
public override void _ExitTree()
{
_CancellationTokenSource.Cancel();
timer.Stop();
}
/// <summary>
/// 连接到Modbus
/// </summary>
private void Connect()
{
_modbus?.Dispose();
try
{
_modbus = ModbusMaster.TCP(ip, port);
}
catch (Exception e)
{
BIT4Log.Log<湿Reader>(e.Message);
hintsLabel.SetTextAsync(e.Message);
}
}
/// <summary>
/// 内部方法,定时器回调用于读取Modbus
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void OnTimerElapsed(object sender, ElapsedEventArgs e)
{
await UniTask.SwitchToTaskPool();
try
{
if (_modbus is null)
{
hintsLabel.SetTextAsync("Modbus未初始化");
timer.Start();
return;
}
_CancellationTokenSource.Token.ThrowIfCancellationRequested();
hintsLabel.SetTextAsync( "正在读取温湿度数据..."+DateTime.Now);
var vs = _modbus.ReadInputRegisters(1, 0, 2);
_CancellationTokenSource.Token.ThrowIfCancellationRequested();
hintsLabel.SetTextAsync( "已采集到数据,正在解析..."+DateTime.Now);
if (vs is not { Length: 2 })
{
hintsLabel.SetTextAsync(hintsLabel.Text = $"获取温湿度数据失败:数据长度为:{vs.Length}"+DateTime.Now);
return;
}
temperature = vs[0] / 10.0;
humidity = vs[1] / 10.0;
hintsLabel.SetTextAsync("已获取到温湿度数据:"+DateTime.Now);
temperatureContainer.label.SetTextAsync(temperature.ToString(CultureInfo.InvariantCulture)); ;
humidityContainer.label.SetTextAsync(humidity.ToString(CultureInfo.InvariantCulture));
timer.Start();
}
catch (OperationCanceledException)
{
BIT4Log.Log<湿Reader>($"Modbus读取任务已取消");
}
catch (Exception ex)
{
hintsLabel.SetTextAsync(ex.Message);
timer.Start();
}
}
}

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=3 format=3 uid="uid://dmk2vf7jamysi"]
[gd_scene load_steps=3 format=3 uid="uid://ivjmvpnehgvp"]
[ext_resource type="Texture2D" uid="uid://58y4a67wwco4" path="res://Artists/Art/Icons/Icon_Settings.png" id="1_hpoox"]

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=4 format=3 uid="uid://cnd2ofcdx0inc"]
[gd_scene load_steps=4 format=3 uid="uid://c3bdy10b3s0my"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_4faap"]
[ext_resource type="Texture2D" uid="uid://dyxw5ocfiamgi" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/标准ModbusRTU图片.jpg" id="1_yd6oj"]

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=6 format=3 uid="uid://n3v64dkgpccy"]
[gd_scene load_steps=6 format=3 uid="uid://5u6a07w3jmsk"]
[sub_resource type="Animation" id="Animation_d44nr"]
length = 0.001

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://dv3ugwbqu3t77"]
[gd_scene load_steps=5 format=3 uid="uid://bo2eturxtac32"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cpr2j"]
bg_color = Color(0.317647, 0.639216, 0.827451, 1)

View File

@@ -1,32 +0,0 @@
# 工业数据采集与分析应用分享
## 该应用程序使用方式为提供基于教学步骤的数据采集与分析的实践,主要包括以下内容:
* 教程文档
* 数据显示
* 模拟数据
* 该软件的作用就像是买书附带的光碟,里面有软件和视频等教辅软件
## 实践一:温湿度数据采集
配置温湿度传感器485+以太网转485模块+电源等
目标掌握Modbus协议、接线、查看文档等技能
步骤:查看文档+接线+现场讲解等
## 实践二:模拟量数字量采集
配置:按钮开关+4-20ma信号发生器+模拟量采集模块+电源等
目标:掌握常见传感器的数据采集等。
步骤:查看文档+接线+现场讲解+采集
## 实践三:激光雷达数据采集
配置:激光雷达(UDP)+电源等
目标:掌握非标自定义协议的设备的数据采集。
步骤:查看文档+接线+现场讲解+采集

View File

@@ -1,144 +0,0 @@
[gd_scene load_steps=12 format=3 uid="uid://cdivd7qml4dvu"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_2tjg8"]
[ext_resource type="Texture2D" uid="uid://b0f2b032lufnb" path="res://Mods/教育平台/Arts/Textures/ee680086375133.5d97558385c71.jpg" id="2_8n5qp"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="3_ds640"]
[ext_resource type="Texture2D" uid="uid://brhl3mwa5ibbk" path="res://Mods/教育平台/Arts/Textures/holographic_city_node.jpg" id="4_vne04"]
[ext_resource type="Theme" uid="uid://dokwscirps6nt" path="res://Artists/Themes/Factory_Theme.tres" id="5_sn2kd"]
[ext_resource type="PackedScene" uid="uid://bx4v3ofh4on5e" path="res://Mods/工业数据采集与分析应用分享/_Deprecated/标识注册.tscn" id="6_drcgg"]
[ext_resource type="PackedScene" uid="uid://yxubv8dgqnpa" path="res://Mods/工业数据采集与分析应用分享/_Deprecated/标识解析.tscn" id="7_kffxi"]
[ext_resource type="Script" path="res://BITKit/Scripts/GraphNode/GraphFlowService.cs" id="8_xo2g2"]
[ext_resource type="Texture2D" uid="uid://c38luts5hc5fj" path="res://Artists/Art/Icons/Arrows/icon_chevron-left-rounded.png" id="9_6xpog"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXServiceProxy.cs" id="10_x7i37"]
[ext_resource type="Script" path="res://Mods/教育平台/Scripts/SearchRegister.cs" id="11_xciq5"]
[node name="工业互联网标识解析与注册" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_2tjg8")
allowCursor = true
allowInput = true
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 1920.0
offset_bottom = 1080.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.0390224, 0.0432458, 0.0516745, 1)
[node name="TextureRect" type="TextureRect" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 3.0
offset_top = 5.0
offset_right = 1923.0
offset_bottom = 1019.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_8n5qp")
stretch_mode = 6
[node name="教程Header" parent="." instance=ExtResource("3_ds640")]
visible = false
layout_mode = 0
[node name="TextureRect" type="TextureRect" parent="教程Header"]
self_modulate = Color(0.329412, 0.329412, 0.329412, 1)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -42.0
offset_top = -14.0
offset_right = 66.0
offset_bottom = 539.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_vne04")
expand_mode = 1
stretch_mode = 6
[node name="TabContainer" type="TabContainer" parent="."]
layout_mode = 2
offset_top = 4.0
offset_right = 1920.0
offset_bottom = 1076.0
size_flags_vertical = 3
theme = ExtResource("5_sn2kd")
theme_override_constants/side_margin = 128
[node name="标识注册" parent="TabContainer" instance=ExtResource("6_drcgg")]
layout_mode = 2
[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_kffxi")]
visible = false
layout_mode = 2
[node name="GraphFlow" type="Node" parent="."]
script = ExtResource("8_xo2g2")
nodes = {
0: NodePath(""),
1: NodePath(""),
2: NodePath(""),
3: NodePath(""),
4: NodePath(""),
5: NodePath(""),
6: NodePath(""),
7: NodePath(""),
8: NodePath(""),
9: NodePath(""),
10: NodePath("")
}
[node name="Return-Button" type="Button" parent="."]
layout_mode = 0
offset_top = 5.0
offset_right = 129.0
offset_bottom = 66.0
text = "返回"
icon = ExtResource("9_6xpog")
expand_icon = true
script = ExtResource("10_x7i37")
[node name="SearchRegister" type="Node" parent="." node_paths=PackedStringArray("keyLine", "valueLine", "nameLine", "idLine", "registryRecordLine", "registryButton", "registryResultLabel")]
script = ExtResource("11_xciq5")
keyLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer/keyLine")
valueLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2/valueLine")
nameLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3/nameLine")
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="pressed" from="Return-Button" to="Return-Button" method="Return"]
[editable path="教程Header"]
[editable path="TabContainer/标识注册"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/Root/Node-0"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/Node/Node1-1"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/Node/Node-1-2"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/SubNode/Node-2-1"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/SubNode/Node-2-2"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/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/StepElement4"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
[editable path="TabContainer/标识解析"]

View File

@@ -1,781 +0,0 @@
[gd_scene load_steps=20 format=3 uid="uid://bx4v3ofh4on5e"]
[ext_resource type="Theme" uid="uid://dokwscirps6nt" path="res://Artists/Themes/Factory_Theme.tres" id="1_3wvk5"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/RuntimeNode.cs" id="2_xptn7"]
[ext_resource type="PackedScene" uid="uid://fybiswo7gltf" path="res://Mods/工业数据采集与分析应用分享/Templates/解析节点.tscn" id="3_o1m1n"]
[ext_resource type="PackedScene" uid="uid://n3v64dkgpccy" path="res://Mods/工业数据采集与分析应用分享/Templates/手动注册与更新标识.tscn" id="4_ruskv"]
[ext_resource type="PackedScene" uid="uid://c0p5mw7gbwwk6" path="res://Mods/工业数据采集与分析应用分享/_Deprecated/生产模拟.tscn" id="5_fxufp"]
[ext_resource type="PackedScene" uid="uid://dv3ugwbqu3t77" path="res://Mods/工业数据采集与分析应用分享/Templates/更新温湿度传感器的标识.tscn" id="6_2rvf3"]
[ext_resource type="Script" path="res://Temp/ReadyDebug.cs" id="7_hlgub"]
[ext_resource type="PackedScene" uid="uid://dmk2vf7jamysi" path="res://Mods/工业数据采集与分析应用分享/Templates/StepElement.tscn" id="8_m8q0w"]
[ext_resource type="Texture2D" uid="uid://dytwon7lxa5gw" path="res://Artists/Art/Icons/Icon_Registry_Editor.png" id="9_y30n4"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="10_vml30"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/OpenPath.cs" id="11_0w0p0"]
[ext_resource type="Texture2D" uid="uid://bgwx8t6ugami" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/1-6分钟快速理解Modbus通信协议-480P 清晰-AVC.Cover.jpg" id="12_lmvg6"]
[ext_resource type="Texture2D" uid="uid://cjk4xep1wgmul" path="res://Artists/Art/Icons/Icon_ic_baseline-video-file.png" id="13_h0iu4"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/OpenUrl.cs" id="14_skh1p"]
[ext_resource type="Texture2D" uid="uid://gtho2m1sv43b" path="res://Artists/Art/Icons/material-symbols_update.png" id="15_asl0l"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tkumr"]
[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("VBoxContainer/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("VBoxContainer/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("VBoxContainer/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("VBoxContainer/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("VBoxContainer/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("VBoxContainer/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")
}
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i5ei2"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
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="ColorRect"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_3wvk5")
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="HBoxContainer" parent="Animations"]
layout_mode = 2
theme_override_constants/separation = 16
alignment = 1
script = ExtResource("2_xptn7")
[node name="AnimationPlayer" type="AnimationPlayer" parent="Animations/Start"]
reset_on_save = false
method_call_mode = 1
libraries = {
"": SubResource("AnimationLibrary_efxtn")
}
[node name="VBoxContainer" type="VBoxContainer" parent="Animations/Start"]
layout_mode = 2
[node name="Root" type="HBoxContainer" parent="Animations/Start/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node-0" parent="Animations/Start/VBoxContainer/Root" instance=ExtResource("3_o1m1n")]
layout_mode = 2
size_flags_vertical = 3
[node name="Node" type="HBoxContainer" parent="Animations/Start/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node1-1" parent="Animations/Start/VBoxContainer/Node" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/Node/Node1-1/Icon" index="0"]
text = "S"
[node name="Name" parent="Animations/Start/VBoxContainer/Node/Node1-1" index="1"]
text = "二级节点"
[node name="Node-1-2" parent="Animations/Start/VBoxContainer/Node" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/Node/Node-1-2/Icon" index="0"]
text = "S"
[node name="Name" parent="Animations/Start/VBoxContainer/Node/Node-1-2" index="1"]
text = "二级节点"
[node name="SubNode" type="HBoxContainer" parent="Animations/Start/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node-2-1" parent="Animations/Start/VBoxContainer/SubNode" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/SubNode/Node-2-1/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/VBoxContainer/SubNode/Node-2-1" index="1"]
text = "企业节点"
[node name="Node-2-2" parent="Animations/Start/VBoxContainer/SubNode" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/SubNode/Node-2-2/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/VBoxContainer/SubNode/Node-2-2" index="1"]
text = "企业节点"
[node name="Node-2-3" parent="Animations/Start/VBoxContainer/SubNode" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/SubNode/Node-2-3/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/VBoxContainer/SubNode/Node-2-3" index="1"]
text = "企业节点"
[node name="VBoxContainer2" type="VBoxContainer" parent="Animations/Start"]
layout_mode = 2
[node name="Label" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "用户:查询88.123.99的信息"
[node name="Label2" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "向顶级节点查询88.123.99"
[node name="HSeparator" type="HSeparator" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
[node name="Label3" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "顶级节点返回数据类型为HS_SITE.PREFIX的IP地址"
[node name="Label4" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "通过二级节点查询88.123.99"
[node name="Label5" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "返回数据类型为HS_SITE的地址"
[node name="HSeparator2" type="HSeparator" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
[node name="Label6" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "查询:88.123.99/MyABC"
[node name="Label7" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "返回标识的相关属性信息"
[node name="手动注册与更新标识" parent="Animations" instance=ExtResource("4_ruskv")]
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="生产模拟" parent="Animations" instance=ExtResource("5_fxufp")]
visible = false
layout_mode = 2
[node name="更新温湿度传感器的标识" parent="Animations" instance=ExtResource("6_2rvf3")]
visible = false
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
offset_left = 64.0
offset_top = 461.0
offset_right = 1864.0
offset_bottom = 1018.0
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer"]
visible = false
layout_mode = 2
theme_override_constants/separation = 32
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
script = ExtResource("7_hlgub")
[node name="HFlowContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="StepElement2" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="0"]
text = "注册标识"
[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="5"]
bbcode_enabled = true
text = "通过二级节点向顶级节点发送数据"
[node name="32493" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/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 = 72.0
step = 1.0
page = 72.0
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label2" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识码"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer2"]
layout_mode = 2
text = "国家级.重庆市.厂家/你的标识"
vertical_alignment = 2
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
size_flags_horizontal = 3
text = "88.164.143.4154/S84SF1E"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "设备名称:"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "温湿度传感器"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "设备Id
"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer3"]
layout_mode = 2
size_flags_horizontal = 3
text = "t.h.sensor_01"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator4" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer5"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值数量"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer5"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "自动"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator5" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer6" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer6"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer6"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "自动"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator3" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer4"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "注册记录"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer4"]
layout_mode = 2
size_flags_horizontal = 3
text = "registry-t.h.sensor_01-S84SF1E"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator6" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="注册标识" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
text = "注册标识"
icon = ExtResource("9_y30n4")
expand_icon = true
[node name="StepElement9" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="0"]
text = "手动注册与更新标识"
[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="5"]
text = "在这里手动添加数据"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识码:"
[node name="keyLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "88.123.99/02020220225008"
placeholder_text = "88.123.99/XXXXXXX"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值:"
[node name="valueLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2"]
layout_mode = 2
size_flags_horizontal = 3
text = "myProduct"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识名:"
[node name="nameLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3"]
layout_mode = 2
size_flags_horizontal = 3
text = "我的产品"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识Id:"
[node name="idLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4"]
layout_mode = 2
size_flags_horizontal = 3
text = "my.device"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "注册记录:"
[node name="registryRecordLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5"]
layout_mode = 2
size_flags_horizontal = 3
text = "registry.my.device.record-001"
caret_blink = true
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 = "手动注册和更新"
icon = ExtResource("9_y30n4")
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("8_m8q0w")]
layout_mode = 2
[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"]
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="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="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "准备好了么?"
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
text = "一键配置并打开环境"
icon = ExtResource("10_vml30")
expand_icon = true
script = ExtResource("11_0w0p0")
path = "EXE"
[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("12_lmvg6")
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("13_h0iu4")
script = ExtResource("14_skh1p")
url = "https://b23.tv/8YPP7fU"
[node name="StepElement5" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[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="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
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="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("8_m8q0w")]
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("8_m8q0w")]
custom_minimum_size = Vector2(512, 512)
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="0"]
text = "获取数据"
[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="5"]
text = "当前传感器数据"
[node name="32494" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/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="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="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 8
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer/VBoxContainer"]
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="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
text = "提交标识更新数据"
icon = ExtResource("15_asl0l")
expand_icon = true
[node name="Button2" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
text = "打开详细信息"
expand_icon = true
[connection signal="OnDisable" from="Animations/Start" to="Animations/Start/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="Animations/Start" to="Animations/Start/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="Animations/Start" to="Animations/Start" method="Enable"]
[connection signal="hidden" from="Animations/Start" to="Animations/Start" method="Disable"]
[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/StepElement/Button" to="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/Button" method="Execute"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer/Button" to="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer/Button" method="Execute"]
[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"]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/Button2" to="Animations/更新温湿度传感器的标识/AnimationPlayer" method="play"]
[editable path="Animations/Start/VBoxContainer/Root/Node-0"]
[editable path="Animations/Start/VBoxContainer/Node/Node1-1"]
[editable path="Animations/Start/VBoxContainer/Node/Node-1-2"]
[editable path="Animations/Start/VBoxContainer/SubNode/Node-2-1"]
[editable path="Animations/Start/VBoxContainer/SubNode/Node-2-2"]
[editable path="Animations/Start/VBoxContainer/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/StepElement4"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]

View File

@@ -1,118 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://yxubv8dgqnpa"]
[ext_resource type="Texture2D" uid="uid://mfyhei8n50j0" path="res://Artists/Art/Icons/icon_gears.png" id="1_2ocw7"]
[ext_resource type="Texture2D" uid="uid://dqhcsm0j6w85j" path="res://Artists/Art/Icons/icon_material-symbols_search.png" id="2_bocj6"]
[ext_resource type="Texture2D" uid="uid://cdteo2b8x1rkv" path="res://Artists/Art/Icons/icon_tabler_select.png" id="3_lb8sd"]
[ext_resource type="PackedScene" uid="uid://cnd2ofcdx0inc" path="res://Mods/工业数据采集与分析应用分享/Templates/TrackContainer.tscn" id="4_a2vxv"]
[node name="_标识解析" type="ColorRect"]
clip_children = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="SearchLogLabel" type="RichTextLabel" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
text = ">搜索日志"
[node name="TextureRect" type="TextureRect" parent="."]
self_modulate = Color(0.113725, 0.113725, 0.113725, 1)
layout_mode = 0
offset_left = -36.0
offset_top = 269.0
offset_right = 638.0
offset_bottom = 898.0
texture = ExtResource("1_2ocw7")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_top = 64
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 32
alignment = 1
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "工业互联网标识查询"
horizontal_alignment = 1
vertical_alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(512, 0)
layout_mode = 2
size_flags_horizontal = 4
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(768, 0)
layout_mode = 2
size_flags_horizontal = 4
[node name="SearchInput" type="LineEdit" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SearchButton" type="Button" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(100, 32)
layout_mode = 2
text = "查询"
icon = ExtResource("2_bocj6")
expand_icon = true
[node name="QuickSearchButton" type="MenuButton" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(150, 0)
layout_mode = 2
text = "快速查询"
icon = ExtResource("3_lb8sd")
flat = false
expand_icon = true
[node name="PopupMenu" type="PopupMenu" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
item_count = 1
item_0/text = ""
item_0/id = 0
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
text = "未填写则查找所有条目"
horizontal_alignment = 1
vertical_alignment = 1
[node name="SearchProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer"]
visible = false
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(1280, 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="TrackContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("4_a2vxv")]
layout_mode = 2
size_flags_vertical = 3

View File

@@ -1,614 +0,0 @@
[gd_scene load_steps=28 format=3 uid="uid://cwq2llh4vrnsg"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_rnsr2"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="2_136dc"]
[ext_resource type="Texture2D" uid="uid://mfyhei8n50j0" path="res://Artists/Art/Icons/icon_gears.png" id="3_eeavf"]
[ext_resource type="Theme" uid="uid://yepsxq6dperk" path="res://Mods/MinimalUI/MinimalUI.tres" id="4_gpphu"]
[ext_resource type="Texture2D" uid="uid://bx6yl6f7ndpbr" path="res://Artists/Art/Backgrounds/ppt-background.png" id="5_1s34r"]
[ext_resource type="Texture2D" uid="uid://k3xy782w6pa0" path="res://BITKit/Art/Shapes/icon_squad_rounded-4px.png" id="6_eeqvn"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="7_dalvu"]
[ext_resource type="Texture2D" uid="uid://cqp41rmbnhtfg" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/6分钟快速理解Modbus通信协议@硬声APP.jpg" id="8_60o1p"]
[ext_resource type="Texture2D" uid="uid://cmerxcdq74b5l" path="res://Artists/Art/Icons/Ionc_save.png" id="9_l3857"]
[ext_resource type="Texture2D" uid="uid://df2ytivbngvf4" path="res://Artists/Art/Icons/icon_software.png" id="10_0ydt3"]
[ext_resource type="Texture2D" uid="uid://2qyr2fcp2a2j" path="res://Artists/Art/Icons/icon_filetype-exe.png" id="11_0r4eb"]
[ext_resource type="Texture2D" uid="uid://jscvym83h015" path="res://Artists/Art/Icons/icon_park-solid_install.png" id="12_pww4y"]
[ext_resource type="Texture2D" uid="uid://dhws1cqlkdixm" path="res://Artists/Art/Icons/icon_folder.png" id="13_w2j7y"]
[ext_resource type="Texture2D" uid="uid://cai2ch4k68eyi" path="res://Artists/Art/Icons/icon_folder-delete.png" id="14_7e8yu"]
[ext_resource type="PackedScene" uid="uid://kjagucr1ngry" path="res://Artists/Templates/RectangleData.tscn" id="15_i3dfc"]
[ext_resource type="Texture2D" uid="uid://fkd63fjc550" path="res://Artists/Art/Icons/icon_help.png" id="17_qggt8"]
[ext_resource type="Texture2D" uid="uid://c38luts5hc5fj" path="res://Artists/Art/Icons/Arrows/icon_chevron-left-rounded.png" id="18_l665t"]
[ext_resource type="Texture2D" uid="uid://bqwchhovknbro" path="res://Artists/Art/Icons/Arrows/icon_chevron-right-rounded.png" id="19_lo7qx"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8r0uu"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vv624"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cjnsr"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_y5boq"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_q3pqj"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_jj7yi"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cxqrw"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ksa7w"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0hfaj"]
[node name="工业数据采集与分析应用分享" type="VBoxContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 0
script = ExtResource("1_rnsr2")
allowCursor = true
allowInput = true
[node name="教程Header" parent="." instance=ExtResource("2_136dc")]
layout_mode = 2
[node name="Label" parent="教程Header" index="0"]
text = "温湿度数据采集"
[node name="SubViewport" type="SubViewport" parent="."]
[node name="Camera3D" type="Camera3D" parent="SubViewport"]
current = true
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
size_flags_vertical = 3
[node name="ColorRect" type="ColorRect" parent="HBoxContainer"]
clip_children = 2
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
color = Color(0.0745098, 0.0745098, 0.0745098, 1)
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/ColorRect/VBoxContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "快捷指令"
[node name="Label2" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "快捷方式在这里"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="ItemList" type="ItemList" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_8r0uu")
theme_override_styles/focus = SubResource("StyleBoxEmpty_vv624")
theme_override_styles/selected = SubResource("StyleBoxEmpty_cjnsr")
theme_override_styles/selected_focus = SubResource("StyleBoxEmpty_y5boq")
theme_override_styles/cursor = SubResource("StyleBoxEmpty_q3pqj")
theme_override_styles/cursor_unfocused = SubResource("StyleBoxEmpty_jj7yi")
auto_height = true
item_count = 5
item_0/text = "打开PPT"
item_1/text = "播放视频"
item_2/text = "一键配置环境"
item_3/text = "打开环境文件夹"
item_4/text = "扫描并连接温湿度传感器"
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/ColorRect"]
modulate = Color(0.164706, 0.164706, 0.164706, 1)
layout_mode = 0
offset_left = -66.0
offset_top = 770.0
offset_right = 190.0
offset_bottom = 1009.0
texture = ExtResource("3_eeavf")
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TabContainer" type="TabContainer" parent="HBoxContainer/VBoxContainer"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme = ExtResource("4_gpphu")
theme_override_font_sizes/font_size = 24
theme_override_styles/panel = SubResource("StyleBoxEmpty_cxqrw")
clip_tabs = false
tabs_visible = false
[node name="介绍" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer"]
layout_mode = 2
[node name="BoxContainer" type="BoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer"]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
color = Color(0.0627451, 0.0627451, 0.0627451, 1)
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("4_gpphu")
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="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect/MarginContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect/MarginContainer/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderLarge"
text = "目录"
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect/MarginContainer/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderMedium"
text = "实践一温湿度数据采集"
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
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="RichTextLabel" type="RichTextLabel" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/MarginContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
bbcode_enabled = true
text = "# 工业数据采集与分析应用分享
## 实践一:温湿度数据采集
配置温湿度传感器485+以太网转485模块+电源等
目标掌握Modbus协议、接线、查看文档等技能
步骤:查看文档+接线+现场讲解等
## 实践二:模拟量数字量采集
配置:按钮开关+4-20ma信号发生器+模拟量采集模块+电源等
目标:掌握常见传感器的数据采集等。
步骤:查看文档+接线+现场讲解+采集
## 实践三:激光雷达数据采集
配置:激光雷达(UDP)+电源等
目标:掌握非标自定义协议的设备的数据采集。
步骤:查看文档+接线+现场讲解+采集"
[node name="实战" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="温湿度数据采集(RS485)" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战"]
layout_mode = 2
[node name="Mudbus认识和学习" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)"]
layout_mode = 2
[node name="进行采集" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)"]
visible = false
layout_mode = 2
[node name="查看设备资料" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
layout_mode = 2
[node name="接线" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="使用Mudbus Pull工具进行测试" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="使用串口服务器将ModbusRTU转为Modbus TCP" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="接入SCADA" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="模拟量采集" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战"]
visible = false
layout_mode = 2
[node name="激光雷达数据采集(UDP)" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战"]
visible = false
layout_mode = 2
[node name="现场讲解" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="TabContainer2" type="TabContainer" parent="HBoxContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxEmpty_ksa7w")
[node name="查看文档" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 128
theme_override_constants/margin_top = 128
theme_override_constants/margin_right = 128
theme_override_constants/margin_bottom = 128
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档"]
visible = false
layout_mode = 2
texture = ExtResource("5_1s34r")
expand_mode = 1
stretch_mode = 4
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档"]
layout_mode = 2
theme_override_constants/separation = 64
alignment = 1
[node name="ColorRect" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer"]
self_modulate = Color(0, 0, 0, 0.501961)
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("6_eeqvn")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect"]
layout_mode = 2
offset_left = 77.0
offset_right = 293.0
offset_bottom = 591.0
theme_override_constants/separation = 16
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderMedium"
text = "这是你你需要的课件
可以在这里快速打开"
vertical_alignment = 1
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
text = "打开PPT"
icon = ExtResource("7_dalvu")
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderMedium"
text = "还有你需要的视频"
vertical_alignment = 1
[node name="RichTextLabel" type="RichTextLabel" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
bbcode_enabled = true
text = "[url=https://b23.tv/8YPP7fU]6分钟学会modbus通讯协议[/url]"
fit_content = true
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
texture = ExtResource("8_60o1p")
expand_mode = 2
stretch_mode = 5
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
text = "保存视频到本地"
icon = ExtResource("9_l3857")
[node name="NinePatchRect" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer"]
self_modulate = Color(0, 0, 0, 0.501961)
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("6_eeqvn")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 6
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -174.5
offset_top = -188.0
offset_right = 174.5
offset_bottom = 188.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 16
alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/HBoxContainer"]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
texture = ExtResource("10_0ydt3")
expand_mode = 3
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/HBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderLarge"
text = "一键安装mudbus全家桶"
[node name="ItemList" type="ItemList" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_override_font_sizes/font_size = 24
theme_override_styles/panel = SubResource("StyleBoxEmpty_0hfaj")
select_mode = 1
allow_rmb_select = true
auto_height = true
item_count = 4
fixed_icon_size = Vector2i(32, 32)
item_0/text = "Mudbuspoll"
item_0/icon = ExtResource("11_0r4eb")
item_1/text = "NetAssists"
item_1/icon = ExtResource("11_0r4eb")
item_2/text = "UartAssist"
item_2/icon = ExtResource("11_0r4eb")
item_3/text = "cnfs"
item_3/icon = ExtResource("11_0r4eb")
[node name="Label3" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderSmall"
text = "装机必备"
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "Mudbuspoll"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton2" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "NetAssists"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton3" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "UartAssist"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton4" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "cnfs"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="Button6" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
text = "一键所需安装"
icon = ExtResource("12_pww4y")
[node name="Label4" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderSmall"
text = "推荐安装"
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "vscode"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton2" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "abb studio"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton3" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "西门子PLC"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton4" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "tcping"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "给我全装上"
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "只安装已勾选的"
[node name="Button3" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "已勾选的安装+未勾选的卸载"
[node name="Button4" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "全部卸载"
[node name="Button5" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
text = "一键安装所有环境"
icon = ExtResource("12_pww4y")
[node name="NinePatchRect2" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer"]
self_modulate = Color(0, 0, 0, 0.501961)
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("6_eeqvn")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="VBoxContainer3" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -143.5
offset_top = -295.5
offset_right = 143.5
offset_bottom = 295.5
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 16
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "当然了,别忘了进入环境"
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
text = "打开环境文件夹"
icon = ExtResource("13_w2j7y")
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "如果你想移除环境,可以"
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
text = "移除环境文件夹"
icon = ExtResource("14_7e8yu")
[node name="温湿度数据采集" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer2"]
visible = false
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="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "传感器数据"
[node name="CenterContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 0
[node name="RectangleData" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer/CenterContainer" instance=ExtResource("15_i3dfc")]
layout_mode = 2
[node name="RectangleData2" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer/CenterContainer" instance=ExtResource("15_i3dfc")]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/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="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
alignment = 2
[node name="Button3" type="Button" parent="HBoxContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "帮助与提示"
icon = ExtResource("17_qggt8")
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "上一步"
icon = ExtResource("18_l665t")
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "下一步"
icon = ExtResource("19_lo7qx")
[editable path="教程Header"]
[editable path="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer/CenterContainer/RectangleData2"]

View File

@@ -1,259 +0,0 @@
[gd_scene load_steps=14 format=3 uid="uid://cgocposhaflgj"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="1_1cv3j"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_67mqa"]
[ext_resource type="Texture2D" uid="uid://mfyhei8n50j0" path="res://Artists/Art/Icons/icon_gears.png" id="2_2g7g1"]
[ext_resource type="Theme" uid="uid://yepsxq6dperk" path="res://Mods/MinimalUI/MinimalUI.tres" id="3_f6aoa"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="4_20bfy"]
[ext_resource type="PackedScene" uid="uid://kjagucr1ngry" path="res://Artists/Templates/RectangleData.tscn" id="5_p4wj4"]
[ext_resource type="Texture2D" uid="uid://janojpok4ssi" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/激光雷达的扫描图形.png" id="6_ok5xs"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_45lqy"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_h4jgh"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_v8w1o"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_enfxp"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wqqb7"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_yu20n"]
[node name="激光雷达数据采集" type="VBoxContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_67mqa")
allowCursor = true
allowInput = true
[node name="教程Header" parent="." instance=ExtResource("1_1cv3j")]
layout_mode = 2
[node name="Label" parent="教程Header" index="0"]
text = "激光雷达数据采集"
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
size_flags_vertical = 3
[node name="ColorRect" type="ColorRect" parent="HBoxContainer"]
clip_children = 2
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
color = Color(0.0745098, 0.0745098, 0.0745098, 1)
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/ColorRect/VBoxContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "快捷指令"
[node name="Label2" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "快捷方式在这里"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="ItemList" type="ItemList" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_45lqy")
theme_override_styles/focus = SubResource("StyleBoxEmpty_h4jgh")
theme_override_styles/selected = SubResource("StyleBoxEmpty_v8w1o")
theme_override_styles/selected_focus = SubResource("StyleBoxEmpty_enfxp")
theme_override_styles/cursor = SubResource("StyleBoxEmpty_wqqb7")
theme_override_styles/cursor_unfocused = SubResource("StyleBoxEmpty_yu20n")
auto_height = true
item_count = 4
item_0/text = "打开PPT"
item_1/text = "打开激光雷达使用手册"
item_2/text = "打开网络调试工具"
item_3/text = "加载随机预设"
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/ColorRect"]
modulate = Color(0.164706, 0.164706, 0.164706, 1)
layout_mode = 0
offset_left = -66.0
offset_top = 770.0
offset_right = 190.0
offset_bottom = 1009.0
texture = ExtResource("2_2g7g1")
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label3" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "激光雷达传感器数据采集预设"
[node name="Label" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "激光雷达的相关文档在这里"
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="Button" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_f6aoa")
text = "打开PPT"
icon = ExtResource("4_20bfy")
[node name="Button2" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_f6aoa")
text = "激光雷达使用手册"
icon = ExtResource("4_20bfy")
[node name="Button3" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_f6aoa")
text = "打开网络调试工具"
icon = ExtResource("4_20bfy")
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="Label2" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "激光雷达传感器数据采集预设"
[node name="GridContainer" type="GridContainer" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/h_separation = 16
theme_override_constants/v_separation = 16
columns = 8
[node name="Button" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button2" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button3" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button4" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button5" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button6" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button7" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="HSeparator3" type="HSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="HBoxContainer2" type="HBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
[node name="Label4" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "当前激光雷达的数据数据"
[node name="RectangleData" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData" index="1"]
text = "ranges"
[node name="Label2" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData/MarginContainer" index="0"]
text = "256"
[node name="RectangleData2" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData2" index="1"]
text = "scan_time"
[node name="Label2" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData2/MarginContainer" index="0"]
text = "0.06700015"
[node name="RectangleData3" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="RectangleData4" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="VSeparator" type="VSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label4" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "当前图形"
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer2"]
layout_mode = 2
texture = ExtResource("6_ok5xs")
stretch_mode = 4
[editable path="教程Header"]
[editable path="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData"]
[editable path="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData2"]

View File

@@ -1,890 +0,0 @@
[gd_scene load_steps=16 format=3 uid="uid://c0p5mw7gbwwk6"]
[ext_resource type="VideoStream" path="res://Mods/工业数据采集与分析应用分享/Arts/Videos/生产过程模拟.ogv" id="1_n53dq"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/RuntimeNode.cs" id="2_isay2"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/ProductionAnimation.cs" id="3_6smad"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mmg2t"]
content_margin_left = 8.0
content_margin_right = 8.0
bg_color = Color(0.92549, 0.92549, 0.92549, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_631sk"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
bg_color = Color(0.862745, 0.494118, 0.0862745, 1)
[sub_resource type="Animation" id="Animation_ehfn1"]
resource_name = "Start"
length = 6.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("0:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("1:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"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("2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2),
"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("3:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 4),
"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("4:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("ProgressBar:value")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 100.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0nmby"]
_data = {
"Start": SubResource("Animation_ehfn1")
}
[sub_resource type="Animation" id="Animation_jqadl"]
resource_name = "Start"
length = 6.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, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [55.0, 100.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("2:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mqq75"]
_data = {
"Start": SubResource("Animation_jqadl")
}
[sub_resource type="Animation" id="Animation_dagmw"]
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, 10),
"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("1:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"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("2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3),
"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("3:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 5),
"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("4:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 7),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("5:visible")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_t4po5"]
_data = {
"Start": SubResource("Animation_dagmw")
}
[sub_resource type="Animation" id="Animation_f1esw"]
resource_name = "Start"
length = 8.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, 6.5, 8),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 90.0, 100.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_br22x"]
_data = {
"Start": SubResource("Animation_f1esw")
}
[sub_resource type="Animation" id="Animation_b80x7"]
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, 4, 10),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 80.0, 90.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("ProgressBar:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2),
"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("3:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0dofc"]
_data = {
"Start": SubResource("Animation_b80x7")
}
[node name="生产模拟" type="ReferenceRect"]
offset_right = 1368.0
offset_bottom = 384.0
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="HBoxContainer"]
custom_minimum_size = Vector2(384, 256)
layout_mode = 2
stream = ExtResource("1_n53dq")
autoplay = true
expand = true
script = ExtResource("2_isay2")
[node name="生产步骤" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label2" type="Label" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "生产步骤"
[node name="Button" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "原材料出库"
[node name="Button4" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "底衬压装"
[node name="Button2" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "笔记本装配"
[node name="Button3" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "UV打印"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/生产步骤"]
layout_mode = 2
size_flags_vertical = 3
[node name="Button5" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "交付/入库"
[node name="生产过程" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="HBoxContainer/生产过程"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "生产过程"
[node name="TabContainer" type="TabContainer" parent="HBoxContainer/生产过程"]
layout_mode = 2
size_flags_vertical = 3
clip_tabs = false
tabs_visible = false
[node name="Default" type="Label" parent="HBoxContainer/生产过程/TabContainer"]
visible = false
layout_mode = 2
text = "在右侧列表中点击需要的指令"
horizontal_alignment = 1
vertical_alignment = 1
[node name="原材料出库" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("4"), NodePath("5")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
min_value = 28.3333
value = 28.3333
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "出库笔记本壳"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "出库笔记本纸张"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "出库笔记本卡扣"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "运输到装配区"
[node name="4" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "放在装配区等待装配"
[node name="5" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="底衬压装" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("4"), NodePath("5"), NodePath("6"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
value = 6.0
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "出库衬套"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "运送到冲压区"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "放置在冲压区"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "冲压"
[node name="4" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "取回衬套"
[node name="5" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "运输到装配区"
[node name="6" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "放在装配区"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="笔记本装配" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
min_value = 55.0
value = 59.5
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
text = "装配笔记本壳"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
text = "装配卡扣"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
visible = false
layout_mode = 2
text = "装配衬套"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
text = "装配纸张"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="UV打印" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("4"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
value = 8.31
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "取回装配笔记本"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "运输到打印区"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "放置笔记本到打印区"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "开始打印"
[node name="4" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "取回打印笔记本"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="入库" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
value = 12.0
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
size_flags_vertical = 1
text = "运输到交付区"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
size_flags_vertical = 1
text = "放置笔记本到交付区"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="VSeparator" type="VSeparator" parent="HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="注册操作" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label2" type="Label" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "注册操作"
[node name="Button" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "创建订单"
[node name="Button4" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "注册订单标识"
[node name="Button2" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "注册设备标识"
[node name="Button3" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "注册环境标识"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/注册操作"]
layout_mode = 2
size_flags_vertical = 3
[node name="Button5" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "对当前操作抛出异常"
[node name="注册过程" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="HBoxContainer/注册过程"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "生产过程"
[node name="TabContainer" type="TabContainer" parent="HBoxContainer/注册过程"]
layout_mode = 2
size_flags_vertical = 3
tabs_visible = false
[node name="Default" type="Label" parent="HBoxContainer/注册过程/TabContainer"]
layout_mode = 2
text = "在右侧列表中点击需要的指令"
horizontal_alignment = 1
vertical_alignment = 1
[node name="创建订单" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
layout_mode = 2
min_value = 28.3333
value = 28.3333
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
layout_mode = 2
text = "正在创建订单"
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_631sk")
text = "已创建标识为88.123.64/20230704170401订单"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
text = "正在生成订单号"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_631sk")
text = "已生成订单号:20230704170401"
[node name="4" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已创建订单并下发到MES系统"
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
libraries = {
"": SubResource("AnimationLibrary_0nmby")
}
[node name="注册订单标识" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
layout_mode = 2
min_value = 55.0
value = 55.0
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
layout_mode = 2
text = "正在请求注册订单标识"
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_631sk")
text = "已提交订单号20230704170401"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
visible = false
layout_mode = 2
text = "正在等待返回提交结果"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "订单已注册到标识"
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
libraries = {
"": SubResource("AnimationLibrary_mqq75")
}
[node name="注册设备标识" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
layout_mode = 2
text = "正在注册参与生产的设备"
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
layout_mode = 2
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册装配机械臂SR7C1L"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册AGV电流与电量"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册AGV机械臂"
[node name="4" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册SR夹爪"
[node name="5" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已注册参与生产的设备"
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
libraries = {
"": SubResource("AnimationLibrary_t4po5")
}
[node name="注册环境标识" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
layout_mode = 2
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在连接到传感器"
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "已获取温度:42℃"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "已获取湿度:50%"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在提交温湿度标识到解析节点"
[node name="4" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已提交温湿度数据到解析节点"
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
libraries = {
"": SubResource("AnimationLibrary_br22x")
}
[node name="对当前操作抛出异常" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
layout_mode = 2
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
layout_mode = 2
size_flags_vertical = 1
text = "正在提交数据到标识解析节点..."
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
visible = false
layout_mode = 2
size_flags_vertical = 1
theme_type_variation = &"AccentBox"
text = "提交失败,正在自动校正数据..."
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
visible = false
layout_mode = 2
size_flags_vertical = 1
text = "正在提交数据到标识解析节点..."
[node name="4" type="RichTextLabel" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"ErrorBox"
bbcode_enabled = true
text = "[b]Oops[/b]
我们尝试了自动纠错与修正,
但仍然提交失败
你可以手动提交数据到解析节点"
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
libraries = {
"": SubResource("AnimationLibrary_0dofc")
}
[connection signal="OnDisable" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="stop"]
[connection signal="OnEnable" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="play"]
[connection signal="draw" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="Enable"]
[connection signal="finished" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="play"]
[connection signal="hidden" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="Disable"]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [1]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button4" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [2]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button2" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [3]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button3" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [4]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button5" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab"]
[connection signal="draw" from="HBoxContainer/生产过程/TabContainer/UV打印" to="HBoxContainer/生产过程/TabContainer/UV打印" method="Enable"]
[connection signal="hidden" from="HBoxContainer/生产过程/TabContainer/UV打印" to="HBoxContainer/生产过程/TabContainer/UV打印" method="Disable"]
[connection signal="draw" from="HBoxContainer/生产过程/TabContainer/入库" to="HBoxContainer/生产过程/TabContainer/入库" method="Enable"]
[connection signal="hidden" from="HBoxContainer/生产过程/TabContainer/入库" to="HBoxContainer/生产过程/TabContainer/入库" method="Disable"]
[connection signal="pressed" from="HBoxContainer/注册操作/Button" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [1]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button4" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [2]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button2" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [3]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button3" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [4]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button5" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [5]]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/注册订单标识/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/注册订单标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/注册订单标识" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/创建订单" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" method="Disable"]

View File

@@ -1,133 +0,0 @@
[gd_scene load_steps=31 format=3 uid="uid://0r070e44ohdv"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_SearchService.cs" id="1_6wrj8"]
[ext_resource type="Script" path="res://BITKit/Scripts/Resource/StringResource.cs" id="2_7vxuh"]
[ext_resource type="PackedScene" uid="uid://dghty7km181mc" path="res://Mods/工业数据采集与分析应用分享/Templates/关联标识.tscn" id="3_stj0i"]
[ext_resource type="PackedScene" uid="uid://42locm7i2wvy" path="res://Mods/工业数据采集与分析应用分享/Templates/标识引用模板.tscn" id="4_rgreg"]
[ext_resource type="PackedScene" uid="uid://cccx8fmmfttth" path="res://Mods/工业数据采集与分析应用分享/Templates/标识数据模板.tscn" id="5_osv75"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_THService.cs" id="6_7cq43"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/温湿度Reader.cs" id="7_tx46b"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/TemplateBuilder/TemplateBuilder.cs" id="8_pjjth"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_TemplateResource.cs" id="9_cr8hr"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/Form/FormBuilder.cs" id="10_l8xqp"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_TemplateWeaver.cs" id="11_iwse4"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_RegisterWeaver.cs" id="12_nhyfw"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_RegisterDB.cs" id="13_7qoua"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegister.cs" id="14_ehrl5"]
[ext_resource type="Resource" uid="uid://cgk1wmiqqedmi" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度传感器/温湿度传感器.tres" id="15_nfip6"]
[ext_resource type="Resource" uid="uid://b38onsp3c3jem" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度/温度.tres" id="16_r5dig"]
[ext_resource type="Resource" uid="uid://d3xam2no2uaas" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度/湿度.tres" id="17_h4yly"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Temp/生成温湿度.cs" id="18_b1euy"]
[ext_resource type="Script" path="res://BITKit/Scripts/Quest/QuestService.cs" id="19_xn641"]
[ext_resource type="Script" path="res://BITKit/Scripts/ECS/Core/Entity.cs" id="20_pawcj"]
[ext_resource type="Script" path="res://BITKit/Scripts/Quest/QuestComponent.cs" id="21_2b2ho"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Quest/TemplateCondition.cs" id="22_vdbrc"]
[sub_resource type="Resource" id="Resource_0tkg4"]
script = ExtResource("2_7vxuh")
value = "Panel"
[sub_resource type="Resource" id="Resource_gckd0"]
script = ExtResource("9_cr8hr")
[sub_resource type="Resource" id="Resource_0cbl3"]
script = ExtResource("9_cr8hr")
[sub_resource type="Resource" id="Resource_0ksfr"]
script = ExtResource("11_iwse4")
templateResource = SubResource("Resource_0cbl3")
addFieldsButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
templateBuilderPath = NodePath("..")
templateNameEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/templateName-edit")
saveTemplateNameButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/save_name-button")
deleteTemplateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/deleteTemplate-button")
[sub_resource type="Resource" id="Resource_mdhxq"]
script = ExtResource("9_cr8hr")
[sub_resource type="Resource" id="Resource_0enmn"]
script = ExtResource("12_nhyfw")
handleEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/LineEdit")
generateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/Button")
addReferenceButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
referenceEditBuilderPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Reference-Layout")
templateBuilderPath = NodePath("..")
[sub_resource type="Resource" id="Resource_0ef5a"]
script = ExtResource("13_7qoua")
[sub_resource type="Resource" id="Resource_c648p"]
script = ExtResource("9_cr8hr")
[node name="标识注册与解析_弃用" type="Node"]
[node name="_deprecated" type="Node" parent="."]
process_mode = 4
[node name="标识搜索服务" type="Node" parent="_deprecated"]
script = ExtResource("1_6wrj8")
searchButtonVariation = SubResource("Resource_0tkg4")
valueTemplate = ExtResource("3_stj0i")
referenceTemplate = ExtResource("4_rgreg")
categoryTemplate = ExtResource("5_osv75")
searchCandidateContainer = null
searchEditPadding = null
handleLabel = null
createTimeLabel = null
updateTimeLabel = null
valueContainer = null
referenceContainer = null
[node name="温湿度标识更新服务" type="Node" parent="_deprecated"]
script = ExtResource("6_7cq43")
currentUpdateMode = 3
[node name="温湿度传感器Reader" type="Node" parent="_deprecated"]
script = ExtResource("7_tx46b")
interval = 1000
ip = null
port = null
humidity = null
temperature = null
[node name="标识模板生成器" type="Node" parent="_deprecated"]
script = ExtResource("8_pjjth")
template = SubResource("Resource_gckd0")
[node name="FormBuilder" type="Node" parent="_deprecated/标识模板生成器"]
script = ExtResource("10_l8xqp")
formWeaver = SubResource("Resource_0ksfr")
[node name="标识模板注册器" type="Node" parent="_deprecated"]
script = ExtResource("8_pjjth")
template = SubResource("Resource_mdhxq")
[node name="FormBuilder" type="Node" parent="_deprecated/标识模板注册器"]
script = ExtResource("10_l8xqp")
formWeaver = SubResource("Resource_0enmn")
formDBProvider = SubResource("Resource_0ef5a")
[node name="自动注册标识" type="Node" parent="_deprecated"]
script = ExtResource("14_ehrl5")
regResources = Array[Object]([ExtResource("15_nfip6"), ExtResource("16_r5dig"), ExtResource("17_h4yly")])
[node name="温湿度数据生成" type="Node" parent="_deprecated"]
script = ExtResource("18_b1euy")
handle = null
count = 256
[node name="模拟生产任务服务" type="Node" parent="_deprecated"]
script = ExtResource("19_xn641")
[node name="注册订单信息" type="Node" parent="_deprecated/模拟生产任务服务"]
script = ExtResource("20_pawcj")
[node name="Quest" type="Node" parent="_deprecated/模拟生产任务服务/注册订单信息"]
script = ExtResource("21_2b2ho")
QuestName = "注册订单信息"
QuestCompleted = null
[node name="Condition" type="Node" parent="_deprecated/模拟生产任务服务/注册订单信息"]
script = ExtResource("22_vdbrc")
templateResource = SubResource("Resource_c648p")
templateName = "订单信息"