修改config
This commit is contained in:
		@@ -110,7 +110,7 @@ namespace CanFly.Canvas.Shape
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 是否填充多边形。使用:select_fill_color 或 fill_color 填充。
 | 
			
		||||
        /// 是否填充多边形 使用:select_fill_color 或 fill_color 填充 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public bool fill = false;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								CanFly.Canvas/UI/FlyCanvas.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								CanFly.Canvas/UI/FlyCanvas.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class FlyCanvas
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        ///// <summary> 
 | 
			
		||||
        ///// 清理所有正在使用的资源。
 | 
			
		||||
        ///// 清理所有正在使用的资源 
 | 
			
		||||
        ///// </summary>
 | 
			
		||||
        ///// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        ///// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        //protected override void Dispose(bool disposing)
 | 
			
		||||
        //{
 | 
			
		||||
        //    if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -1704,9 +1704,9 @@ namespace CanFly.Canvas.UI
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								CanFly/Properties/Resources.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								CanFly/Properties/Resources.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -1,10 +1,10 @@
 | 
			
		||||
//------------------------------------------------------------------------------
 | 
			
		||||
// <auto-generated>
 | 
			
		||||
//     此代码由工具生成。
 | 
			
		||||
//     此代码由工具生成 
 | 
			
		||||
//     运行时版本:4.0.30319.42000
 | 
			
		||||
//
 | 
			
		||||
//     对此文件的更改可能会导致不正确的行为,并且如果
 | 
			
		||||
//     重新生成代码,这些更改将会丢失。
 | 
			
		||||
//     重新生成代码,这些更改将会丢失 
 | 
			
		||||
// </auto-generated>
 | 
			
		||||
