using Bro.Common.Base; using Bro.Common.Helper; using Bro.Common.Interface; using Bro.Common.Model; using Bro.Process; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing.Design; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bro.M071.Process { [Process("M071", EnumHelper.DeviceAttributeType.InitialConfig)] public partial class M071Config : ProcessConfigBase { #region 公共字典配置 [Category("公共字典配置")] [Description("键盘键名集合")] [TypeConverter(typeof(SimpleCollectionConvert))] [Editor(typeof(SimpleCollectionEditor), typeof(UITypeEditor))] public List KeyNameCollection { get; set; } = new List(); [Category("公共字典配置")] [Description("检测类型和标准集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List MeasureTypeCollection { get; set; } = new List(); [Category("公共字典配置")] [Description("单键算法配置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List KeyAlgorithemCollection { get; set; } = new List(); [Category("公共字典配置")] [Description("单键结果配置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List KeyResultCollection { get; set; } = new List(); #endregion [Category("显示配置")] [Description("运行背景图片路径")] [Editor(typeof(FileDialogEditor), typeof(UITypeEditor))] [DisplayName("背景图片")] public string BackgroundImagePath { get; set; } [Category("显示配置")] [Description("键盘关键键位布局显示")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] [DisplayName("键位显示")] public List KeyLocationCollection { get; set; } = new List(); [Category("检测设置")] [Description("拍摄点位设置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] [DisplayName("1.运动点位")] public List SnapshotPointCollection { get; set; } = new List(); [Category("检测设置")] [Description("视觉检测单键配置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] [DisplayName("2.单键配置")] public List KeyUnitCollection { get; set; } = new List(); [Category("检测设置")] [Description("检测配置集合")] [DisplayName("3.检测项集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List MeasurementUnitCollection { get; set; } = new List(); [Category("检测设置")] [Description("平面补偿值")] [DisplayName("4.平面补偿值")] public double PlanCompensation { get; set; } [Category("检测设置")] [Description("数据精度设置")] [DisplayName("5.数据精度位数")] public int Precision { get; set; } = 3; //[Category("检测设置")] //[DisplayName("结果数据保存路径")] //[Description("检测结果数据保存路径")] //[Editor(typeof(FoldDialogEditor), typeof(UITypeEditor))] //public string ResultDataSaveFolder { get; set; } = ""; [Category("单键图片保存配置")] [Description("单键图片保存配置")] [TypeConverter(typeof(ComplexObjectConvert))] [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))] public ImageSaveOption ImageSaveOption { get; set; } = new ImageSaveOption(); [Category("单键图片保存配置")] [Description("单键图片保存目录路径")] [Editor(typeof(FoldDialogEditor), typeof(UITypeEditor))] public string ImageSaveFolder { get; set; } = ""; [Category("屏蔽配置")] [Description("true:屏蔽安全门 false:启用安全门")] [ReadOnly(true)] public bool IsSafetyDoorBlocked { get; set; } = false; [Category("屏蔽配置")] [Description("true:屏蔽安全光线 false:启用安全光线")] [ReadOnly(true)] public bool IsSafetyBeamBlocked { get; set; } = false; private bool isBeepBlocked = false; [Category("屏蔽配置")] [Description("true:屏蔽蜂鸣器 false:启用蜂鸣器")] public bool IsBeepBlocked { get => isBeepBlocked; set => Set(ref isBeepBlocked, value); } private bool isBarcodeManualInputBlocked = true; [Category("屏蔽配置")] [Description("true:禁止手动输入条码 false:允许手动输入条码")] public bool IsBarcodeManualInputBlocked { get => isBarcodeManualInputBlocked; set => Set(ref isBarcodeManualInputBlocked, value); } [Category("MES设置")] [Description("true:数据上传至MES false:数据不上传")] [DisplayName("MES上传启用")] [ReadOnly(true)] public bool IsEnableMESUpload { get; set; } = false; [Category("MES设置")] [Description("true:检测用户登录 false:不强制用户登录")] [DisplayName("用户登录检测")] [Browsable(false)] public bool IsUserLoginCheck { get; set; } = false; [Category("MES设置")] [Description("MES上传路径")] [DisplayName("MES上传路径")] public string MESURL { get; set; } = ""; [Category("MES设置")] [Description("站点编码")] [DisplayName("站点编码")] public string StationCode { get; set; } = ""; [Category("MES设置")] [Description("Project编码")] [DisplayName("Project编码")] public string ProjectCode { get; set; } = ""; [Category("MES设置")] [Description("线体编码")] [DisplayName("线体编码")] public string LineCode { get; set; } = ""; [Category("MES设置")] [Description("验证当前允许新增次数[FALSE=不验证 TRUE=限制两次以下(包含两次)]")] [DisplayName("多次验证开关")] public bool IsDisableMultipleCheckTimes { get; set; } [Category("MES设置")] [Description("键名和上传代码映射关系")] [DisplayName("键名映射")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List KeyCodeMappingCollection { get; set; } = new List(); [Category("MES设置")] [Description("MES数据详细记录开关")] [DisplayName("MES日志开关")] public bool IsEnableMESLog { get; set; } = false; [Category("复位设置")] [Description("大复位需要信号持续时间,复位信号持续超出该时间执行大复位,单位:s")] [DisplayName("大复位持续信号长度")] public int FullResetRequiredDuration { get; set; } = 3; } [Device("Demostration", "Demo操作配置", EnumHelper.DeviceAttributeType.OperationConfig)] public class DemostrationOperationConfig : OperationConfigBase, IHalconToolPath { [Category("组合操作配置集合")] [Description("组合操作配置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List DemoOperations { get; set; } = new List(); public List GetHalconToolPathList() { return DemoOperations.SelectMany(d => d.GetHalconToolPathList()).ToList(); } } [Device("ManualTest", "手动测试操作配置", EnumHelper.DeviceAttributeType.OperationConfig)] public class ManualTestOperationConfig : OperationConfigBase { [Category("手动测试配置")] [Description("手动测试重复次数")] public int RepeatTimes { get; set; } = 1; } public class OperationCombination : IComplexDisplay, IHalconToolPath { [Category("运动机构配置")] [Description("运动机构配置")] [TypeConverter(typeof(ComplexObjectConvert))] [Editor(typeof(IOperationConfigByDeviceEditor), typeof(UITypeEditor))] public DeviceOpBind MotionOp { get; set; } = new DeviceOpBind(); [Category("相机和操作配置")] [Description("相机和操作配置")] [TypeConverter(typeof(ComplexObjectConvert))] [Editor(typeof(IOperationConfigByDeviceEditor), typeof(UITypeEditor))] public DeviceOpBind CameraOp { get; set; } = new DeviceOpBind(); public string GetDisplayText() { return MotionOp.GetDisplayText() + "\t" + CameraOp.GetDisplayText(); } public List GetHalconToolPathList() { if (CameraOp.OpConfig is IHalconToolPath path) { return path.GetHalconToolPathList(); } else { return new List(); } } } }