领胜LDS 键盘AOI检测项目
wells.liu
2020-07-02 e3840a840aea2eda198ba4bbaf2c3ea4c2390ee4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using Bro.Common.Base;
using Bro.Common.Helper;
using Bro.Common.UI;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing.Design;
 
namespace Bro.Common.Calibration
{
    [Device("CalibrationStatic9Point", "静态9点标定", EnumHelper.DeviceAttributeType.OperationConfig)]
    public class CalibrationStatic9PointConfigCollection : OperationConfigBase
    {
        [Category("标定配置")]
        [Description("标定配置集合")]
        [TypeConverter(typeof(CollectionCountConvert))]
        [Editor(typeof(ComplexCollectionEditor<CalibrationStatic9PointConfig>), typeof(UITypeEditor))]
        public List<CalibrationStatic9PointConfig> Configs { get; set; } = new List<CalibrationStatic9PointConfig>();
    }
 
    public class CalibrationStatic9PointConfig : OperationConfigBase, IComplexDisplay
    {
        [Category("相机配置")]
        [Description("是否相机实时取图")]
        public bool IsUseRealTimeImage { get; set; } = true;
 
        [Category("相机配置")]
        [Description("相机操作配置")]
        [TypeConverter(typeof(ComplexObjectConvert))]
        [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))]
        public CameraOprerationConfigBase CameraOpConfig { get; set; } = new CameraOprerationConfigBase();
 
        [Category("标定配置")]
        [Description("XY坐标是否颠倒")]
        public bool IsInvert { get; set; } = false;
 
        [Category("标定配置")]
        [Description("标定X方向间隔")]
        public int IntervalX { get; set; }
 
        [Category("标定配置")]
        [Description("标定Y方向间隔")]
        public int IntervalY { get; set; }
 
        [Category("标定配置")]
        [Description("可忽略的像素差值,取像点的坐标差值必须大于该值才被采用")]
        public int IgnorePixel { get; set; } = 20;
 
        [Category("ROI配置")]
        [Description("标定点的ROI范围集合")]
        [TypeConverter(typeof(CollectionCountConvert))]
        [Editor(typeof(ComplexCollectionEditor<ROI_Circle>), typeof(UITypeEditor))]
        public List<ROI_Circle> ROIList { get; set; } = new List<ROI_Circle>();
 
        [Category("ROI配置")]
        [Description("ROI默认半径")]
        public float ROI_Radius { get; set; } = 50.0f;
 
        [Category("ROI配置")]
        [Description("是否启动ROI过滤")]
        public bool IsEnableROIFilter { get; set; } = true;
        
        [Category("UI显示配置")]
        [Description("是否显示备注说明")]
        public bool IsShowRemark { get; set; } = true;
 
        public string GetDisplayText()
        {
            return JsonConvert.SerializeObject(this);
        }
    }
 
    public class PLCSetting : IComplexDisplay
    {
        [Category("地址设置")]
        [Description("X坐标PLC读取地址,例如5012")]
        public int XAddress { get; set; }
 
        [Category("地址设置")]
        [Description("Y坐标PLC读取地址,例如5012")]
        public int YAddress { get; set; }
 
        [Category("地址设置")]
        [Description("是否实时读取PLC地址")]
        public bool IsRealTimeDataFromPLC { get; set; } = true;
 
        [Category("运动设置")]
        [Description("运动坐标X")]
        public int LocationX { get; set; }
 
        [Category("运动设置")]
        [Description("运动坐标Y")]
        public int LocationY { get; set; }
 
        public string GetDisplayText()
        {
            return string.Format("X:{0};Y:{1}", LocationX, LocationY);
        }
    }
}