//------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
@@ -13,12 +13,12 @@ namespace XKRS.CanFly.Properties {
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    ///   一个强类型的资源类,用于查找本地化的字符串等。
 | 
			
		||||
    ///   一个强类型的资源类,用于查找本地化的字符串等 
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    // 此类是由 StronglyTypedResourceBuilder
 | 
			
		||||
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
 | 
			
		||||
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的 
 | 
			
		||||
    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
 | 
			
		||||
    // (以 /str 作为命令选项),或重新生成 VS 项目。
 | 
			
		||||
    // (以 /str 作为命令选项),或重新生成 VS 项目 
 | 
			
		||||
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
 | 
			
		||||
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
			
		||||
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
 | 
			
		||||
@@ -33,7 +33,7 @@ namespace XKRS.CanFly.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   返回此类使用的缓存的 ResourceManager 实例。
 | 
			
		||||
        ///   返回此类使用的缓存的 ResourceManager 实例 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
 | 
			
		||||
        internal static global::System.Resources.ResourceManager ResourceManager {
 | 
			
		||||
@@ -48,7 +48,7 @@ namespace XKRS.CanFly.Properties {
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   重写当前线程的 CurrentUICulture 属性,对
 | 
			
		||||
        ///   使用此强类型资源类的所有资源查找执行重写。
 | 
			
		||||
        ///   使用此强类型资源类的所有资源查找执行重写 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
 | 
			
		||||
        internal static global::System.Globalization.CultureInfo Culture {
 | 
			
		||||
@@ -61,7 +61,7 @@ namespace XKRS.CanFly.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap Close {
 | 
			
		||||
            get {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								CanFly/UI/GuidePanel/CtrlTitleBar.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								CanFly/UI/GuidePanel/CtrlTitleBar.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class CtrlTitleBar
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								CanFly/UI/GuidePanel/GuideCircleCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								CanFly/UI/GuidePanel/GuideCircleCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class GuideCircleCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								CanFly/UI/GuidePanel/GuideHeightCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								CanFly/UI/GuidePanel/GuideHeightCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class GuideHeightCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class GuideLineCircleCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								CanFly/UI/GuidePanel/GuideLineCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								CanFly/UI/GuidePanel/GuideLineCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class GuideLineCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,12 @@
 | 
			
		||||
    <Platforms>AnyCPU;x64</Platforms>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Remove="Halcon\**" />
 | 
			
		||||
    <EmbeddedResource Remove="Halcon\**" />
 | 
			
		||||
    <None Remove="Halcon\**" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -24,10 +30,6 @@
 | 
			
		||||
		<ProjectReference Include="..\CanFly.Canvas\CanFly.Canvas.csproj" />
 | 
			
		||||
	</ItemGroup>
 | 
			
		||||
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
		<Folder Include="Halcon\" />
 | 
			
		||||
	</ItemGroup>
 | 
			
		||||
 | 
			
		||||
	<ItemGroup>
 | 
			
		||||
	  <PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
 | 
			
		||||
	  <PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ namespace DH.Devices.Devices
 | 
			
		||||
        public virtual bool isEnabled { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
        [Category("采图模式")]
 | 
			
		||||
        [Description("是否连续模式。true:连续模式采图;false:触发模式采图")]
 | 
			
		||||
        [Description("是否连续模式 true:连续模式采图;false:触发模式采图")]
 | 
			
		||||
        [DisplayName("连续模式")]
 | 
			
		||||
        public bool IsContinueMode { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
@@ -31,7 +31,7 @@ namespace DH.Devices.Devices
 | 
			
		||||
        public ImageFormat ImageFormat { get; set; } = ImageFormat.Jpeg;
 | 
			
		||||
 | 
			
		||||
        [Category("采图模式")]
 | 
			
		||||
        [Description("是否硬触发模式。true:硬触发;false:软触发")]
 | 
			
		||||
        [Description("是否硬触发模式 true:硬触发;false:软触发")]
 | 
			
		||||
        [DisplayName("硬触发")]
 | 
			
		||||
        public bool IsHardwareTrigger { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
@@ -45,7 +45,7 @@ namespace DH.Devices.Devices
 | 
			
		||||
      //  public StreamFormat dvpStreamFormat = dvpStreamFormat.;
 | 
			
		||||
     
 | 
			
		||||
        [Category("采图模式")]
 | 
			
		||||
        [Description("是否传感器直接硬触发。true:传感器硬触发,不通过软件触发;false:通过软件触发IO 的硬触发模式")]
 | 
			
		||||
        [Description("是否传感器直接硬触发 true:传感器硬触发,不通过软件触发;false:通过软件触发IO 的硬触发模式")]
 | 
			
		||||
        [DisplayName("是否传感器直接硬触发")]
 | 
			
		||||
        public bool IsDirectHardwareTrigger { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,10 @@ using System.Text.RegularExpressions;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Drawing.Design;
 | 
			
		||||
using AntdUI;
 | 
			
		||||
 | 
			
		||||
using System.Text.Json.Serialization;
 | 
			
		||||
using static DH.Commons.Enums.EnumHelper;
 | 
			
		||||
using System.Collections.ObjectModel;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace DH.Commons.Enums
 | 
			
		||||
@@ -117,20 +120,20 @@ namespace DH.Commons.Enums
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class DetectionResultDetail
 | 
			
		||||
    {
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string LabelBGR { get; set; }//识别到对象的标签BGR
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public int LabelNo { get; set; }   // 识别到对象的标签索引
 | 
			
		||||
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string LabelName { get; set; }//识别到对象的标签名称
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public double Score { get; set; }//识别目标结果的可能性、得分
 | 
			
		||||
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string LabelDisplay { get; set; }//识别到对象的 显示信息
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -151,10 +154,10 @@ namespace DH.Commons.Enums
 | 
			
		||||
    public class MLResult
 | 
			
		||||
    {
 | 
			
		||||
        public bool IsSuccess = false;
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string ResultMessage;
 | 
			
		||||
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public Bitmap ResultMap;
 | 
			
		||||
 | 
			
		||||
        public List<DetectionResultDetail> ResultDetails = new List<DetectionResultDetail>();
 | 
			
		||||
@@ -178,8 +181,8 @@ namespace DH.Commons.Enums
 | 
			
		||||
        public bool IsGPU;
 | 
			
		||||
        public int GPUId;
 | 
			
		||||
        public float Score_thre;
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
        public MLInit(string modelFile, bool isGPU, int gpuId, float score_thre)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -204,18 +207,18 @@ namespace DH.Commons.Enums
 | 
			
		||||
    }
 | 
			
		||||
    public class DetectStationResult 
 | 
			
		||||
    {
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string Pid { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string TempPid { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 检测工位名称
 | 
			
		||||
        /// </summary>
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string DetectName { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -262,9 +265,9 @@ namespace DH.Commons.Enums
 | 
			
		||||
        public int StationDetectElapsed { get; set; }
 | 
			
		||||
        public static string NormalizeAndClean(string input)
 | 
			
		||||
        {
 | 
			
		||||
#pragma warning disable CS8603 // 可能返回 null 引用。
 | 
			
		||||
#pragma warning disable CS8603 // 可能返回 null 引用 
 | 
			
		||||
            if (input == null) return null;
 | 
			
		||||
#pragma warning restore CS8603 // 可能返回 null 引用。
 | 
			
		||||
#pragma warning restore CS8603 // 可能返回 null 引用 
 | 
			
		||||
 | 
			
		||||
            // Step 1: 标准化字符编码为 Form C (规范组合)
 | 
			
		||||
            string normalizedString = input.Normalize(NormalizationForm.FormC);
 | 
			
		||||
@@ -289,6 +292,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
        [Category("关联相机")]
 | 
			
		||||
        [DisplayName("相机源ID")]
 | 
			
		||||
        [Description("关联相机的唯一标识符")]
 | 
			
		||||
        [JsonPropertyName("camera_sourceId")]
 | 
			
		||||
        //[TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        public string CameraSourceId
 | 
			
		||||
        {
 | 
			
		||||
@@ -472,7 +476,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
    //        [Category("预处理参数")]
 | 
			
		||||
    //        [DisplayName("参数名称")]
 | 
			
		||||
    //        [Description("参数名称")]
 | 
			
		||||
//#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
    // 
 | 
			
		||||
    //        public string Name { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -484,171 +488,195 @@ namespace DH.Commons.Enums
 | 
			
		||||
    //        [Category("预处理参数")]
 | 
			
		||||
    //        [DisplayName("参数值")]
 | 
			
		||||
    //        [Description("参数值")]
 | 
			
		||||
//#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
    // 
 | 
			
		||||
    //        public string Value { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //    }
 | 
			
		||||
    public class DetectionConfig
 | 
			
		||||
    public class DetectionConfig : NotifyProperty
 | 
			
		||||
    {
 | 
			
		||||
        #region 基本信息
 | 
			
		||||
        [JsonPropertyName("id")]
 | 
			
		||||
        [ReadOnly(true)]
 | 
			
		||||
        public string Id { get; set; } = Guid.NewGuid().ToString();
 | 
			
		||||
 | 
			
		||||
        public string Id { get; private set; } = Guid.NewGuid().ToString();
 | 
			
		||||
 | 
			
		||||
        [Category("检测配置")]
 | 
			
		||||
        [DisplayName("检测配置名称")]
 | 
			
		||||
        [Description("检测配置名称")]
 | 
			
		||||
        [JsonPropertyName("name")]
 | 
			
		||||
        public string Name { get; set; }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region 相机配置
 | 
			
		||||
        [Category("关联相机")]
 | 
			
		||||
        [DisplayName("关联相机")]
 | 
			
		||||
        [Description("关联相机描述")]
 | 
			
		||||
       
 | 
			
		||||
       
 | 
			
		||||
        [JsonPropertyName("camera_source_id")]
 | 
			
		||||
        public string CameraSourceId { get; set; } = "";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [Category("关联相机集合")]
 | 
			
		||||
        [DisplayName("关联相机集合")]
 | 
			
		||||
        [Description("关联相机描述")]
 | 
			
		||||
        //[TypeConverter(typeof(DeviceIdSelectorConverter<CameraBase>))]
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public List<RelatedCamera> CameraCollects { get; set; } = new List<RelatedCamera>();
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("camera_Collects")]
 | 
			
		||||
        public List<RelatedCamera> CameraCollects { get; set; } = new();
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region 启用选项
 | 
			
		||||
        [Category("启用配置")]
 | 
			
		||||
        [DisplayName("是否启用GPU检测")]
 | 
			
		||||
        [Description("是否启用GPU检测")]
 | 
			
		||||
        public bool IsEnableGPU { get; set; } = false;
 | 
			
		||||
        [JsonPropertyName("is_enable_gpu")]
 | 
			
		||||
        public bool IsEnableGPU { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("启用配置")]
 | 
			
		||||
        [DisplayName("是否混料模型")]
 | 
			
		||||
        [Description("是否混料模型")]
 | 
			
		||||
        public bool IsMixModel { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
        [JsonPropertyName("is_mixModel")]
 | 
			
		||||
        public bool IsMixModel { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("启用配置")]
 | 
			
		||||
        [DisplayName("是否启用该检测")]
 | 
			
		||||
        [Description("是否启用该检测")]
 | 
			
		||||
        [JsonPropertyName("is_enabled")]
 | 
			
		||||
        public bool IsEnabled { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("启用配置")]
 | 
			
		||||
        [DisplayName("是否加入检测工位")]
 | 
			
		||||
        [Description("是否加入检测工位")]
 | 
			
		||||
        public bool IsAddStation { get; set; } = true;
 | 
			
		||||
        [DisplayName("是否启用预处理")]
 | 
			
		||||
        [JsonPropertyName("is_PreEnabled")]
 | 
			
		||||
        public bool IsPreEnabled { get; set; }
 | 
			
		||||
        // public bool IsAddStation { get; set; } = true;
 | 
			
		||||
 | 
			
		||||
        private bool _isAddStation;
 | 
			
		||||
       [Category("启用配置")]
 | 
			
		||||
        [DisplayName("是否加入检测工位")]
 | 
			
		||||
        [JsonPropertyName("is_addstation")]
 | 
			
		||||
        public bool IsAddStation
 | 
			
		||||
        {
 | 
			
		||||
            get => _isAddStation;
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (_isAddStation != value)
 | 
			
		||||
                {
 | 
			
		||||
                    _isAddStation = value;
 | 
			
		||||
                    OnPropertyChanged(nameof(IsAddStation));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region 预处理(视觉算子)
 | 
			
		||||
        [Category("1.预处理(视觉算子)")]
 | 
			
		||||
        [DisplayName("预处理-算法文件路径")]
 | 
			
		||||
       // [Description("预处理算法文件路径配置")][Editor(typeof(FileDialogEditor), typeof(UITypeEditor))]
 | 
			
		||||
        [JsonPropertyName("halcon_algorithemPath_pre")]
 | 
			
		||||
        public string HalconAlgorithemPath_Pre { get; set; }
 | 
			
		||||
 | 
			
		||||
       // [Category("1.预处理(视觉算子)")]
 | 
			
		||||
        //[DisplayName("预处理-输出结果的SPEC标准")]
 | 
			
		||||
        //[Description("预处理输出结果的SPEC标准配置")]
 | 
			
		||||
       
 | 
			
		||||
       // public List<IndexedSpec> OutputSpec_Pre { get; set; } = new List<IndexedSpec>();
 | 
			
		||||
 | 
			
		||||
        [Category("1.预处理(视觉算子)")]
 | 
			
		||||
        [DisplayName("预处理-参数列表")]
 | 
			
		||||
        [Description("预处理-参数列表")]
 | 
			
		||||
       
 | 
			
		||||
        public List<PreTreatParam> PreTreatParams { get; set; } = new List<PreTreatParam>();
 | 
			
		||||
        [JsonPropertyName("pre_treatParams")]
 | 
			
		||||
        public List<PreTreatParam> PreTreatParams { get; set; } = new();
 | 
			
		||||
 | 
			
		||||
        [Category("1.预处理(视觉算子)")]
 | 
			
		||||
        [DisplayName("预处理-输出参数列表")]
 | 
			
		||||
        [Description("预处理-输出参数列表")]
 | 
			
		||||
 | 
			
		||||
        public List<PreTreatParam> OUTPreTreatParams { get; set; } = new List<PreTreatParam>();
 | 
			
		||||
        [JsonPropertyName("out_preTreatParams")]
 | 
			
		||||
        public List<PreTreatParam> OUTPreTreatParams { get; set; } = new();
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region 深度学习检测
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型类型")]
 | 
			
		||||
        [Description("模型类型:ImageClassification-图片分类;ObjectDetection:目标检测;Segmentation-图像分割")]
 | 
			
		||||
        //[TypeConverter(typeof(EnumDescriptionConverter<MLModelType>))]
 | 
			
		||||
        [DisplayName("模型类型")]
 | 
			
		||||
        [JsonPropertyName("model_Type")]
 | 
			
		||||
        public MLModelType ModelType { get; set; } = MLModelType.ObjectDetection;
 | 
			
		||||
 | 
			
		||||
        //[Category("2.中检测(深度学习)")]
 | 
			
		||||
        //[DisplayName("中检测-GPU索引")]
 | 
			
		||||
        //[Description("GPU索引")]
 | 
			
		||||
        //public int GPUIndex { get; set; } = 0;
 | 
			
		||||
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型文件路径")]
 | 
			
		||||
        [Description("中处理 深度学习模型文件路径,路径中不可含有中文字符,一般情况可以只配置中检测模型,当需要先用预检测过滤一次时,请先配置好与预检测相关配置")]
 | 
			
		||||
       
 | 
			
		||||
        [DisplayName("模型文件路径")]
 | 
			
		||||
        [JsonPropertyName("model_Path")]
 | 
			
		||||
        public string ModelPath { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型宽度")]
 | 
			
		||||
        [Description("中处理-模型宽度")]
 | 
			
		||||
 | 
			
		||||
        [DisplayName("模型宽度")]
 | 
			
		||||
        [JsonPropertyName("model_Width")]
 | 
			
		||||
        public int ModelWidth { get; set; } = 640;
 | 
			
		||||
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型高度")]
 | 
			
		||||
        [Description("中处理-模型高度")]
 | 
			
		||||
 | 
			
		||||
        [DisplayName("模型高度")]
 | 
			
		||||
        [JsonPropertyName("model_Height")]
 | 
			
		||||
        public int ModelHeight { get; set; } = 640;
 | 
			
		||||
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型节点名称")]
 | 
			
		||||
        [Description("中处理-模型节点名称")]
 | 
			
		||||
 | 
			
		||||
        [DisplayName("模型节点名称")]
 | 
			
		||||
        [JsonPropertyName("model_outNodeName")]
 | 
			
		||||
        public string ModeloutNodeName { get; set; } = "output0";
 | 
			
		||||
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型置信度")]
 | 
			
		||||
        [Description("中处理-模型置信度")]
 | 
			
		||||
 | 
			
		||||
        [DisplayName("模型置信度")]
 | 
			
		||||
        [JsonPropertyName("model_confThreshold")]
 | 
			
		||||
        public float ModelconfThreshold { get; set; } = 0.5f;
 | 
			
		||||
 | 
			
		||||
        [Category("2.中检测(深度学习)")]
 | 
			
		||||
        [DisplayName("中检测-模型标签路径")]
 | 
			
		||||
        [Description("中处理-模型标签路径")]
 | 
			
		||||
 | 
			
		||||
        [DisplayName("模型标签路径")]
 | 
			
		||||
        [JsonPropertyName("in_lablepath")]
 | 
			
		||||
        public string in_lable_path { get; set; }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        [Category("4.最终过滤(逻辑过滤)")]
 | 
			
		||||
        [DisplayName("过滤器集合")]
 | 
			
		||||
        [Description("最后的逻辑过滤:可根据 识别出对象的 宽度、高度、面积、得分来设置最终检测结果,同一识别目标同一判定,多项过滤器之间为“或”关系")]
 | 
			
		||||
        #region 尺寸测量
 | 
			
		||||
 | 
			
		||||
        public List<DetectionFilter> DetectionFilterList { get; set; } = new List<DetectionFilter>();
 | 
			
		||||
        //   public List<SizeTreatParam> PreTreatCollects { get; set; } = new();
 | 
			
		||||
        private List<SizeTreatParam> _preTreatParams = new();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 标签集合
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public List<DetectionLable> DetectionLableList { get; set; } = new List<DetectionLable>();
 | 
			
		||||
        //[Category("深度学习配置")]
 | 
			
		||||
        //[DisplayName("检测配置标签")]
 | 
			
		||||
        //[Description("检测配置标签关联")]
 | 
			
		||||
 | 
			
		||||
        //public List<DetectConfigLabel> DetectConfigLabelList { get; set; } = new List<DetectConfigLabel>();
 | 
			
		||||
        [Category("显示配置")]
 | 
			
		||||
        [DisplayName("显示位置")]
 | 
			
		||||
        [Description("检测信息显示位置。左上角为(1,1),向右向下为正方向")]
 | 
			
		||||
       // [TypeConverter(typeof(ComplexObjectConvert))]
 | 
			
		||||
       // [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))]
 | 
			
		||||
        public CustomizedPoint ShowLocation { get; set; } = new CustomizedPoint();
 | 
			
		||||
 | 
			
		||||
        public DetectionConfig()
 | 
			
		||||
        [Category("1.尺寸测量集合")]
 | 
			
		||||
        [DisplayName("尺寸测量集合")]
 | 
			
		||||
        [JsonPropertyName("Pre_TreatCollects")]
 | 
			
		||||
        public List<SizeTreatParam> PreTreatCollects
 | 
			
		||||
        {
 | 
			
		||||
            get => _preTreatParams;
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (_preTreatParams != value)
 | 
			
		||||
                {
 | 
			
		||||
                    _preTreatParams = value;
 | 
			
		||||
                    OnPropertyChanged(nameof(PreTreatCollects));
 | 
			
		||||
                  
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region 过滤器
 | 
			
		||||
        [Category("4.最终过滤(逻辑过滤)")]
 | 
			
		||||
        [DisplayName("过滤器集合")]
 | 
			
		||||
        [JsonPropertyName("detection_filterList")]
 | 
			
		||||
        public List<DetectionFilter> DetectionFilterList { get; set; } = new();
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region 其他信息
 | 
			
		||||
        [JsonPropertyName("Detection_LableList")]
 | 
			
		||||
        public List<DetectionLable> DetectionLableList { get; set; } = new();
 | 
			
		||||
 | 
			
		||||
        [Category("显示配置")]
 | 
			
		||||
        [DisplayName("显示位置")]
 | 
			
		||||
        [JsonPropertyName("Show_Location")]
 | 
			
		||||
        public CustomizedPoint ShowLocation { get; set; } = new();
 | 
			
		||||
        #endregion
 | 
			
		||||
        //public event PropertyChangedEventHandler PropertyChanged;
 | 
			
		||||
 | 
			
		||||
        //protected virtual void OnPropertyChanged(string propertyName)
 | 
			
		||||
        //{
 | 
			
		||||
        //    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        #region 构造函数
 | 
			
		||||
        public DetectionConfig() { }
 | 
			
		||||
 | 
			
		||||
        public DetectionConfig(string name, MLModelType modelType, string modelPath, bool isEnableGPU, string sCameraSourceId)
 | 
			
		||||
        {
 | 
			
		||||
            ModelPath = modelPath ?? string.Empty;
 | 
			
		||||
            Name = name;
 | 
			
		||||
            ModelType = modelType;
 | 
			
		||||
            ModelPath = modelPath ?? string.Empty;
 | 
			
		||||
            IsEnableGPU = isEnableGPU;
 | 
			
		||||
            Id = Guid.NewGuid().ToString();
 | 
			
		||||
            CameraSourceId = sCameraSourceId;
 | 
			
		||||
 | 
			
		||||
            Id = Guid.NewGuid().ToString();
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //大改预处理类
 | 
			
		||||
@@ -660,6 +688,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        private bool _selected = false;
 | 
			
		||||
      
 | 
			
		||||
        public bool Selected
 | 
			
		||||
        {
 | 
			
		||||
            get { return _selected; }
 | 
			
		||||
@@ -670,6 +699,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                OnPropertyChanged(nameof(Selected));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        [JsonPropertyName("name")]
 | 
			
		||||
        private string _name;
 | 
			
		||||
        public string Name
 | 
			
		||||
        {
 | 
			
		||||
@@ -684,6 +714,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        private string _value;
 | 
			
		||||
        [JsonPropertyName("value")]
 | 
			
		||||
        public string Value
 | 
			
		||||
        {
 | 
			
		||||
            get { return _value; }
 | 
			
		||||
@@ -698,7 +729,9 @@ namespace DH.Commons.Enums
 | 
			
		||||
        private CellLink[] cellLinks;
 | 
			
		||||
        public CellLink[] CellLinks
 | 
			
		||||
        {
 | 
			
		||||
            get { return cellLinks; }
 | 
			
		||||
            get {
 | 
			
		||||
               
 | 
			
		||||
                return cellLinks; }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (cellLinks == value) return;
 | 
			
		||||
@@ -737,7 +770,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("labelId")]
 | 
			
		||||
        public string LabelId
 | 
			
		||||
        {
 | 
			
		||||
            get { return _labelId; }
 | 
			
		||||
@@ -748,7 +781,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                OnPropertyChanged(nameof(LabelId));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("labelName")]
 | 
			
		||||
        public string LabelName
 | 
			
		||||
        {
 | 
			
		||||
            get { return _labelName; }
 | 
			
		||||
@@ -759,7 +792,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                OnPropertyChanged(nameof(LabelName));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("maxSource")]
 | 
			
		||||
        public double MaxSource
 | 
			
		||||
        {
 | 
			
		||||
            get { return _maxSource; }
 | 
			
		||||
@@ -771,6 +804,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("minSource")]
 | 
			
		||||
        public double MinSource
 | 
			
		||||
        {
 | 
			
		||||
            get { return _minSource; }
 | 
			
		||||
@@ -781,7 +815,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                OnPropertyChanged(nameof(MinSource));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("maxArea")]
 | 
			
		||||
        public double MaxArea
 | 
			
		||||
        {
 | 
			
		||||
            get { return _maxArea; }
 | 
			
		||||
@@ -792,7 +826,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                OnPropertyChanged(nameof(MaxArea));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("minArea")]
 | 
			
		||||
        public double MinArea
 | 
			
		||||
        {
 | 
			
		||||
            get { return _minArea; }
 | 
			
		||||
@@ -803,7 +837,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                OnPropertyChanged(nameof(MinArea));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [JsonPropertyName("_resultState")]
 | 
			
		||||
        public ResultState ResultState
 | 
			
		||||
        {
 | 
			
		||||
            get { return _resultState; }
 | 
			
		||||
@@ -818,7 +852,9 @@ namespace DH.Commons.Enums
 | 
			
		||||
        private CellLink[] cellLinks;
 | 
			
		||||
        public CellLink[] CellLinks
 | 
			
		||||
        {
 | 
			
		||||
            get { return cellLinks; }
 | 
			
		||||
            get {
 | 
			
		||||
               
 | 
			
		||||
                return cellLinks; }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (cellLinks == value) return;
 | 
			
		||||
@@ -827,6 +863,60 @@ namespace DH.Commons.Enums
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    public class PreTreatCollect 
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("预处理-算法文件路径")]
 | 
			
		||||
        [Description("预处理算法文件路径配置")]
 | 
			
		||||
        [JsonPropertyName("halconPath_Pre")]
 | 
			
		||||
        // [Editor(typeof(FileDialogEditor), typeof(UITypeEditor))]
 | 
			
		||||
        public string HalconPath_Pre { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("输入参数列表")]
 | 
			
		||||
        [Description("输入参数列表")]
 | 
			
		||||
        [JsonPropertyName("preParams")]
 | 
			
		||||
        // [TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        // [Editor(typeof(ComplexCollectionEditor<PreTreatParam>), typeof(UITypeEditor))]
 | 
			
		||||
        public List<PreTreatParam> PreParams { get; set; } = new List<PreTreatParam>();
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("输出参数列表")]
 | 
			
		||||
        [Description("输出参数列表")]
 | 
			
		||||
        [JsonPropertyName("outPreParams")]
 | 
			
		||||
        // [TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        // [Editor(typeof(ComplexCollectionEditor<PreTreatParam>), typeof(UITypeEditor))]
 | 
			
		||||
        public List<PreTreatParam> outPreParams { get; set; } = new List<PreTreatParam>();
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("预处理-名称")]
 | 
			
		||||
        [Description("预处理名称")]
 | 
			
		||||
        [JsonPropertyName("preName")]
 | 
			
		||||
        public string PreName { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("预处理-启用")]
 | 
			
		||||
        [Description("预处理启用")]
 | 
			
		||||
        [JsonPropertyName("preIsEnable")]
 | 
			
		||||
        public bool PreIsEnable { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("类型")]
 | 
			
		||||
        [Description("类型")]
 | 
			
		||||
        [JsonPropertyName("preType")]
 | 
			
		||||
        //  [TypeConverter(typeof(EnumDescriptionConverter<SizeEnum>))]
 | 
			
		||||
        public SizeEnum PreType { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Category("尺寸测量集合")]
 | 
			
		||||
        [DisplayName("阈值")]
 | 
			
		||||
        [Description("阈值")]
 | 
			
		||||
        [JsonPropertyName("prePix")]
 | 
			
		||||
        public int PrePix { get; set; }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public class SizeTreatParam : NotifyProperty
 | 
			
		||||
    {
 | 
			
		||||
@@ -923,16 +1013,16 @@ namespace DH.Commons.Enums
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string PrePath
 | 
			
		||||
        {
 | 
			
		||||
            get { return _prePath; }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (_prePath.Equals(value)) return;
 | 
			
		||||
                _prePath = value;
 | 
			
		||||
                OnPropertyChanged(nameof(PrePath));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //public string PrePath
 | 
			
		||||
        //{
 | 
			
		||||
        //    get { return _prePath; }
 | 
			
		||||
        //    set
 | 
			
		||||
        //    {
 | 
			
		||||
        //        if (_prePath.Equals(value)) return;
 | 
			
		||||
        //        _prePath = value;
 | 
			
		||||
        //        OnPropertyChanged(nameof(PrePath));
 | 
			
		||||
        //    }
 | 
			
		||||
        //}
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        private CellLink[] cellLinks;
 | 
			
		||||
@@ -987,7 +1077,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
        [DisplayName("检测项标签")]
 | 
			
		||||
        [Description("检测标签Id")]
 | 
			
		||||
        //[TypeConverter(typeof(DetectionLabelConverter))]
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string LabelId { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -674,31 +674,31 @@ namespace DH.Commons.Enums
 | 
			
		||||
            Warning = 8,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public enum ResultState
 | 
			
		||||
        {
 | 
			
		||||
            [Description("NA")]
 | 
			
		||||
            NA = -5,
 | 
			
		||||
            [Description("尺寸NG")]
 | 
			
		||||
            SizeNG = -4,
 | 
			
		||||
            [Description("检测NG")]
 | 
			
		||||
            DetectNG = -3,
 | 
			
		||||
        //public enum ResultState
 | 
			
		||||
        //{
 | 
			
		||||
        //    [Description("NA")]
 | 
			
		||||
        //    NA = -5,
 | 
			
		||||
        //    [Description("尺寸NG")]
 | 
			
		||||
        //    SizeNG = -4,
 | 
			
		||||
        //    [Description("检测NG")]
 | 
			
		||||
        //    DetectNG = -3,
 | 
			
		||||
           
 | 
			
		||||
            //[Description("检测不足TBD")]
 | 
			
		||||
           // ShortageTBD = -2,
 | 
			
		||||
            [Description("检测结果TBD")]
 | 
			
		||||
            ResultTBD = -1,
 | 
			
		||||
            [Description("OK")]
 | 
			
		||||
            OK = 1,
 | 
			
		||||
           // [Description("NG")]
 | 
			
		||||
           // NG = 2,
 | 
			
		||||
            //统计结果
 | 
			
		||||
            [Description("A类NG")]
 | 
			
		||||
            A_NG = 25,
 | 
			
		||||
            [Description("B类NG")]
 | 
			
		||||
            B_NG = 26,
 | 
			
		||||
            [Description("C类NG")]
 | 
			
		||||
            C_NG = 27,
 | 
			
		||||
        }
 | 
			
		||||
        //    //[Description("检测不足TBD")]
 | 
			
		||||
        //   // ShortageTBD = -2,
 | 
			
		||||
        //    [Description("检测结果TBD")]
 | 
			
		||||
        //    ResultTBD = -1,
 | 
			
		||||
        //    [Description("OK")]
 | 
			
		||||
        //    OK = 1,
 | 
			
		||||
        //   // [Description("NG")]
 | 
			
		||||
        //   // NG = 2,
 | 
			
		||||
        //    //统计结果
 | 
			
		||||
        //    [Description("A类NG")]
 | 
			
		||||
        //    A_NG = 25,
 | 
			
		||||
        //    [Description("B类NG")]
 | 
			
		||||
        //    B_NG = 26,
 | 
			
		||||
        //    [Description("C类NG")]
 | 
			
		||||
        //    C_NG = 27,
 | 
			
		||||
        //}
 | 
			
		||||
        public enum HikCameraType
 | 
			
		||||
        {
 | 
			
		||||
            [Description("HikCamera-Gige")]
 | 
			
		||||
 
 | 
			
		||||
@@ -571,8 +571,8 @@ namespace DH.Commons.Enums
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //分别基于像素(GetPixel和SetPixel)、基于内存、基于指针这三种方法增强图片对比度。
 | 
			
		||||
        // 第一种方法:像素提取法。速度慢 基于像素:400-600ms
 | 
			
		||||
        //分别基于像素(GetPixel和SetPixel)、基于内存、基于指针这三种方法增强图片对比度 
 | 
			
		||||
        // 第一种方法:像素提取法 速度慢 基于像素:400-600ms
 | 
			
		||||
        public static Bitmap MethodBaseOnPixel(Bitmap bitmap, int degree)
 | 
			
		||||
        {
 | 
			
		||||
            Color curColor;
 | 
			
		||||
 
 | 
			
		||||
@@ -108,7 +108,7 @@ namespace DH.Commons.Enums
 | 
			
		||||
                DataGridViewCheckboxHeaderEventArgs ex = new DataGridViewCheckboxHeaderEventArgs();
 | 
			
		||||
                ex.CheckedState = _checked;
 | 
			
		||||
 | 
			
		||||
                object sender = new object();//此处不代表选择的列头checkbox,只是作为参数传递。因为列头checkbox是绘制出来的,无法获得它的实例
 | 
			
		||||
                object sender = new object();//此处不代表选择的列头checkbox,只是作为参数传递 因为列头checkbox是绘制出来的,无法获得它的实例
 | 
			
		||||
 | 
			
		||||
                if (OnCheckBoxClicked != null)
 | 
			
		||||
                {
 | 
			
		||||
 
 | 
			
		||||
@@ -409,7 +409,7 @@ namespace MCDLL_NET
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /********************************************************************************************************************************************************************
 | 
			
		||||
            <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>ᱻ<EFBFBD>ж<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݡ<EFBFBD>
 | 
			
		||||
            <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>ᱻ<EFBFBD>ж<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD> 
 | 
			
		||||
        ********************************************************************************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1005,8 +1005,8 @@ namespace MCDLL_NET
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="Axis"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
 | 
			
		||||
        /// <param name="Stop_Time"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣʱ<CDA3>䣻 <20><>Χ 0 -1000ms<6D><73><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>ͣ<EFBFBD><CDA3>
 | 
			
		||||
        /// ע<>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײԭ<D7B2>㻺ͣʱ<CDA3>䣬<EFBFBD><E4A3AC>Ҫ<EFBFBD><D2AA><EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĸ<C3B5><C4B8>ٶ<EFBFBD><D9B6>ٶȣ<D9B6><C8A3>͵<EFBFBD><CDB5>ٶ<EFBFBD><D9B6>ٶȵĴ<C8B5><C4B4>䡣
 | 
			
		||||
        /// <20><><EFBFBD>ô<EFBFBD><C3B4>˻<EFBFBD><CBBB><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ԭ<EFBFBD><D4AD>ʱ<EFBFBD><CAB1><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>м䡣</param>
 | 
			
		||||
        /// ע<>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײԭ<D7B2>㻺ͣʱ<CDA3>䣬<EFBFBD><E4A3AC>Ҫ<EFBFBD><D2AA><EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĸ<C3B5><C4B8>ٶ<EFBFBD><D9B6>ٶȣ<D9B6><C8A3>͵<EFBFBD><CDB5>ٶ<EFBFBD><D9B6>ٶȵĴ<C8B5><C4B4><EFBFBD> 
 | 
			
		||||
        /// <20><><EFBFBD>ô<EFBFBD><C3B4>˻<EFBFBD><CBBB><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ԭ<EFBFBD><D4AD>ʱ<EFBFBD><CAB1><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>м<EFBFBD> </param>
 | 
			
		||||
        /// <param name="StationNumber">վ<><D5BE><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>Ϊ 0</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Search_Home_Stop_Time_Net")]
 | 
			
		||||
 
 | 
			
		||||
@@ -444,17 +444,17 @@ namespace DH.Devices.Motion
 | 
			
		||||
 | 
			
		||||
        //[Category("回原点设置")]
 | 
			
		||||
        //[DisplayName("回原点模式")]
 | 
			
		||||
        //[Description("HomeMode:回原点模式。0:一般模式 1:极限限位模式 2:外部触发模式")]
 | 
			
		||||
        //[Description("HomeMode:回原点模式 0:一般模式 1:极限限位模式 2:外部触发模式")]
 | 
			
		||||
        //public int HomeMode { get; set; } = 0;
 | 
			
		||||
 | 
			
		||||
        //[Category("回原点设置")]
 | 
			
		||||
        //[DisplayName("回原点方向")]
 | 
			
		||||
        //[Description("IsHomePositive:回原点方向。 true:正方向开始  false:负方向开始")]
 | 
			
		||||
        //[Description("IsHomePositive:回原点方向  true:正方向开始  false:负方向开始")]
 | 
			
		||||
        //public bool IsHomePositive { get; set; } = true;
 | 
			
		||||
 | 
			
		||||
        //[Category("回原点设置")]
 | 
			
		||||
        //[DisplayName("是否自动回原点")]
 | 
			
		||||
        //[Description("IsAutoGoHome:是否自动回原点。 true:是  false:否")]
 | 
			
		||||
        //[Description("IsAutoGoHome:是否自动回原点  true:是  false:否")]
 | 
			
		||||
        //public bool IsAutoGoHome { get; set; } = false;
 | 
			
		||||
 | 
			
		||||
        //[Category("超时设置")]
 | 
			
		||||
@@ -601,7 +601,7 @@ namespace DH.Devices.Motion
 | 
			
		||||
 | 
			
		||||
        [Category("回原点参数")]
 | 
			
		||||
        [DisplayName("碰撞原点缓停时间")]
 | 
			
		||||
        [Description("SearchHomeStopTime:触发缓停时间,范围 0-1000ms,(默认:急停)。注意:设置碰撞原点缓停时间,需要配合回零设置的高速段速度,和低速度速度的搭配。设置大了会出现过冲的现象,设置小了停止的时候会有抖动,需要调节时间,尽量设置找到原点时候在开关中间。")]
 | 
			
		||||
        [Description("SearchHomeStopTime:触发缓停时间,范围 0-1000ms,(默认:急停) 注意:设置碰撞原点缓停时间,需要配合回零设置的高速段速度,和低速度速度的搭配 设置大了会出现过冲的现象,设置小了停止的时候会有抖动,需要调节时间,尽量设置找到原点时候在开关中间 ")]
 | 
			
		||||
        public ushort SearchHomeStopTime { get; set; } = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -314,9 +314,9 @@ namespace DH.Devices.Motion
 | 
			
		||||
            //    //设置物件检测有效电平 0是低电平 1是高电平
 | 
			
		||||
            //    rtn = CMCDLL_NET_Sorting.MCF_Sorting_Set_Input_Logic_Net((ushort)SortingInputSetting.BitInputNumber, 0);
 | 
			
		||||
            //    //设置来料检测编码器 双转盘要设置两个轴
 | 
			
		||||
            //    /*Bit_Input_Number:设置位号。
 | 
			
		||||
            //      取值: Bit_Input_0, Bit_Input_1。
 | 
			
		||||
            //        Axis: 轴号。
 | 
			
		||||
            //    /*Bit_Input_Number:设置位号 
 | 
			
		||||
            //      取值: Bit_Input_0, Bit_Input_1 
 | 
			
		||||
            //        Axis: 轴号 
 | 
			
		||||
            //        Source:跟随方式
 | 
			
		||||
            //        取值:0:命令
 | 
			
		||||
            //        1:编码器(默认)
 | 
			
		||||
@@ -1655,7 +1655,7 @@ namespace DH.Devices.Motion
 | 
			
		||||
        #region IMonitor
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 位置捕获监听,入料检测。
 | 
			
		||||
        /// 位置捕获监听,入料检测 
 | 
			
		||||
        /// 入料检测对射开关接到了HOME口,每当有新料到达入料检测传感器时,程序把当前位置当作原点,并调用<see cref="SolidMotionCardBase.CapturePositionChanged(int, int)"/>函数
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void MonitorPieces()
 | 
			
		||||
@@ -1796,7 +1796,7 @@ namespace DH.Devices.Motion
 | 
			
		||||
                        //    Picese_sizeStr += i.ToString()+":"+Piece_Size[i]+"\t";
 | 
			
		||||
                        //    Picese_DistanceizeStr += i.ToString()+":"+ Piece_Distance_To_next[i]+"\t";
 | 
			
		||||
                        //}
 | 
			
		||||
                       // LogAsync(DateTime.Now, LogLevel.Information, $"转盘{station}产品入列 ,  {piecesCountDic[station]} size:{Piece_Size[Piece_Size.Length - 1]}。");
 | 
			
		||||
                       // LogAsync(DateTime.Now, LogLevel.Information, $"转盘{station}产品入列 ,  {piecesCountDic[station]} size:{Piece_Size[Piece_Size.Length - 1]} ");
 | 
			
		||||
                        // LogAsync(DateTime.Now, LogLevel.Information, $"转盘{station}产品入列 ,监听piece_find{tmpPieceNumber} 监听物件大小" + Picese_sizeStr+",物件间距"+ Picese_DistanceizeStr+"相机经过个数"+Piece_Cross_Camera);
 | 
			
		||||
                        if (tmpPieceNumber != piecesCountDic[station] + 1)
 | 
			
		||||
                        {
 | 
			
		||||
 
 | 
			
		||||
@@ -104,9 +104,9 @@ namespace DH.Devices.Vision
 | 
			
		||||
            // json = "{\"FastDetResult\":[{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654843,\"rect\":[175,99,110,594]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654589,\"rect\":[2608,19,104,661]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654285,\"rect\":[1275,19,104,662]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.620762,\"rect\":[1510,95,107,600]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.617812,\"rect\":[2844,93,106,602]}]}";
 | 
			
		||||
            //
 | 
			
		||||
            Console.WriteLine("检测结果JSON:" + json);
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
            HYoloResult detResult = JsonConvert.DeserializeObject<HYoloResult>(json);
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
            if (detResult == null)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
@@ -234,15 +234,15 @@ namespace DH.Devices.Vision
 | 
			
		||||
            {
 | 
			
		||||
             
 | 
			
		||||
                originMat?.Dispose();
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                originMat = null;
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                //maskMat?.Dispose();
 | 
			
		||||
                // maskMat = null;
 | 
			
		||||
                detectMat?.Dispose();
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                detectMat = null;
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                // maskWeighted?.Dispose();
 | 
			
		||||
                // maskWeighted = null;
 | 
			
		||||
                // GC.Collect();
 | 
			
		||||
 
 | 
			
		||||
@@ -127,9 +127,9 @@ namespace DH.Devices.Vision
 | 
			
		||||
            // json = "{\"FastDetResult\":[{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654843,\"rect\":[175,99,110,594]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654589,\"rect\":[2608,19,104,661]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654285,\"rect\":[1275,19,104,662]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.620762,\"rect\":[1510,95,107,600]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.617812,\"rect\":[2844,93,106,602]}]}";
 | 
			
		||||
            //
 | 
			
		||||
            Console.WriteLine("检测结果JSON:" + json);
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
            SegResult detResult = JsonConvert.DeserializeObject<SegResult>(json);
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
            if (detResult == null)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
@@ -259,9 +259,9 @@ namespace DH.Devices.Vision
 | 
			
		||||
            {
 | 
			
		||||
              
 | 
			
		||||
                originMat?.Dispose();
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                originMat = null;
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                // GC.Collect();
 | 
			
		||||
 
 | 
			
		||||
@@ -136,9 +136,9 @@ namespace DH.Devices.Vision
 | 
			
		||||
            // json = "{\"FastDetResult\":[{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654843,\"rect\":[175,99,110,594]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654589,\"rect\":[2608,19,104,661]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.654285,\"rect\":[1275,19,104,662]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.620762,\"rect\":[1510,95,107,600]},{\"cls_id\":0,\"cls\":\"liewen\",\"fScore\":0.617812,\"rect\":[2844,93,106,602]}]}";
 | 
			
		||||
            //
 | 
			
		||||
            Console.WriteLine("检测结果JSON:" + json);
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
            SegResult detResult = JsonConvert.DeserializeObject<SegResult>(json);
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
            if (detResult == null)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
@@ -267,17 +267,17 @@ namespace DH.Devices.Vision
 | 
			
		||||
                if (detectMat != null)
 | 
			
		||||
                {
 | 
			
		||||
                    detectMat.Dispose();
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                    detectMat = null;
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (originMat != null)
 | 
			
		||||
                {
 | 
			
		||||
                    originMat.Dispose();
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                    originMat = null;
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
 | 
			
		||||
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型 
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,7 @@ namespace DH.Devices.Vision
 | 
			
		||||
        //			"rect":	[421, 823, 6, 8]
 | 
			
		||||
        //    }]
 | 
			
		||||
        //}
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public List<Result> HYolo;
 | 
			
		||||
 | 
			
		||||
        public class Result
 | 
			
		||||
@@ -67,12 +67,12 @@ namespace DH.Devices.Vision
 | 
			
		||||
 | 
			
		||||
            public double fScore;
 | 
			
		||||
            public int classId;
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
            public string classname;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //public double area;
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
            public List<int> rect;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -82,7 +82,7 @@ namespace DH.Devices.Vision
 | 
			
		||||
    }
 | 
			
		||||
    public class SegResult
 | 
			
		||||
    {
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public List<Result> SegmentResult;
 | 
			
		||||
 | 
			
		||||
        public class Result
 | 
			
		||||
@@ -90,12 +90,12 @@ namespace DH.Devices.Vision
 | 
			
		||||
 | 
			
		||||
            public double fScore;
 | 
			
		||||
            public int classId;
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
            public string classname;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            public double area;
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
            public List<int> rect;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,18 +22,18 @@ namespace DH.Devices.Vision
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 检测配置ID
 | 
			
		||||
        /// </summary>
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string DetectionId { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public string DetectionName { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 深度学习模型
 | 
			
		||||
        /// </summary>
 | 
			
		||||
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
 | 
			
		||||
 
 | 
			
		||||
        public SimboVisionMLBase StationMLEngine { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								DH.Process/DH.Process.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								DH.Process/DH.Process.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <TargetFramework>net8.0-windows</TargetFramework>
 | 
			
		||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
			
		||||
    <Nullable>enable</Nullable>
 | 
			
		||||
    <BaseOutputPath>..\</BaseOutputPath>
 | 
			
		||||
    <AppendTargetFrameworkToOutputPath>output</AppendTargetFrameworkToOutputPath>
 | 
			
		||||
    <UseWindowsForms>true</UseWindowsForms>
 | 
			
		||||
    <Platforms>AnyCPU;x64</Platforms>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\DH.Commons.Devies\DH.Commons.Devies.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										49
									
								
								DH.Process/XKRS.Process.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								DH.Process/XKRS.Process.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
using DH.Commons.Enums;
 | 
			
		||||
using DH.Devices.Devices;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Drawing.Design;
 | 
			
		||||
using System.Text.Json.Serialization;
 | 
			
		||||
 | 
			
		||||
namespace DH.Process
 | 
			
		||||
{
 | 
			
		||||
   
 | 
			
		||||
    public class ProcessConfigBase
 | 
			
		||||
    {
 | 
			
		||||
        [JsonPropertyName("station_code")]
 | 
			
		||||
        public string StationCode { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        #region 设备配置
 | 
			
		||||
        [Category("设备配置")]
 | 
			
		||||
        [Description("相机配置")]
 | 
			
		||||
        [DisplayName("相机配置")]
 | 
			
		||||
        [JsonPropertyName("camera_config_collection")]
 | 
			
		||||
        //[TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        //[Editor(typeof(InitialConfigCollectionEditor<CameraInitialConfigBase>), typeof(UITypeEditor))]
 | 
			
		||||
        public List<CameraBase> CameraConfigCollection { get; set; } = new List<CameraBase>();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [Category("设备配置")]
 | 
			
		||||
        [Description("模型配置")]
 | 
			
		||||
        [DisplayName("模型配置")]
 | 
			
		||||
        [JsonPropertyName("detection_config_collection")]
 | 
			
		||||
        //[TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        //[Editor(typeof(InitialConfigCollectionEditor<CameraInitialConfigBase>), typeof(UITypeEditor))]
 | 
			
		||||
        public List<DetectionConfig> DetectionConfigCollection { get; set; } = new List<DetectionConfig>();
 | 
			
		||||
 | 
			
		||||
        //  [Category("设备配置")]
 | 
			
		||||
        //   [Description("PLC配置")]
 | 
			
		||||
        //  [DisplayName("PLC配置")]
 | 
			
		||||
        // [TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        // [Editor(typeof(InitialConfigCollectionEditor<PLCInitialConfigBase>), typeof(UITypeEditor))]
 | 
			
		||||
        // public List<IInitialConfig> PLCConfigCollection { get; set; } = new List<IInitialConfig>();
 | 
			
		||||
 | 
			
		||||
        //  [Category("设备配置")]
 | 
			
		||||
        // [Description("其他设备配置")]
 | 
			
		||||
        // [DisplayName("其他设备配置")]
 | 
			
		||||
        // [TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
        // [Editor(typeof(InitialConfigCollectionEditor<InitialConfigBase>), typeof(UITypeEditor))]
 | 
			
		||||
        //  public List<IInitialConfig> DeviceConfigs { get; set; } = new List<IInitialConfig>();
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								DH.UI.Model.Winform/Canvas.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DH.UI.Model.Winform/Canvas.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class Canvas
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								DH.UI.Model.Winform/CanvasImage.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								DH.UI.Model.Winform/CanvasImage.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,7 +3,7 @@
 | 
			
		||||
    partial class CanvasImage
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -923,9 +923,9 @@ namespace DH.UI.Model.Winform
 | 
			
		||||
 | 
			
		||||
        #region Dispose
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            MAP?.Dispose();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DH.UI.Model.Winform/Ctrl/GridCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DH.UI.Model.Winform/Ctrl/GridCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class GridCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class IOIndicatorCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -864,30 +864,30 @@ namespace DH.UI.Model.Winform
 | 
			
		||||
            {
 | 
			
		||||
                if (disposing)
 | 
			
		||||
                {
 | 
			
		||||
                    // 释放托管状态(托管对象)。
 | 
			
		||||
                    // 释放托管状态(托管对象) 
 | 
			
		||||
                    Pen?.Dispose();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // TODO: 释放未托管的资源(未托管的对象)并在以下内容中替代终结器。
 | 
			
		||||
                // TODO: 将大型字段设置为 null。
 | 
			
		||||
                // TODO: 释放未托管的资源(未托管的对象)并在以下内容中替代终结器 
 | 
			
		||||
                // TODO: 将大型字段设置为 null 
 | 
			
		||||
 | 
			
		||||
                disposedValue = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // TODO: 仅当以上 Dispose(bool disposing) 拥有用于释放未托管资源的代码时才替代终结器。
 | 
			
		||||
        // TODO: 仅当以上 Dispose(bool disposing) 拥有用于释放未托管资源的代码时才替代终结器 
 | 
			
		||||
        // ~ElementBase()
 | 
			
		||||
        // {
 | 
			
		||||
        //   // 请勿更改此代码。将清理代码放入以上 Dispose(bool disposing) 中。
 | 
			
		||||
        //   // 请勿更改此代码 将清理代码放入以上 Dispose(bool disposing) 中 
 | 
			
		||||
        //   Dispose(false);
 | 
			
		||||
        // }
 | 
			
		||||
 | 
			
		||||
        // 添加此代码以正确实现可处置模式。
 | 
			
		||||
        // 添加此代码以正确实现可处置模式 
 | 
			
		||||
        public void Dispose()
 | 
			
		||||
        {
 | 
			
		||||
            // 请勿更改此代码。将清理代码放入以上 Dispose(bool disposing) 中。
 | 
			
		||||
            // 请勿更改此代码 将清理代码放入以上 Dispose(bool disposing) 中 
 | 
			
		||||
            Dispose(true);
 | 
			
		||||
            // TODO: 如果在以上内容中替代了终结器,则取消注释以下行。
 | 
			
		||||
            // TODO: 如果在以上内容中替代了终结器,则取消注释以下行 
 | 
			
		||||
            // GC.SuppressFinalize(this);
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DH.UI.Model.Winform/GridCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DH.UI.Model.Winform/GridCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class GridCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DH.UI.Model.Winform/IOIndicatorCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DH.UI.Model.Winform/IOIndicatorCtrl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class IOIndicatorCtrl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XKRS.CanFly", "CanFly\XKRS.
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CanFly.Canvas", "CanFly.Canvas\CanFly.Canvas.csproj", "{EA7E228B-DB5C-4BF1-832B-D51B7F7D5F35}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Process", "Process", "{FE1AEA36-9909-4E4F-8A88-37338ECCCE62}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DH.Process", "DH.Process\DH.Process.csproj", "{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|Any CPU = Debug|Any CPU
 | 
			
		||||
@@ -127,6 +131,14 @@ Global
 | 
			
		||||
		{EA7E228B-DB5C-4BF1-832B-D51B7F7D5F35}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{EA7E228B-DB5C-4BF1-832B-D51B7F7D5F35}.Release|x64.ActiveCfg = Release|x64
 | 
			
		||||
		{EA7E228B-DB5C-4BF1-832B-D51B7F7D5F35}.Release|x64.Build.0 = Release|x64
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Debug|x64.Build.0 = Debug|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5}.Release|x64.Build.0 = Release|Any CPU
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
@@ -145,6 +157,7 @@ Global
 | 
			
		||||
		{5AD3A29E-149A-4C37-9548-7638A36C8175} = {F77AF94C-280D-44C5-B7C0-FC86AA9EC504}
 | 
			
		||||
		{1FB768DB-843E-4C67-96B9-7684CF890D89} = {048B30B5-D075-4CE0-BF9F-CB6152E6D376}
 | 
			
		||||
		{EA7E228B-DB5C-4BF1-832B-D51B7F7D5F35} = {048B30B5-D075-4CE0-BF9F-CB6152E6D376}
 | 
			
		||||
		{9C6D1290-26D9-4C5B-8BF5-A1F1E35368C5} = {FE1AEA36-9909-4E4F-8A88-37338ECCCE62}
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ExtensibilityGlobals) = postSolution
 | 
			
		||||
		SolutionGuid = {6FC1A8DF-636E-434C-981E-10F20FAD723B}
 | 
			
		||||
 
 | 
			
		||||
@@ -45,6 +45,7 @@
 | 
			
		||||
    <ProjectReference Include="..\DH.Devices.Motion\DH.Devices.Motion.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\DH.Devices.PLC\DH.Devices.PLC.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\DH.Devices.Vision\DH.Devices.Vision.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\DH.Process\DH.Process.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\DH.UI.Model.Winform\DH.UI.Model.Winform.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ using DH.Devices.Devices;
 | 
			
		||||
using DH.Devices.Motion;
 | 
			
		||||
using DH.Devices.PLC;
 | 
			
		||||
using DH.Devices.Vision;
 | 
			
		||||
using DH.Process;
 | 
			
		||||
using DHSoftware.Languages;
 | 
			
		||||
using DHSoftware.Models;
 | 
			
		||||
using DHSoftware.Utils;
 | 
			
		||||
@@ -18,17 +19,22 @@ using System;
 | 
			
		||||
using System.CodeDom;
 | 
			
		||||
using System.Collections.Concurrent;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Collections.ObjectModel;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Text.Json;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
using XKRS.UI.Device.Winform;
 | 
			
		||||
using static AntdUI.Math3D;
 | 
			
		||||
using static DH.Commons.Enums.EnumHelper;
 | 
			
		||||
using Camera = DHSoftware.Models.Camera;
 | 
			
		||||
using IOType = DH.Commons.Enums.IOType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace DHSoftware
 | 
			
		||||
{
 | 
			
		||||
@@ -229,7 +235,7 @@ namespace DHSoftware
 | 
			
		||||
        SLDMotion sLDMotion = new SLDMotion();
 | 
			
		||||
        private void MainWindow_Load(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            Json();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void MainWindow_FormClosed(object sender, FormClosedEventArgs e)
 | 
			
		||||
@@ -278,21 +284,15 @@ namespace DHSoftware
 | 
			
		||||
        public volatile int ProductNum_OK = 0;
 | 
			
		||||
        private readonly object _cameraSummaryLock = new object();
 | 
			
		||||
        public SimboVisionDriver? _visionEngine = null;
 | 
			
		||||
        List<DetectionConfig> DetectionConfigs = new List<DetectionConfig>();
 | 
			
		||||
        List<SimboStationMLEngineSet> SimboStationMLEngineList = new List<SimboStationMLEngineSet>();
 | 
			
		||||
        ProcessConfigBase DHconfig;
 | 
			
		||||
        //
 | 
			
		||||
      //  List<SimboStationMLEngineSet> SimboStationMLEngineList = new List<SimboStationMLEngineSet>();
 | 
			
		||||
        Dictionary<string, HDevEngineTool> HalconToolDict = new Dictionary<string, HDevEngineTool>();
 | 
			
		||||
        public List<RecongnitionLabel> RecongnitionLabelList { get; set; } = new List<RecongnitionLabel>();
 | 
			
		||||
        public DateTime startTime;
 | 
			
		||||
        private void HandleStartButton()
 | 
			
		||||
        private void Json()
 | 
			
		||||
        {
 | 
			
		||||
            CurrentMachine = true;
 | 
			
		||||
           
 | 
			
		||||
            //_visionEngine.Start();
 | 
			
		||||
            //[Category("深度学习检测配置")]
 | 
			
		||||
            //[DisplayName("检测标签定义集合")]
 | 
			
		||||
            //[Description("定义检测标签的集合,例如:Seg/Detection模式:断裂、油污、划伤...;Class模式:ok、ng、上面、下面、套环、正常...")]
 | 
			
		||||
            //[TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
            //[Editor(typeof(ComplexCollectionEditor<RecongnitionLabel>), typeof(UITypeEditor))]
 | 
			
		||||
            List<DetectionConfig> DetectionConfigs = new List<DetectionConfig>();
 | 
			
		||||
            RecongnitionLabel recongnition = new RecongnitionLabel
 | 
			
		||||
            {
 | 
			
		||||
                LabelName = "youwu",
 | 
			
		||||
@@ -353,6 +353,13 @@ namespace DHSoftware
 | 
			
		||||
            det1.IsEnabled = true;
 | 
			
		||||
            det1.ShowLocation.X = 1;
 | 
			
		||||
            det1.ShowLocation.Y = 1;
 | 
			
		||||
            det1.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1} ,
 | 
			
		||||
            }; 
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
            det2.CameraCollects = CameraCollects2;
 | 
			
		||||
            det2.ModelconfThreshold = Conf;
 | 
			
		||||
@@ -362,6 +369,12 @@ namespace DHSoftware
 | 
			
		||||
            det2.IsEnabled = true;
 | 
			
		||||
            det2.ShowLocation.X = 2;
 | 
			
		||||
            det2.ShowLocation.Y = 1;
 | 
			
		||||
            det2.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
           
 | 
			
		||||
            det3.CameraCollects = CameraCollects3;
 | 
			
		||||
            det3.ModelconfThreshold = Conf;
 | 
			
		||||
@@ -371,6 +384,13 @@ namespace DHSoftware
 | 
			
		||||
            det3.IsEnabled = true;
 | 
			
		||||
            det3.ShowLocation.X = 3;
 | 
			
		||||
            det3.ShowLocation.Y = 1;
 | 
			
		||||
            det3.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
            det4.CameraCollects = CameraCollects4;
 | 
			
		||||
            det4.ModelconfThreshold = Conf;
 | 
			
		||||
@@ -380,6 +400,13 @@ namespace DHSoftware
 | 
			
		||||
            det4.IsEnabled = true;
 | 
			
		||||
            det4.ShowLocation.X = 4;
 | 
			
		||||
            det4.ShowLocation.Y = 1;
 | 
			
		||||
            det4.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -391,6 +418,23 @@ namespace DHSoftware
 | 
			
		||||
            det5.IsEnabled = true;
 | 
			
		||||
            det5.ShowLocation.X = 1;
 | 
			
		||||
            det5.ShowLocation.Y = 2;
 | 
			
		||||
            det5.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
            det5.PreTreatCollects = new List<SizeTreatParam>()
 | 
			
		||||
            {
 | 
			
		||||
                new SizeTreatParam()
 | 
			
		||||
                {
 | 
			
		||||
                    PreName="高度测量",
 | 
			
		||||
                    IsEnable=true,
 | 
			
		||||
                    PreType=SizeEnum.高度测量,
 | 
			
		||||
                   ResultShow="sssssss",
 | 
			
		||||
                   OutResultShow="sssssss",
 | 
			
		||||
                },
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            det6.CameraCollects = CameraCollects6;
 | 
			
		||||
            det6.ModelconfThreshold = Conf;
 | 
			
		||||
@@ -400,6 +444,13 @@ namespace DHSoftware
 | 
			
		||||
            det6.IsEnabled = true;
 | 
			
		||||
            det6.ShowLocation.X = 2;
 | 
			
		||||
            det6.ShowLocation.Y = 2;
 | 
			
		||||
            det6.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
            det7.CameraCollects = CameraCollects7;
 | 
			
		||||
            det7.ModelconfThreshold = Conf;
 | 
			
		||||
@@ -409,6 +460,13 @@ namespace DHSoftware
 | 
			
		||||
            det7.IsEnabled = true;
 | 
			
		||||
            det7.ShowLocation.X = 3;
 | 
			
		||||
            det7.ShowLocation.Y = 2;
 | 
			
		||||
            det7.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
            det8.CameraCollects = CameraCollects8;
 | 
			
		||||
            det8.ModelconfThreshold = Conf;
 | 
			
		||||
@@ -416,8 +474,27 @@ namespace DHSoftware
 | 
			
		||||
            det8.ModelHeight = 640;
 | 
			
		||||
            det8.in_lable_path = "D:\\PROJECTS\\X015\\Vision\\Cam8.txt";
 | 
			
		||||
            det8.IsEnabled = true;
 | 
			
		||||
            det8.IsAddStation = true;
 | 
			
		||||
            det8.ShowLocation.X = 4;
 | 
			
		||||
            det8.ShowLocation.Y = 2;
 | 
			
		||||
            det8.DetectionLableList = new List<DetectionLable>()
 | 
			
		||||
           { new DetectionLable{ LabelName="xinquexian1",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian2",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian3",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
           new DetectionLable{ LabelName="xinquexian4",MaxArea=99999999,MinArea=1,MinSource=0.6,MaxSource=1 } ,
 | 
			
		||||
            };
 | 
			
		||||
            det8.PreTreatCollects = new List<SizeTreatParam>()
 | 
			
		||||
            {
 | 
			
		||||
                new SizeTreatParam()
 | 
			
		||||
                {
 | 
			
		||||
                    PreName="高度测量",
 | 
			
		||||
                    IsEnable=true,
 | 
			
		||||
                    PreType=SizeEnum.高度测量,
 | 
			
		||||
                   ResultShow="sssssss",
 | 
			
		||||
                   OutResultShow="sssssss",
 | 
			
		||||
                },
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            DetectionConfigs.Add(det1);
 | 
			
		||||
            DetectionConfigs.Add(det2);
 | 
			
		||||
@@ -428,6 +505,32 @@ namespace DHSoftware
 | 
			
		||||
            DetectionConfigs.Add(det7);
 | 
			
		||||
            DetectionConfigs.Add(det8);
 | 
			
		||||
 | 
			
		||||
             DHconfig = new ProcessConfigBase();
 | 
			
		||||
            DHconfig.StationCode = "小齿轮";
 | 
			
		||||
            DHconfig.DetectionConfigCollection = DetectionConfigs;
 | 
			
		||||
            //  DHconfig.ca = "小齿轮";
 | 
			
		||||
 | 
			
		||||
            // **序列化**
 | 
			
		||||
            string json = JsonSerializer.Serialize(DHconfig, new JsonSerializerOptions { WriteIndented = true });
 | 
			
		||||
            Console.WriteLine("序列化后的 JSON:\n" + json);
 | 
			
		||||
 | 
			
		||||
            var deserializedConfig = JsonSerializer.Deserialize<ProcessConfigBase>(json);
 | 
			
		||||
            Console.WriteLine("Station Code: " + deserializedConfig?.StationCode);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        private void HandleStartButton()
 | 
			
		||||
        {
 | 
			
		||||
            CurrentMachine = true;
 | 
			
		||||
           
 | 
			
		||||
            //_visionEngine.Start();
 | 
			
		||||
            //[Category("深度学习检测配置")]
 | 
			
		||||
            //[DisplayName("检测标签定义集合")]
 | 
			
		||||
            //[Description("定义检测标签的集合,例如:Seg/Detection模式:断裂、油污、划伤...;Class模式:ok、ng、上面、下面、套环、正常...")]
 | 
			
		||||
            //[TypeConverter(typeof(CollectionCountConvert))]
 | 
			
		||||
            //[Editor(typeof(ComplexCollectionEditor<RecongnitionLabel>), typeof(UITypeEditor))]
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            Cameras.Clear();
 | 
			
		||||
            HKCameras.Clear();
 | 
			
		||||
            Dectection.Clear();
 | 
			
		||||
@@ -477,7 +580,7 @@ namespace DHSoftware
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            DetectionConfigs.ForEach(detection =>
 | 
			
		||||
            DHconfig?.DetectionConfigCollection.ForEach(detection =>
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
                detection.CameraCollects.ForEach(cam =>
 | 
			
		||||
@@ -504,7 +607,7 @@ namespace DHSoftware
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            _visionEngine = new SimboVisionDriver();
 | 
			
		||||
            _visionEngine.DetectionConfigs = DetectionConfigs;
 | 
			
		||||
            _visionEngine.DetectionConfigs =DHconfig?.DetectionConfigCollection;
 | 
			
		||||
 | 
			
		||||
            _visionEngine.Init();
 | 
			
		||||
            CtrlVisionRunBase ctrlVisionRun = new CtrlVisionRunBase(_visionEngine);
 | 
			
		||||
@@ -1020,7 +1123,7 @@ namespace DHSoftware
 | 
			
		||||
            listCamBase.Add(cam1);
 | 
			
		||||
            listCamBase.Add(cam2);
 | 
			
		||||
 | 
			
		||||
            SettingWindow1 settingWindow = new SettingWindow1();
 | 
			
		||||
            SettingWindow1 settingWindow = new SettingWindow1(DHconfig);
 | 
			
		||||
            settingWindow.Show();
 | 
			
		||||
            //s.cameras = listCamBase;
 | 
			
		||||
            //s.Show();
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ namespace DHSoftware
 | 
			
		||||
    {
 | 
			
		||||
        private static MainWindow mainWindow;
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 应用程序的主入口点。
 | 
			
		||||
        /// 应用程序的主入口点 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [STAThread]
 | 
			
		||||
        static void Main()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								DHSoftware/Properties/Resources.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										28
									
								
								DHSoftware/Properties/Resources.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -1,10 +1,10 @@
 | 
			
		||||
//------------------------------------------------------------------------------
 | 
			
		||||
// <auto-generated>
 | 
			
		||||
//     此代码由工具生成。
 | 
			
		||||
//     此代码由工具生成 
 | 
			
		||||
//     运行时版本:4.0.30319.42000
 | 
			
		||||
//
 | 
			
		||||
//     对此文件的更改可能会导致不正确的行为,并且如果
 | 
			
		||||
//     重新生成代码,这些更改将会丢失。
 | 
			
		||||
//     重新生成代码,这些更改将会丢失 
 | 
			
		||||
// </auto-generated>
 | 
			
		||||
//------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
@@ -13,12 +13,12 @@ namespace DHSoftware.Properties {
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    ///   一个强类型的资源类,用于查找本地化的字符串等。
 | 
			
		||||
    ///   一个强类型的资源类,用于查找本地化的字符串等 
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    // 此类是由 StronglyTypedResourceBuilder
 | 
			
		||||
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
 | 
			
		||||
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的 
 | 
			
		||||
    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
 | 
			
		||||
    // (以 /str 作为命令选项),或重新生成 VS 项目。
 | 
			
		||||
    // (以 /str 作为命令选项),或重新生成 VS 项目 
 | 
			
		||||
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
 | 
			
		||||
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
			
		||||
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
 | 
			
		||||
@@ -33,7 +33,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   返回此类使用的缓存的 ResourceManager 实例。
 | 
			
		||||
        ///   返回此类使用的缓存的 ResourceManager 实例 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
 | 
			
		||||
        internal static global::System.Resources.ResourceManager ResourceManager {
 | 
			
		||||
@@ -48,7 +48,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   重写当前线程的 CurrentUICulture 属性,对
 | 
			
		||||
        ///   使用此强类型资源类的所有资源查找执行重写。
 | 
			
		||||
        ///   使用此强类型资源类的所有资源查找执行重写 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
 | 
			
		||||
        internal static global::System.Globalization.CultureInfo Culture {
 | 
			
		||||
@@ -61,7 +61,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap bg1 {
 | 
			
		||||
            get {
 | 
			
		||||
@@ -71,7 +71,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap bg2 {
 | 
			
		||||
            get {
 | 
			
		||||
@@ -81,7 +81,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap bg3 {
 | 
			
		||||
            get {
 | 
			
		||||
@@ -91,7 +91,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap head {
 | 
			
		||||
            get {
 | 
			
		||||
@@ -101,7 +101,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap head2 {
 | 
			
		||||
            get {
 | 
			
		||||
@@ -111,7 +111,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap logo {
 | 
			
		||||
            get {
 | 
			
		||||
@@ -121,7 +121,7 @@ namespace DHSoftware.Properties {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
 | 
			
		||||
        ///   查找 System.Drawing.Bitmap 类型的本地化资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        internal static System.Drawing.Bitmap 关闭 {
 | 
			
		||||
            get {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/CamConfigFrm.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/CamConfigFrm.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -4,14 +4,14 @@
 | 
			
		||||
    {
 | 
			
		||||
       
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/CameraConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/CameraConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class CameraConfigControl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class CorrelatedCameraEdit
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/CtrlVisionDisplay.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/CtrlVisionDisplay.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class CtrlVisionDisplay
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/CtrlVisionRunBase.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/CtrlVisionRunBase.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -4,14 +4,14 @@ namespace XKRS.UI.Device.Winform
 | 
			
		||||
    partial class CtrlVisionRunBase
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -25,7 +25,7 @@ namespace XKRS.UI.Device.Winform
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/DefectRowEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/DefectRowEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class DefectRowEdit
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/DetectConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/DetectConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class DetectConfigControl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										171
									
								
								DHSoftware/Views/DetectControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										171
									
								
								DHSoftware/Views/DetectControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class DetectControl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
@@ -41,9 +41,9 @@
 | 
			
		||||
            preTable = new AntdUI.Table();
 | 
			
		||||
            label3 = new AntdUI.Label();
 | 
			
		||||
            btnPath = new AntdUI.Button();
 | 
			
		||||
            switch1 = new AntdUI.Switch();
 | 
			
		||||
            swtPre = new AntdUI.Switch();
 | 
			
		||||
            label2 = new AntdUI.Label();
 | 
			
		||||
            iptPath = new AntdUI.Input();
 | 
			
		||||
            iptPrePath = new AntdUI.Input();
 | 
			
		||||
            label1 = new AntdUI.Label();
 | 
			
		||||
            tabPage2 = new AntdUI.TabPage();
 | 
			
		||||
            btnLableDelete = new AntdUI.Button();
 | 
			
		||||
@@ -59,28 +59,26 @@
 | 
			
		||||
            label6 = new AntdUI.Label();
 | 
			
		||||
            switch5 = new AntdUI.Switch();
 | 
			
		||||
            label12 = new AntdUI.Label();
 | 
			
		||||
            input1 = new AntdUI.Input();
 | 
			
		||||
            iptScore = new AntdUI.Input();
 | 
			
		||||
            label5 = new AntdUI.Label();
 | 
			
		||||
            flowPanel1 = new AntdUI.FlowPanel();
 | 
			
		||||
            label11 = new AntdUI.Label();
 | 
			
		||||
            switch3 = new AntdUI.Switch();
 | 
			
		||||
            swIsAddStation = new AntdUI.Switch();
 | 
			
		||||
            label10 = new AntdUI.Label();
 | 
			
		||||
            stDetectType = new AntdUI.Select();
 | 
			
		||||
            label9 = new AntdUI.Label();
 | 
			
		||||
            btnCorrelatedCamera = new AntdUI.Button();
 | 
			
		||||
            btnPath2 = new AntdUI.Button();
 | 
			
		||||
            switch2 = new AntdUI.Switch();
 | 
			
		||||
            swIsEnabled = new AntdUI.Switch();
 | 
			
		||||
            label7 = new AntdUI.Label();
 | 
			
		||||
            iptPath2 = new AntdUI.Input();
 | 
			
		||||
            iptModelPath = new AntdUI.Input();
 | 
			
		||||
            label8 = new AntdUI.Label();
 | 
			
		||||
            tabPage3 = new AntdUI.TabPage();
 | 
			
		||||
            tabPage4 = new AntdUI.TabPage();
 | 
			
		||||
            switch8 = new AntdUI.Switch();
 | 
			
		||||
            btnSizeDel = new AntdUI.Button();
 | 
			
		||||
            btnSizeAdd = new AntdUI.Button();
 | 
			
		||||
            SizeTable = new AntdUI.Table();
 | 
			
		||||
            label17 = new AntdUI.Label();
 | 
			
		||||
            label18 = new AntdUI.Label();
 | 
			
		||||
            tabs1.SuspendLayout();
 | 
			
		||||
            tabPage1.SuspendLayout();
 | 
			
		||||
            tabPage2.SuspendLayout();
 | 
			
		||||
@@ -98,7 +96,6 @@
 | 
			
		||||
            tabs1.Pages.Add(tabPage1);
 | 
			
		||||
            tabs1.Pages.Add(tabPage2);
 | 
			
		||||
            tabs1.Pages.Add(tabPage3);
 | 
			
		||||
            tabs1.SelectedIndex = 2;
 | 
			
		||||
            tabs1.Size = new Size(915, 609);
 | 
			
		||||
            tabs1.Style = styleLine1;
 | 
			
		||||
            tabs1.TabIndex = 1;
 | 
			
		||||
@@ -115,11 +112,11 @@
 | 
			
		||||
            tabPage1.Controls.Add(preTable);
 | 
			
		||||
            tabPage1.Controls.Add(label3);
 | 
			
		||||
            tabPage1.Controls.Add(btnPath);
 | 
			
		||||
            tabPage1.Controls.Add(switch1);
 | 
			
		||||
            tabPage1.Controls.Add(swtPre);
 | 
			
		||||
            tabPage1.Controls.Add(label2);
 | 
			
		||||
            tabPage1.Controls.Add(iptPath);
 | 
			
		||||
            tabPage1.Controls.Add(iptPrePath);
 | 
			
		||||
            tabPage1.Controls.Add(label1);
 | 
			
		||||
            tabPage1.Location = new Point(-909, -575);
 | 
			
		||||
            tabPage1.Location = new Point(3, 31);
 | 
			
		||||
            tabPage1.Name = "tabPage1";
 | 
			
		||||
            tabPage1.Size = new Size(909, 575);
 | 
			
		||||
            tabPage1.TabIndex = 0;
 | 
			
		||||
@@ -222,14 +219,14 @@
 | 
			
		||||
            btnPath.TabIndex = 7;
 | 
			
		||||
            btnPath.Text = "打开";
 | 
			
		||||
            // 
 | 
			
		||||
            // switch1
 | 
			
		||||
            // swtPre
 | 
			
		||||
            // 
 | 
			
		||||
            switch1.CheckedText = "启用";
 | 
			
		||||
            switch1.Location = new Point(207, 33);
 | 
			
		||||
            switch1.Name = "switch1";
 | 
			
		||||
            switch1.Size = new Size(82, 33);
 | 
			
		||||
            switch1.TabIndex = 4;
 | 
			
		||||
            switch1.UnCheckedText = "关闭";
 | 
			
		||||
            swtPre.CheckedText = "启用";
 | 
			
		||||
            swtPre.Location = new Point(207, 33);
 | 
			
		||||
            swtPre.Name = "swtPre";
 | 
			
		||||
            swtPre.Size = new Size(82, 33);
 | 
			
		||||
            swtPre.TabIndex = 4;
 | 
			
		||||
            swtPre.UnCheckedText = "关闭";
 | 
			
		||||
            // 
 | 
			
		||||
            // label2
 | 
			
		||||
            // 
 | 
			
		||||
@@ -239,22 +236,22 @@
 | 
			
		||||
            label2.TabIndex = 3;
 | 
			
		||||
            label2.Text = "状      态";
 | 
			
		||||
            // 
 | 
			
		||||
            // iptPath
 | 
			
		||||
            // iptPrePath
 | 
			
		||||
            // 
 | 
			
		||||
            iptPath.Location = new Point(191, 79);
 | 
			
		||||
            iptPath.Name = "iptPath";
 | 
			
		||||
            iptPath.PlaceholderText = "请点击打开按钮选择模型路径";
 | 
			
		||||
            iptPath.ReadOnly = true;
 | 
			
		||||
            iptPath.Size = new Size(423, 42);
 | 
			
		||||
            iptPath.TabIndex = 1;
 | 
			
		||||
            iptPrePath.Location = new Point(191, 79);
 | 
			
		||||
            iptPrePath.Name = "iptPrePath";
 | 
			
		||||
            iptPrePath.PlaceholderText = "请点击打开按钮选择预处理路径";
 | 
			
		||||
            iptPrePath.ReadOnly = true;
 | 
			
		||||
            iptPrePath.Size = new Size(423, 42);
 | 
			
		||||
            iptPrePath.TabIndex = 1;
 | 
			
		||||
            // 
 | 
			
		||||
            // label1
 | 
			
		||||
            // 
 | 
			
		||||
            label1.Location = new Point(110, 89);
 | 
			
		||||
            label1.Name = "label1";
 | 
			
		||||
            label1.Size = new Size(75, 23);
 | 
			
		||||
            label1.Size = new Size(86, 23);
 | 
			
		||||
            label1.TabIndex = 0;
 | 
			
		||||
            label1.Text = "模型路径";
 | 
			
		||||
            label1.Text = "预处理路径";
 | 
			
		||||
            // 
 | 
			
		||||
            // tabPage2
 | 
			
		||||
            // 
 | 
			
		||||
@@ -271,19 +268,19 @@
 | 
			
		||||
            tabPage2.Controls.Add(label6);
 | 
			
		||||
            tabPage2.Controls.Add(switch5);
 | 
			
		||||
            tabPage2.Controls.Add(label12);
 | 
			
		||||
            tabPage2.Controls.Add(input1);
 | 
			
		||||
            tabPage2.Controls.Add(iptScore);
 | 
			
		||||
            tabPage2.Controls.Add(label5);
 | 
			
		||||
            tabPage2.Controls.Add(flowPanel1);
 | 
			
		||||
            tabPage2.Controls.Add(label11);
 | 
			
		||||
            tabPage2.Controls.Add(switch3);
 | 
			
		||||
            tabPage2.Controls.Add(swIsAddStation);
 | 
			
		||||
            tabPage2.Controls.Add(label10);
 | 
			
		||||
            tabPage2.Controls.Add(stDetectType);
 | 
			
		||||
            tabPage2.Controls.Add(label9);
 | 
			
		||||
            tabPage2.Controls.Add(btnCorrelatedCamera);
 | 
			
		||||
            tabPage2.Controls.Add(btnPath2);
 | 
			
		||||
            tabPage2.Controls.Add(switch2);
 | 
			
		||||
            tabPage2.Controls.Add(swIsEnabled);
 | 
			
		||||
            tabPage2.Controls.Add(label7);
 | 
			
		||||
            tabPage2.Controls.Add(iptPath2);
 | 
			
		||||
            tabPage2.Controls.Add(iptModelPath);
 | 
			
		||||
            tabPage2.Controls.Add(label8);
 | 
			
		||||
            tabPage2.Location = new Point(-909, -575);
 | 
			
		||||
            tabPage2.Name = "tabPage2";
 | 
			
		||||
@@ -416,14 +413,13 @@
 | 
			
		||||
            label12.TabIndex = 36;
 | 
			
		||||
            label12.Text = "OK原图";
 | 
			
		||||
            // 
 | 
			
		||||
            // input1
 | 
			
		||||
            // iptScore
 | 
			
		||||
            // 
 | 
			
		||||
            input1.Location = new Point(649, 24);
 | 
			
		||||
            input1.Name = "input1";
 | 
			
		||||
            input1.PlaceholderText = "";
 | 
			
		||||
            input1.ReadOnly = true;
 | 
			
		||||
            input1.Size = new Size(117, 42);
 | 
			
		||||
            input1.TabIndex = 35;
 | 
			
		||||
            iptScore.Location = new Point(649, 24);
 | 
			
		||||
            iptScore.Name = "iptScore";
 | 
			
		||||
            iptScore.PlaceholderText = "";
 | 
			
		||||
            iptScore.Size = new Size(117, 42);
 | 
			
		||||
            iptScore.TabIndex = 35;
 | 
			
		||||
            // 
 | 
			
		||||
            // label5
 | 
			
		||||
            // 
 | 
			
		||||
@@ -451,14 +447,14 @@
 | 
			
		||||
            label11.TabIndex = 32;
 | 
			
		||||
            label11.Text = "关联相机";
 | 
			
		||||
            // 
 | 
			
		||||
            // switch3
 | 
			
		||||
            // swIsAddStation
 | 
			
		||||
            // 
 | 
			
		||||
            switch3.CheckedText = "启用";
 | 
			
		||||
            switch3.Location = new Point(270, 26);
 | 
			
		||||
            switch3.Name = "switch3";
 | 
			
		||||
            switch3.Size = new Size(82, 33);
 | 
			
		||||
            switch3.TabIndex = 31;
 | 
			
		||||
            switch3.UnCheckedText = "关闭";
 | 
			
		||||
            swIsAddStation.CheckedText = "启用";
 | 
			
		||||
            swIsAddStation.Location = new Point(270, 26);
 | 
			
		||||
            swIsAddStation.Name = "swIsAddStation";
 | 
			
		||||
            swIsAddStation.Size = new Size(82, 33);
 | 
			
		||||
            swIsAddStation.TabIndex = 31;
 | 
			
		||||
            swIsAddStation.UnCheckedText = "关闭";
 | 
			
		||||
            // 
 | 
			
		||||
            // label10
 | 
			
		||||
            // 
 | 
			
		||||
@@ -512,14 +508,14 @@
 | 
			
		||||
            btnPath2.TabIndex = 20;
 | 
			
		||||
            btnPath2.Text = "打开";
 | 
			
		||||
            // 
 | 
			
		||||
            // switch2
 | 
			
		||||
            // swIsEnabled
 | 
			
		||||
            // 
 | 
			
		||||
            switch2.CheckedText = "启用";
 | 
			
		||||
            switch2.Location = new Point(110, 26);
 | 
			
		||||
            switch2.Name = "switch2";
 | 
			
		||||
            switch2.Size = new Size(82, 33);
 | 
			
		||||
            switch2.TabIndex = 19;
 | 
			
		||||
            switch2.UnCheckedText = "关闭";
 | 
			
		||||
            swIsEnabled.CheckedText = "启用";
 | 
			
		||||
            swIsEnabled.Location = new Point(110, 26);
 | 
			
		||||
            swIsEnabled.Name = "swIsEnabled";
 | 
			
		||||
            swIsEnabled.Size = new Size(82, 33);
 | 
			
		||||
            swIsEnabled.TabIndex = 19;
 | 
			
		||||
            swIsEnabled.UnCheckedText = "关闭";
 | 
			
		||||
            // 
 | 
			
		||||
            // label7
 | 
			
		||||
            // 
 | 
			
		||||
@@ -529,14 +525,14 @@
 | 
			
		||||
            label7.TabIndex = 18;
 | 
			
		||||
            label7.Text = "状      态";
 | 
			
		||||
            // 
 | 
			
		||||
            // iptPath2
 | 
			
		||||
            // iptModelPath
 | 
			
		||||
            // 
 | 
			
		||||
            iptPath2.Location = new Point(110, 75);
 | 
			
		||||
            iptPath2.Name = "iptPath2";
 | 
			
		||||
            iptPath2.PlaceholderText = "请点击打开按钮选择模型路径";
 | 
			
		||||
            iptPath2.ReadOnly = true;
 | 
			
		||||
            iptPath2.Size = new Size(656, 42);
 | 
			
		||||
            iptPath2.TabIndex = 17;
 | 
			
		||||
            iptModelPath.Location = new Point(110, 75);
 | 
			
		||||
            iptModelPath.Name = "iptModelPath";
 | 
			
		||||
            iptModelPath.PlaceholderText = "请点击打开按钮选择模型路径";
 | 
			
		||||
            iptModelPath.ReadOnly = true;
 | 
			
		||||
            iptModelPath.Size = new Size(656, 42);
 | 
			
		||||
            iptModelPath.TabIndex = 17;
 | 
			
		||||
            // 
 | 
			
		||||
            // label8
 | 
			
		||||
            // 
 | 
			
		||||
@@ -549,7 +545,7 @@
 | 
			
		||||
            // tabPage3
 | 
			
		||||
            // 
 | 
			
		||||
            tabPage3.Controls.Add(tabPage4);
 | 
			
		||||
            tabPage3.Location = new Point(3, 31);
 | 
			
		||||
            tabPage3.Location = new Point(-909, -575);
 | 
			
		||||
            tabPage3.Name = "tabPage3";
 | 
			
		||||
            tabPage3.Size = new Size(909, 575);
 | 
			
		||||
            tabPage3.TabIndex = 3;
 | 
			
		||||
@@ -557,27 +553,16 @@
 | 
			
		||||
            // 
 | 
			
		||||
            // tabPage4
 | 
			
		||||
            // 
 | 
			
		||||
            tabPage4.Controls.Add(switch8);
 | 
			
		||||
            tabPage4.Controls.Add(btnSizeDel);
 | 
			
		||||
            tabPage4.Controls.Add(btnSizeAdd);
 | 
			
		||||
            tabPage4.Controls.Add(SizeTable);
 | 
			
		||||
            tabPage4.Controls.Add(label17);
 | 
			
		||||
            tabPage4.Controls.Add(label18);
 | 
			
		||||
            tabPage4.Location = new Point(8, 8);
 | 
			
		||||
            tabPage4.Name = "tabPage4";
 | 
			
		||||
            tabPage4.Size = new Size(909, 575);
 | 
			
		||||
            tabPage4.TabIndex = 1;
 | 
			
		||||
            tabPage4.Text = "预处理";
 | 
			
		||||
            // 
 | 
			
		||||
            // switch8
 | 
			
		||||
            // 
 | 
			
		||||
            switch8.CheckedText = "启用";
 | 
			
		||||
            switch8.Location = new Point(120, 33);
 | 
			
		||||
            switch8.Name = "switch8";
 | 
			
		||||
            switch8.Size = new Size(82, 33);
 | 
			
		||||
            switch8.TabIndex = 11;
 | 
			
		||||
            switch8.UnCheckedText = "关闭";
 | 
			
		||||
            // 
 | 
			
		||||
            // btnSizeDel
 | 
			
		||||
            // 
 | 
			
		||||
            btnSizeDel.BorderWidth = 2F;
 | 
			
		||||
@@ -585,7 +570,7 @@
 | 
			
		||||
            btnSizeDel.Ghost = true;
 | 
			
		||||
            btnSizeDel.IconRatio = 0.8F;
 | 
			
		||||
            btnSizeDel.IconSvg = resources.GetString("btnSizeDel.IconSvg");
 | 
			
		||||
            btnSizeDel.Location = new Point(747, 192);
 | 
			
		||||
            btnSizeDel.Location = new Point(775, 192);
 | 
			
		||||
            btnSizeDel.Name = "btnSizeDel";
 | 
			
		||||
            btnSizeDel.Size = new Size(80, 38);
 | 
			
		||||
            btnSizeDel.TabIndex = 10;
 | 
			
		||||
@@ -598,7 +583,7 @@
 | 
			
		||||
            btnSizeAdd.Ghost = true;
 | 
			
		||||
            btnSizeAdd.IconRatio = 0.8F;
 | 
			
		||||
            btnSizeAdd.IconSvg = resources.GetString("btnSizeAdd.IconSvg");
 | 
			
		||||
            btnSizeAdd.Location = new Point(747, 148);
 | 
			
		||||
            btnSizeAdd.Location = new Point(775, 148);
 | 
			
		||||
            btnSizeAdd.Name = "btnSizeAdd";
 | 
			
		||||
            btnSizeAdd.Size = new Size(80, 38);
 | 
			
		||||
            btnSizeAdd.TabIndex = 9;
 | 
			
		||||
@@ -606,28 +591,21 @@
 | 
			
		||||
            // 
 | 
			
		||||
            // SizeTable
 | 
			
		||||
            // 
 | 
			
		||||
            SizeTable.Location = new Point(38, 118);
 | 
			
		||||
            SizeTable.AutoSizeColumnsMode = AntdUI.ColumnsMode.Fill;
 | 
			
		||||
            SizeTable.Location = new Point(38, 65);
 | 
			
		||||
            SizeTable.Name = "SizeTable";
 | 
			
		||||
            SizeTable.Size = new Size(686, 402);
 | 
			
		||||
            SizeTable.Size = new Size(705, 455);
 | 
			
		||||
            SizeTable.TabIndex = 8;
 | 
			
		||||
            SizeTable.Text = "table1";
 | 
			
		||||
            // 
 | 
			
		||||
            // label17
 | 
			
		||||
            // 
 | 
			
		||||
            label17.Location = new Point(38, 89);
 | 
			
		||||
            label17.Location = new Point(38, 24);
 | 
			
		||||
            label17.Name = "label17";
 | 
			
		||||
            label17.Size = new Size(91, 23);
 | 
			
		||||
            label17.TabIndex = 1;
 | 
			
		||||
            label17.Text = "配      置";
 | 
			
		||||
            // 
 | 
			
		||||
            // label18
 | 
			
		||||
            // 
 | 
			
		||||
            label18.Location = new Point(38, 43);
 | 
			
		||||
            label18.Name = "label18";
 | 
			
		||||
            label18.Size = new Size(91, 23);
 | 
			
		||||
            label18.TabIndex = 3;
 | 
			
		||||
            label18.Text = "状      态";
 | 
			
		||||
            // 
 | 
			
		||||
            // DetectControl
 | 
			
		||||
            // 
 | 
			
		||||
            AutoScaleDimensions = new SizeF(7F, 17F);
 | 
			
		||||
@@ -635,6 +613,7 @@
 | 
			
		||||
            Controls.Add(tabs1);
 | 
			
		||||
            Name = "DetectControl";
 | 
			
		||||
            Size = new Size(915, 609);
 | 
			
		||||
            Load += DetectControl_Load;
 | 
			
		||||
            tabs1.ResumeLayout(false);
 | 
			
		||||
            tabPage1.ResumeLayout(false);
 | 
			
		||||
            tabPage2.ResumeLayout(false);
 | 
			
		||||
@@ -650,9 +629,9 @@
 | 
			
		||||
        private AntdUI.TabPage tabPage2;
 | 
			
		||||
        private AntdUI.TabPage tabPage3;
 | 
			
		||||
        private AntdUI.Label label1;
 | 
			
		||||
        private AntdUI.Input iptPath;
 | 
			
		||||
        private AntdUI.Input iptPrePath;
 | 
			
		||||
        private AntdUI.Label label2;
 | 
			
		||||
        private AntdUI.Switch switch1;
 | 
			
		||||
        private AntdUI.Switch swtPre;
 | 
			
		||||
        private AntdUI.Button btnPath;
 | 
			
		||||
        private AntdUI.Label label3;
 | 
			
		||||
        private AntdUI.Button btnPreDelete;
 | 
			
		||||
@@ -664,18 +643,18 @@
 | 
			
		||||
        private AntdUI.Table PreOutTable;
 | 
			
		||||
        private AntdUI.Button btnCorrelatedCamera;
 | 
			
		||||
        private AntdUI.Button btnPath2;
 | 
			
		||||
        private AntdUI.Switch switch2;
 | 
			
		||||
        private AntdUI.Switch swIsEnabled;
 | 
			
		||||
        private AntdUI.Label label7;
 | 
			
		||||
        private AntdUI.Input iptPath2;
 | 
			
		||||
        private AntdUI.Input iptModelPath;
 | 
			
		||||
        private AntdUI.Label label8;
 | 
			
		||||
        private AntdUI.Select stDetectType;
 | 
			
		||||
        private AntdUI.Label label9;
 | 
			
		||||
        private AntdUI.Switch switch3;
 | 
			
		||||
        private AntdUI.Switch swIsAddStation;
 | 
			
		||||
        private AntdUI.Label label10;
 | 
			
		||||
        private AntdUI.Label label11;
 | 
			
		||||
        private AntdUI.FlowPanel flowPanel1;
 | 
			
		||||
        private AntdUI.Label label5;
 | 
			
		||||
        private AntdUI.Input input1;
 | 
			
		||||
        private AntdUI.Input iptScore;
 | 
			
		||||
        private AntdUI.Switch switch4;
 | 
			
		||||
        private AntdUI.Label label6;
 | 
			
		||||
        private AntdUI.Switch switch5;
 | 
			
		||||
@@ -694,7 +673,5 @@
 | 
			
		||||
        private AntdUI.Button btnSizeAdd;
 | 
			
		||||
        private AntdUI.Table SizeTable;
 | 
			
		||||
        private AntdUI.Label label17;
 | 
			
		||||
        private AntdUI.Label label18;
 | 
			
		||||
        private AntdUI.Switch switch8;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,16 +21,198 @@ namespace DHSoftware.Views
 | 
			
		||||
    public partial class DetectControl : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        Window window;
 | 
			
		||||
        //  DetectionConfig detectionConfig;
 | 
			
		||||
        private DetectionConfig _config;
 | 
			
		||||
        List<RelatedCamera> relatedCameras = new List<RelatedCamera>();
 | 
			
		||||
 | 
			
		||||
        AntList<PreTreatParam> PreTreatList;
 | 
			
		||||
        AntList<PreTreatParam> PreOutTreatList;
 | 
			
		||||
        AntList<DetectionLable> DetectionLableList;
 | 
			
		||||
        AntList<SizeTreatParam> SizeLableList;
 | 
			
		||||
        PreTreatParam curPreTreat;
 | 
			
		||||
        PreTreatParam curPreOutTreat;
 | 
			
		||||
        DetectionLable curDetectionLable;
 | 
			
		||||
        SizeTreatParam SizeParamLable;
 | 
			
		||||
        public DetectionConfig detectionConfig
 | 
			
		||||
        {
 | 
			
		||||
            get => _config;
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (_config != null)
 | 
			
		||||
                {
 | 
			
		||||
                    _config.PropertyChanged -= Config_PropertyChanged; // 解绑旧的
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                _config = value;
 | 
			
		||||
 | 
			
		||||
                if (_config != null)
 | 
			
		||||
                {
 | 
			
		||||
                    _config.PropertyChanged += Config_PropertyChanged; // 绑定新的
 | 
			
		||||
                    UpdateUI();  // 初始化 UI
 | 
			
		||||
                }        
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private void Config_PropertyChanged(object sender, PropertyChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // 监听所有属性变化
 | 
			
		||||
            switch (e.PropertyName)
 | 
			
		||||
            {
 | 
			
		||||
                case nameof(DetectionConfig.IsAddStation):
 | 
			
		||||
                    swIsAddStation.Checked = _config.IsAddStation;
 | 
			
		||||
                    break;
 | 
			
		||||
                case nameof(DetectionConfig.IsEnabled):
 | 
			
		||||
                      swIsEnabled.Checked = _config.IsEnabled;
 | 
			
		||||
                    break;
 | 
			
		||||
                case nameof(DetectionConfig.ModelType):
 | 
			
		||||
                      stDetectType.SelectedIndex = (int)_config.ModelType-1;
 | 
			
		||||
                    break;
 | 
			
		||||
                case nameof(DetectionConfig.ModelconfThreshold):
 | 
			
		||||
                    if (iptScore.InvokeRequired)
 | 
			
		||||
                    {
 | 
			
		||||
                        iptScore.Invoke(() => iptScore.Text = _config.ModelconfThreshold.ToString());
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        iptScore.Text = _config.ModelconfThreshold.ToString();
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                case nameof(DetectionConfig.PreTreatCollects):
 | 
			
		||||
                   
 | 
			
		||||
                    break;
 | 
			
		||||
                   
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
        private void UpdateUI()
 | 
			
		||||
        {
 | 
			
		||||
            if (_config == null) return;
 | 
			
		||||
 | 
			
		||||
            swIsAddStation.Checked = _config.IsAddStation;
 | 
			
		||||
            swIsEnabled.Checked = _config.IsEnabled;
 | 
			
		||||
            stDetectType.SelectedIndex = (int)_config.ModelType - 1;
 | 
			
		||||
            iptScore.Text = _config.ModelconfThreshold.ToString();
 | 
			
		||||
            iptModelPath.Text = _config.ModelPath;
 | 
			
		||||
            swtPre.Checked = _config.IsPreEnabled;
 | 
			
		||||
            iptPrePath.Text = _config.HalconAlgorithemPath_Pre;
 | 
			
		||||
            // textBoxName.Text = _config.Name;
 | 
			
		||||
            // checkBoxEnableGPU.Checked = _config.IsEnableGPU;
 | 
			
		||||
        }
 | 
			
		||||
        public DetectControl(Window _window)
 | 
			
		||||
        {
 | 
			
		||||
            window = _window;
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            //this.detectionConfig = detectionConfig;
 | 
			
		||||
            //初始化表格列头
 | 
			
		||||
            InitTableColumns();
 | 
			
		||||
            InitData();
 | 
			
		||||
            BindEventHandler();
 | 
			
		||||
            foreach (var item in MLModelTypes)
 | 
			
		||||
            {
 | 
			
		||||
                stDetectType.Items.Add(item.Key);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            BindEventHandler();
 | 
			
		||||
            // 如果你的控件是通过设计器生成的,确保事件已经在设计器文件中绑定。
 | 
			
		||||
            swtPre.CheckedChanged += swtPre_CheckedChanged; // 确保控件的事件处理器被注册
 | 
			
		||||
            swIsAddStation.CheckedChanged += swIsAddStation_CheckedChanged; // 确保控件的事件处理器被注册
 | 
			
		||||
            swIsEnabled.CheckedChanged += swIsEnabled_CheckedChanged; // 确保控件的事件处理器被注册
 | 
			
		||||
            stDetectType.SelectedIndexChanged += stDetectType_SelectedIndexChanged; // 确保控件的事件处理器被注册
 | 
			
		||||
            iptScore.TextChanged += IptScore_TextChanged;
 | 
			
		||||
            iptModelPath.TextChanged += IptModelPath_TextChanged;
 | 
			
		||||
        }
 | 
			
		||||
        private void IptScore_TextChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (_config != null && !string.IsNullOrEmpty(iptScore.Text))
 | 
			
		||||
            {
 | 
			
		||||
                if (float.TryParse(iptScore.Text, out float score) && _config.ModelconfThreshold != score)
 | 
			
		||||
                {
 | 
			
		||||
                    _config.ModelconfThreshold = score;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    iptScore.Text = _config.ModelconfThreshold.ToString();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private void IptModelPath_TextChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (_config != null && !string.IsNullOrEmpty(iptModelPath.Text))
 | 
			
		||||
            {
 | 
			
		||||
                if ( _config.ModelPath != iptModelPath.Text)
 | 
			
		||||
                {
 | 
			
		||||
                    _config.ModelPath = iptModelPath.Text;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    iptModelPath.Text = _config.ModelPath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private void stDetectType_SelectedIndexChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // 下拉选项变更事件处理
 | 
			
		||||
            
 | 
			
		||||
                if (_config != null && stDetectType.SelectedIndex != -1)
 | 
			
		||||
                {
 | 
			
		||||
                    // 防止循环更新
 | 
			
		||||
                    if ((int)_config.ModelType != stDetectType.SelectedIndex + 1)
 | 
			
		||||
                    {
 | 
			
		||||
                        _config.ModelType = (MLModelType)(stDetectType.SelectedIndex + 1);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            
 | 
			
		||||
        }
 | 
			
		||||
        private void swtPre_CheckedChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // 当用户改变控件的值时,更新数据模型的属性
 | 
			
		||||
            if (_config != null)
 | 
			
		||||
            {
 | 
			
		||||
                _config.IsPreEnabled = swtPre.Checked;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private void swIsAddStation_CheckedChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // 当用户改变控件的值时,更新数据模型的属性
 | 
			
		||||
            if (_config != null)
 | 
			
		||||
            {
 | 
			
		||||
                _config.IsAddStation = swIsAddStation.Checked;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private void swIsEnabled_CheckedChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // 当用户改变控件的值时,更新数据模型的属性
 | 
			
		||||
            if (_config != null)
 | 
			
		||||
            {
 | 
			
		||||
                _config.IsEnabled = swIsEnabled.Checked;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 更新尺寸测量表格
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void UpdatePreTreatCollectsFromSizeTable()
 | 
			
		||||
        {
 | 
			
		||||
            // 假设 SizeLableList 是 SizeTable 的数据源
 | 
			
		||||
            List<SizeTreatParam> updatedPreTreatCollects = new List<SizeTreatParam>();
 | 
			
		||||
 | 
			
		||||
            foreach (var sizeTreat in SizeLableList)
 | 
			
		||||
            {
 | 
			
		||||
                var preTreatCollect = new SizeTreatParam
 | 
			
		||||
                {
 | 
			
		||||
                    IsEnable = sizeTreat.IsEnable,
 | 
			
		||||
                    PreName = sizeTreat.PreName,
 | 
			
		||||
                    PrePix = sizeTreat.PrePix,
 | 
			
		||||
                    PreType = sizeTreat.PreType,
 | 
			
		||||
                    ResultShow = sizeTreat.ResultShow,
 | 
			
		||||
                    OutResultShow = sizeTreat.OutResultShow
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                updatedPreTreatCollects.Add(preTreatCollect);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 将更新后的数据设置到 PreTreatCollects
 | 
			
		||||
            detectionConfig.PreTreatCollects = updatedPreTreatCollects;
 | 
			
		||||
        }
 | 
			
		||||
        private void BindEventHandler()
 | 
			
		||||
        {
 | 
			
		||||
            //预处理
 | 
			
		||||
@@ -46,6 +228,9 @@ namespace DHSoftware.Views
 | 
			
		||||
            //中处理
 | 
			
		||||
            btnPath2.Click += BtnPath2_Click;
 | 
			
		||||
            btnCorrelatedCamera.Click += BtnCorrelatedCamera_Click;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
            btnPic.Click += BtnPic_Click;
 | 
			
		||||
            btnLableAdd.Click += BtnLableAdd_Click;
 | 
			
		||||
            btnLableDelete.Click += BtnLableDelete_Click;
 | 
			
		||||
@@ -113,6 +298,8 @@ namespace DHSoftware.Views
 | 
			
		||||
                            OnClose = () =>
 | 
			
		||||
                            {
 | 
			
		||||
                                AntdUI.Message.info(window, "结束编辑", autoClose: 1);
 | 
			
		||||
 | 
			
		||||
                                UpdatePreTreatCollectsFromSizeTable();
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                        break;
 | 
			
		||||
@@ -120,6 +307,7 @@ namespace DHSoftware.Views
 | 
			
		||||
                        var result = Modal.open(window, "删除警告!", "确认要删除选择的数据吗?", TType.Warn);
 | 
			
		||||
                        if (result == DialogResult.OK)
 | 
			
		||||
                            SizeLableList.Remove(sizeTreat);
 | 
			
		||||
                        UpdatePreTreatCollectsFromSizeTable();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case "进行测量":
 | 
			
		||||
                        var sizeType = ((int)SizeParamLable.PreType).ToString();
 | 
			
		||||
@@ -150,7 +338,7 @@ namespace DHSoftware.Views
 | 
			
		||||
                                MessageBox.Show("未定义的测量类型!");
 | 
			
		||||
                                break;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        UpdatePreTreatCollectsFromSizeTable();
 | 
			
		||||
                        //使用clone可以防止table中的image被修改
 | 
			
		||||
                        //Preview.open(new Preview.Config(window, (Image)SizeParamLable.CellImages[0].Image.Clone()));
 | 
			
		||||
                        break;
 | 
			
		||||
@@ -260,7 +448,7 @@ namespace DHSoftware.Views
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<RelatedCamera> relatedCameras = new List<RelatedCamera>();
 | 
			
		||||
       
 | 
			
		||||
        private void BtnCorrelatedCamera_Click(object? sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@@ -274,37 +462,8 @@ namespace DHSoftware.Views
 | 
			
		||||
            if (form.submit)
 | 
			
		||||
            {
 | 
			
		||||
                flowPanel1.Controls.Clear();
 | 
			
		||||
                if (relatedCameras.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (var item in relatedCameras)
 | 
			
		||||
                    {
 | 
			
		||||
                        var control = new AntdUI.Tag()
 | 
			
		||||
                        {
 | 
			
		||||
                            Font = new System.Drawing.Font("Microsoft YaHei UI", 9F),
 | 
			
		||||
                            Size = new Size(90, 42),
 | 
			
		||||
                            Text = item.CameraSourceId,
 | 
			
		||||
                            CloseIcon = true
 | 
			
		||||
                        };
 | 
			
		||||
                        control.CloseChanged += (sender, e) =>
 | 
			
		||||
                        {
 | 
			
		||||
                            var tag = sender as Tag;
 | 
			
		||||
                            foreach (var item in relatedCameras)
 | 
			
		||||
                            {
 | 
			
		||||
                                if (item.CameraSourceId.Equals(tag.Text))
 | 
			
		||||
                                {
 | 
			
		||||
                                    relatedCameras.Remove(item);
 | 
			
		||||
                                    break;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            return true;
 | 
			
		||||
 | 
			
		||||
                        };
 | 
			
		||||
                        // 通过主窗口设置DPI控制添加控件保持缩放比例
 | 
			
		||||
                        window.AutoDpi(control);
 | 
			
		||||
                        flowPanel1.Controls.Add(control);
 | 
			
		||||
                        control.BringToFront();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                InitRelatedCamera();
 | 
			
		||||
                detectionConfig.CameraCollects=relatedCameras;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -329,8 +488,8 @@ namespace DHSoftware.Views
 | 
			
		||||
                {
 | 
			
		||||
                    string filePath = openFileDialog.FileName;
 | 
			
		||||
 | 
			
		||||
                    iptPath2.Text = filePath;
 | 
			
		||||
 | 
			
		||||
                    iptModelPath.Text = filePath;
 | 
			
		||||
                    _config.ModelPath = filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -500,37 +659,112 @@ namespace DHSoftware.Views
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        AntList<PreTreatParam> PreTreatList;
 | 
			
		||||
        AntList<PreTreatParam> PreOutTreatList;
 | 
			
		||||
        AntList<DetectionLable> DetectionLableList;
 | 
			
		||||
        AntList<SizeTreatParam> SizeLableList;
 | 
			
		||||
        PreTreatParam curPreTreat;
 | 
			
		||||
        PreTreatParam curPreOutTreat;
 | 
			
		||||
        DetectionLable curDetectionLable;
 | 
			
		||||
        SizeTreatParam SizeParamLable;
 | 
			
		||||
       
 | 
			
		||||
        //加载相机
 | 
			
		||||
        private void InitRelatedCamera()
 | 
			
		||||
        {
 | 
			
		||||
            if (relatedCameras.Count > 0)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (var item in relatedCameras)
 | 
			
		||||
                {
 | 
			
		||||
                    var control = new AntdUI.Tag()
 | 
			
		||||
                    {
 | 
			
		||||
                        Font = new System.Drawing.Font("Microsoft YaHei UI", 9F),
 | 
			
		||||
                        Size = new Size(90, 42),
 | 
			
		||||
                        Text = item.CameraSourceId,
 | 
			
		||||
                        CloseIcon = true
 | 
			
		||||
                    };
 | 
			
		||||
                    control.CloseChanged += (sender, e) =>
 | 
			
		||||
                    {
 | 
			
		||||
                        var tag = sender as Tag;
 | 
			
		||||
                        foreach (var item in relatedCameras)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (item.CameraSourceId.Equals(tag.Text))
 | 
			
		||||
                            {
 | 
			
		||||
                                relatedCameras.Remove(item);
 | 
			
		||||
                                break;
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        detectionConfig.CameraCollects = relatedCameras;
 | 
			
		||||
                        return true;
 | 
			
		||||
 | 
			
		||||
                    };
 | 
			
		||||
                    // 通过主窗口设置DPI控制添加控件保持缩放比例
 | 
			
		||||
                    window.AutoDpi(control);
 | 
			
		||||
                    flowPanel1.Controls.Add(control);
 | 
			
		||||
                    control.BringToFront();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        private void InitData()
 | 
			
		||||
        {
 | 
			
		||||
            PreTreatList = new AntList<PreTreatParam>();
 | 
			
		||||
            relatedCameras = detectionConfig.CameraCollects;
 | 
			
		||||
            InitRelatedCamera();
 | 
			
		||||
 | 
			
		||||
              // swIsAddStation. = detectionConfig.IsAddStation;
 | 
			
		||||
            PreTreatList = new AntList<PreTreatParam>();
 | 
			
		||||
            foreach (var item in detectionConfig.PreTreatParams)
 | 
			
		||||
            {
 | 
			
		||||
                PreTreatParam lable = item;
 | 
			
		||||
                lable.CellLinks = new CellLink[] {
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"删除",TTypeMini.Error),
 | 
			
		||||
                   };
 | 
			
		||||
                PreTreatList.Add(lable);
 | 
			
		||||
            }
 | 
			
		||||
            preTable.Binding(PreTreatList);
 | 
			
		||||
 | 
			
		||||
            PreOutTreatList = new AntList<PreTreatParam>();
 | 
			
		||||
            foreach (var item in detectionConfig.OUTPreTreatParams)
 | 
			
		||||
            {
 | 
			
		||||
                PreTreatParam lable = item;
 | 
			
		||||
                lable.CellLinks = new CellLink[] {
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"删除",TTypeMini.Error),
 | 
			
		||||
                   };
 | 
			
		||||
                PreOutTreatList.Add(lable);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            PreOutTable.Binding(PreOutTreatList);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            foreach (var item in MLModelTypes)
 | 
			
		||||
            {
 | 
			
		||||
                stDetectType.Items.Add(item.Key);
 | 
			
		||||
            }
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
            DetectionLableList = new AntList<DetectionLable>();
 | 
			
		||||
            foreach (var item in detectionConfig.DetectionLableList)
 | 
			
		||||
            {
 | 
			
		||||
                DetectionLable lable = item;
 | 
			
		||||
                lable.CellLinks = new CellLink[] {
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"删除",TTypeMini.Error),
 | 
			
		||||
                   };
 | 
			
		||||
                DetectionLableList.Add(lable);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            lableTable.Binding(DetectionLableList);
 | 
			
		||||
 | 
			
		||||
            SizeLableList = new AntList<SizeTreatParam>();
 | 
			
		||||
          //  SizeLableList = new AntList<SizeTreatParam>(_config.PreTreatCollects);
 | 
			
		||||
            foreach (var item in _config.PreTreatCollects)
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
              
 | 
			
		||||
                item.CellLinks = new CellLink[] {
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"编辑",TTypeMini.Primary),
 | 
			
		||||
                    new CellButton(Guid.NewGuid().ToString(),"删除",TTypeMini.Error),
 | 
			
		||||
                     new CellButton(Guid.NewGuid().ToString(),"进行测量",TTypeMini.Primary)
 | 
			
		||||
                   };
 | 
			
		||||
               // SizeLableList.Add(item);
 | 
			
		||||
            }
 | 
			
		||||
            // 将 List<PreTreatCollect> 转换为 AntList<PreTreatCollect>
 | 
			
		||||
            SizeLableList = new AntList<SizeTreatParam>(_config.PreTreatCollects);
 | 
			
		||||
 | 
			
		||||
            // 绑定转换后的数据到 SizeTable
 | 
			
		||||
            SizeTable.Binding(SizeLableList);
 | 
			
		||||
            //SizeTable.Binding(_config.PreTreatCollects);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -564,14 +798,16 @@ namespace DHSoftware.Views
 | 
			
		||||
 | 
			
		||||
            SizeTable.Columns = new ColumnCollection() {
 | 
			
		||||
                new ColumnCheck("Selected"){Fixed = true},
 | 
			
		||||
                new ColumnSwitch("IsEnable", "是否启用", ColumnAlign.Center),
 | 
			
		||||
                new Column("PreName", "测量名称",ColumnAlign.Center),
 | 
			
		||||
                new Column("PreType", "测量类型", ColumnAlign.Center),
 | 
			
		||||
                new Column("PrePix", "阈值", ColumnAlign.Center),
 | 
			
		||||
                new Column("ResultShow", "输入参数", ColumnAlign.Center),
 | 
			
		||||
                new Column("OutResultShow", "输出参数", ColumnAlign.Center),
 | 
			
		||||
                new Column("CellLinks", "操作", ColumnAlign.Center)
 | 
			
		||||
                new ColumnSwitch("IsEnable", "是否启用") {Width = "10%" },
 | 
			
		||||
                new Column("PreName", "测量名称") { Width = "15%" },
 | 
			
		||||
                new Column("PreType", "测量类型") { Width = "10%" },
 | 
			
		||||
                new Column("PrePix", "阈值") { Width = "5%" },
 | 
			
		||||
                new Column("ResultShow", "输入参数") { Width = "15%" },
 | 
			
		||||
                new Column("OutResultShow", "输出参数") { Width = "15%" },
 | 
			
		||||
                new Column("CellLinks", "操作") { Width = "30%" }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void btnPath_Click(object? sender, EventArgs e)
 | 
			
		||||
@@ -590,7 +826,7 @@ namespace DHSoftware.Views
 | 
			
		||||
                {
 | 
			
		||||
                    string filePath = openFileDialog.FileName;
 | 
			
		||||
 | 
			
		||||
                    iptPath.Text = filePath;
 | 
			
		||||
                    iptPrePath.Text = filePath;
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -608,6 +844,12 @@ namespace DHSoftware.Views
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void DetectControl_Load(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            InitData(); 
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static List<KeyValuePair<string, int>> GetFilteredEnumDescriptionsAndValues<T>() where T : Enum
 | 
			
		||||
        {
 | 
			
		||||
            return Enum.GetValues(typeof(T))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/DetectionLableEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/DetectionLableEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class DetectionLableEdit
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/PreTreatEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/PreTreatEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class PreTreatEdit
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/PreTreatUserControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/PreTreatUserControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class PreTreatUserControl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								DHSoftware/Views/SettingWindow1.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								DHSoftware/Views/SettingWindow1.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -102,6 +102,7 @@
 | 
			
		||||
            menuItem1.IconSvg = "VideoCameraOutlined";
 | 
			
		||||
            menuItem1.Text = "相机设置";
 | 
			
		||||
            menuItem2.IconSvg = "AppstoreOutlined";
 | 
			
		||||
            menuItem2.ID = "Station";
 | 
			
		||||
            menuItem2.Text = "工位设置";
 | 
			
		||||
            menuItem3.IconSvg = "ControlOutlined";
 | 
			
		||||
            menuItem3.Text = "运控设置";
 | 
			
		||||
@@ -161,6 +162,7 @@
 | 
			
		||||
            Name = "SettingWindow1";
 | 
			
		||||
            StartPosition = FormStartPosition.CenterScreen;
 | 
			
		||||
            Text = "SettingWinform";
 | 
			
		||||
            Load += SettingWindow1_Load;
 | 
			
		||||
            panel1.ResumeLayout(false);
 | 
			
		||||
            panel2.ResumeLayout(false);
 | 
			
		||||
            panel3.ResumeLayout(false);
 | 
			
		||||
 
 | 
			
		||||
@@ -8,15 +8,20 @@ using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
using AntdUI;
 | 
			
		||||
using AntdUIDemo.Models;
 | 
			
		||||
using DH.Process;
 | 
			
		||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
 | 
			
		||||
using Window = AntdUI.Window;
 | 
			
		||||
namespace DHSoftware.Views
 | 
			
		||||
{
 | 
			
		||||
    public partial class SettingWindow1 : Window
 | 
			
		||||
    {
 | 
			
		||||
        private UserControl currControl;
 | 
			
		||||
        public SettingWindow1()
 | 
			
		||||
        ProcessConfigBase DHconfig;
 | 
			
		||||
        public SettingWindow1(ProcessConfigBase _DHconfig)
 | 
			
		||||
        {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
 | 
			
		||||
            DHconfig = _DHconfig;
 | 
			
		||||
            AntdUI.TooltipComponent tooltip = new AntdUI.TooltipComponent()
 | 
			
		||||
            {
 | 
			
		||||
                Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134))),
 | 
			
		||||
@@ -98,6 +103,114 @@ namespace DHSoftware.Views
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        bool isUpdatingTabs = false;
 | 
			
		||||
        private void InitDecetion()
 | 
			
		||||
        {
 | 
			
		||||
            MenuItem clickedItem = menu1.Items[1];
 | 
			
		||||
            switch (clickedItem.Text)
 | 
			
		||||
            {
 | 
			
		||||
                case "相机设置":
 | 
			
		||||
 | 
			
		||||
                    break;
 | 
			
		||||
                case "工位设置":
 | 
			
		||||
                    // 检查是否已存在同名 TabPage
 | 
			
		||||
                    //foreach (var tab in tabs1.Pages)
 | 
			
		||||
                    //{
 | 
			
		||||
                    //    if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
 | 
			
		||||
                    //    {
 | 
			
		||||
                    //        isUpdatingTabs = true;
 | 
			
		||||
                    //        tabs1.SelectedTab = existingTab; // 直接跳转到已存在的 TabPage
 | 
			
		||||
                    //        isUpdatingTabs = false;
 | 
			
		||||
                    //        currControl = existingTab.Controls.Count > 0 ? existingTab.Controls[0] as UserControl : null;
 | 
			
		||||
                    //        return;
 | 
			
		||||
                    //    }
 | 
			
		||||
                    //}
 | 
			
		||||
                    foreach (var item in DHconfig.DetectionConfigCollection)
 | 
			
		||||
                    {
 | 
			
		||||
                        AddSubItem(clickedItem, item.Name);
 | 
			
		||||
                        DetectControl control  = new DetectControl(this);
 | 
			
		||||
                        control.detectionConfig = item;
 | 
			
		||||
                        
 | 
			
		||||
                        if (control != null)
 | 
			
		||||
                        {
 | 
			
		||||
                            //容器添加控件,需要调整dpi
 | 
			
		||||
                            control.Dock = DockStyle.Fill;
 | 
			
		||||
                            AutoDpi(control);
 | 
			
		||||
                            AntdUI.TabPage tabPage = new AntdUI.TabPage()
 | 
			
		||||
                            {
 | 
			
		||||
                                Text = $"{clickedItem.Text}-{item.Name}",
 | 
			
		||||
                            };
 | 
			
		||||
                            tabPage.Controls.Add(control);
 | 
			
		||||
                            tabs1.Pages.Add(tabPage);
 | 
			
		||||
                            isUpdatingTabs = true;
 | 
			
		||||
                            tabs1.SelectedTab = tabPage;
 | 
			
		||||
                            isUpdatingTabs = false;
 | 
			
		||||
                            currControl = control;
 | 
			
		||||
                        }
 | 
			
		||||
                        //tabs1.Pages[1].
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                case "运控设置":
 | 
			
		||||
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        private void LoadMenu(string filter = "")
 | 
			
		||||
        {
 | 
			
		||||
            menu1.Items.Clear();
 | 
			
		||||
            Dictionary<string, List<MenuItems>> Menu_decetion = new Dictionary<string, List<MenuItems>>();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            string lang = AntdUI.Localization.CurrentLanguage;
 | 
			
		||||
            var menuItems = DataUtil.Menu_decetion;
 | 
			
		||||
            //var menuIcons = DataUtil.MenuIcons_zhcn;
 | 
			
		||||
            //if (lang.StartsWith("en"))
 | 
			
		||||
            //{
 | 
			
		||||
            //    menuItems = DataUtil.MenuItems_enus;
 | 
			
		||||
            //    menuIcons = DataUtil.MenuIcons_enus;
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            foreach (var rootItem in Menu_decetion)
 | 
			
		||||
            {
 | 
			
		||||
                var rootKey = rootItem.Key.ToLower();
 | 
			
		||||
                var rootMenu = new AntdUI.MenuItem
 | 
			
		||||
                {
 | 
			
		||||
                    Text = rootItem.Key,
 | 
			
		||||
                    //IconSvg = menuIcons.TryGetValue(rootItem.Key, out var icon) ? icon : "UnorderedListOutlined",
 | 
			
		||||
                };
 | 
			
		||||
                bool rootVisible = false; // 用于标记是否显示根节点
 | 
			
		||||
 | 
			
		||||
                foreach (var item in rootItem.Value)
 | 
			
		||||
                {
 | 
			
		||||
                    var childText = item.Text.ToLower();
 | 
			
		||||
 | 
			
		||||
                    // 如果子节点包含搜索文本
 | 
			
		||||
                    if (childText.Contains(filter))
 | 
			
		||||
                    {
 | 
			
		||||
                        var menuItem = new AntdUI.MenuItem
 | 
			
		||||
                        {
 | 
			
		||||
                            Text = item.Text,
 | 
			
		||||
                            IconSvg = item.IconSvg,
 | 
			
		||||
                            Tag = item.Tag,
 | 
			
		||||
                        };
 | 
			
		||||
                        rootMenu.Sub.Add(menuItem);
 | 
			
		||||
                        rootVisible = true; // 如果有子节点包含,则显示根节点
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // 如果根节点包含搜索文本,或有可见的子节点,则显示根节点
 | 
			
		||||
                if (rootKey.Contains(filter) || rootVisible)
 | 
			
		||||
                {
 | 
			
		||||
                    menu1.Items.Add(rootMenu);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        private void menu1_MouseDown(object sender, MouseEventArgs e)
 | 
			
		||||
@@ -183,6 +296,11 @@ namespace DHSoftware.Views
 | 
			
		||||
            }
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SettingWindow1_Load(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            InitDecetion();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/SizeConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/SizeConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class SizeConfigControl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/SizeLabelEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/SizeLabelEdit.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class SizeLabelEdit
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/UserConfigFrm.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/UserConfigFrm.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class UserConfigFrm
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/UserDetetion.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/UserDetetion.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class UserDetetion
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								DHSoftware/Views/MotionControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								DHSoftware/Views/MotionControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
    partial class _MotionControl
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 必需的设计器变量。
 | 
			
		||||
        /// 必需的设计器变量 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 清理所有正在使用的资源。
 | 
			
		||||
        /// 清理所有正在使用的资源 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 | 
			
		||||
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false </param>
 | 
			
		||||
        protected override void Dispose(bool disposing)
 | 
			
		||||
        {
 | 
			
		||||
            if (disposing && (components != null))
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// 设计器支持所需的方法 - 不要修改
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容。
 | 
			
		||||
        /// 使用代码编辑器修改此方法的内容 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,15 +6,15 @@
 | 
			
		||||
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
 | 
			
		||||
        <!-- UAC 清单选项
 | 
			
		||||
             如果想要更改 Windows 用户帐户控制级别,请使用
 | 
			
		||||
             以下节点之一替换 requestedExecutionLevel 节点。
 | 
			
		||||
             以下节点之一替换 requestedExecutionLevel 节点 
 | 
			
		||||
 | 
			
		||||
        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
 | 
			
		||||
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
 | 
			
		||||
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
 | 
			
		||||
 | 
			
		||||
            指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
 | 
			
		||||
            指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化 
 | 
			
		||||
            如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
 | 
			
		||||
            元素。
 | 
			
		||||
            元素 
 | 
			
		||||
        -->
 | 
			
		||||
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
 | 
			
		||||
      </requestedPrivileges>
 | 
			
		||||
@@ -24,8 +24,8 @@
 | 
			
		||||
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
 | 
			
		||||
    <application>
 | 
			
		||||
      <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
 | 
			
		||||
           Windows 版本的列表。取消评论适当的元素,
 | 
			
		||||
           Windows 将自动选择最兼容的环境。 -->
 | 
			
		||||
           Windows 版本的列表 取消评论适当的元素,
 | 
			
		||||
           Windows 将自动选择最兼容的环境  -->
 | 
			
		||||
 | 
			
		||||
      <!-- Windows Vista -->
 | 
			
		||||
      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
 | 
			
		||||
@@ -46,11 +46,11 @@
 | 
			
		||||
  </compatibility>
 | 
			
		||||
 | 
			
		||||
  <!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
 | 
			
		||||
       自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
 | 
			
		||||
       选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
 | 
			
		||||
       在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
 | 
			
		||||
       自动缩放 Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
 | 
			
		||||
       选择加入 选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
 | 
			
		||||
       在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true" 
 | 
			
		||||
       
 | 
			
		||||
       将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
 | 
			
		||||
       将应用程序设为感知长路径 请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
 | 
			
		||||
  
 | 
			
		||||
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
 | 
			
		||||
    <windowsSettings>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user