M182轴承端盖外观缺陷AOI
kingno
2025-05-26 5a405c7dce20d8c79a733c9c786cc42eb59fe81c
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
using Bro.Common.Helper;
using Bro.Common.Interface;
using Bro.M141.Process;
using Bro.UI.Model.Winform;
 
namespace Bro.M135.Process.UI
{
    //[MenuNode("ProductStatus", "检测状态显示界面", 1, EnumHelper.TopMenu.SystemInfo, MenuNodeType.Form)]
    public partial class FrmProductStatus : MenuFormBase
    {
        M141Process M141Process => Process as M141Process;
        M141Config M141Config => Process.IConfig as M141Config;
 
        List<CtrlPositionDisplay> displayCtrls = new List<CtrlPositionDisplay>();
 
        const string RESULTSUMMARY = "结果汇总";
 
        public FrmProductStatus()
        {
            InitializeComponent();
        }
 
        public override void OnProcessUpdated()
        {
            if (M141Process != null)
            {
                tbMain.Controls.Clear();
 
                List<int> productIndexsList = M141Config.MeasureBindCollection.SelectMany(s => s.ProductIndices).Distinct().ToList();
 
                //根据当前工位配置和产品索引配置,来刷新界面UI的行列数
                tbMain.RowStyles.Clear();
                tbMain.ColumnStyles.Clear();
 
                tbMain.RowCount = 0;
                tbMain.ColumnCount = productIndexsList.Count * (M141Config.WorkPositionCollection.Count() + 1);
                RowStyle rowStyle = new RowStyle(SizeType.Percent, (float)100);
                for (int i = 0; i < tbMain.ColumnCount; i++)
                {
                    ColumnStyle columnStyle = new ColumnStyle(SizeType.Percent, (float)(1.0 / tbMain.ColumnCount));
                    tbMain.ColumnStyles.Add(columnStyle);
                }
 
                List<int> rows = new List<int>();
                List<int> columns = new List<int>();
                for (int i = 0; i < productIndexsList.Count * (M141Config.WorkPositionCollection.Count() + 2); i++)
                {
                    rows.Add(0);
                    columns.Add(i);
                }
 
                int index = 0;
                M141Config.WorkPositionCollection.ToList().ForEach(u =>
                {
                    ////产品1
                    //CtrlPositionDisplay c1 = new CtrlPositionDisplay(u.PositionName + "_1", M141Config.BackgroundImageFilePath);
                    //c1.Dock = DockStyle.Fill;
                    //tbMain.Controls.Add(c1, columns[index], rows[index]);
                    //displayCtrls.Add(c1);
                    //index++;
 
                    ////产品2
                    //CtrlPositionDisplay c2 = new CtrlPositionDisplay(u.PositionName + "_2", M141Config.BackgroundImageFilePath);
                    //c2.Dock = DockStyle.Fill;
                    //tbMain.Controls.Add(c2, columns[index], rows[index]);
                    //displayCtrls.Add(c2);
                    //index++;
 
                    productIndexsList.ForEach(f =>
                    {
                        CtrlPositionDisplay c = new CtrlPositionDisplay(u.PositionName + $"_{f}", M141Config.BackgroundImageFilePath);
                        c.Dock = DockStyle.Fill;
                        tbMain.Controls.Add(c, columns[index], rows[index]);
                        displayCtrls.Add(c);
                        index++;
                    });
                });
 
                ////产品1
                //CtrlPositionDisplay c1 = new CtrlPositionDisplay(RESULTSUMMARY + "_1", M141Config.BackgroundImageFilePath);
                //tbMain.Controls.Add(c1, 3, 0);
                //displayCtrls.Add(c1);
 
                ////产品2
                //CtrlPositionDisplay c2 = new CtrlPositionDisplay(RESULTSUMMARY + "_2", M141Config.BackgroundImageFilePath);
                //tbMain.Controls.Add(c2, 3, 1);
                //displayCtrls.Add(c2);
 
                productIndexsList.ForEach(f =>
                {
                    CtrlPositionDisplay c = new CtrlPositionDisplay(RESULTSUMMARY + $"_{f}", M141Config.BackgroundImageFilePath);
                    c.Dock = DockStyle.Fill;
                    tbMain.Controls.Add(c, columns[index], rows[index]);
                    displayCtrls.Add(c);
                    index++;
                });
 
                M141Process.OnPositionResultUpdated -= M135Process_OnPositionResultUpdated;
                M141Process.OnPositionResultUpdated += M135Process_OnPositionResultUpdated;
            }
        }
 
        private void M135Process_OnPositionResultUpdated(string positionName, string productIndex, List<IShapeElement> eleList)
        {
            var c = displayCtrls.FirstOrDefault(u => u.PositionName == positionName + "_" + productIndex);
            if (c == null)
            {
                c = displayCtrls.FirstOrDefault(u => u.PositionName == RESULTSUMMARY + "_" + productIndex);
            }
 
            if (c == null)
            {
                LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"工位{positionName},产品序号{productIndex}未能获取显示控件");
            }
            else
            {
                c.UpdateProductResult(eleList);
            }
        }
 
 
        //将界面产品二维码数据更新到配置中
        public void M135Process_OnSetProductBarcodeToSetting(bool a)
        {
            //if (textBox_ProductABarcode.Text != "")
            //{
            if (label_AcupointA.Text.Split("-")[1] == "1")
            {
                M141Config.BarcodeDataList.Add(textBox_ProductABarcode.Text.ToString());
                M141Config.BarcodeDataList.Add(textBox_ProductBBarcode.Text.ToString());
            }
            else
            {
                M141Config.BarcodeDataList.Add(textBox_ProductBBarcode.Text.ToString());
                M141Config.BarcodeDataList.Add(textBox_ProductABarcode.Text.ToString());
            }
            //}
        }
 
        //将界面产品二维码数据清空,同时清空配置里的数据
        public void M135Process_OnClearProductBarcodeForSettingAndInterface(bool a)
        {
            M141Config.BarcodeDataList.Clear();
            textBox_ProductABarcode.Text = textBox_ProductBBarcode.Text = "";
        }
        public override void OnCustomizedLoad()
        {
            base.OnCustomizedLoad();
        }
 
        public override void OnCustomizedDispose()
        {
            base.OnCustomizedDispose();
 
            M141Process.OnPositionResultUpdated -= M135Process_OnPositionResultUpdated;
        }
    }
}