Administrator
2021-03-16 c4fa5bc34b30434b9f39f2670c30d10cf9f1cad4
P066.Data/Form1.cs
@@ -10,6 +10,7 @@
using System.IO;
using Bro.Common;
using Bro.Common.Util;
using System.Configuration;
namespace P066.Data
{
@@ -24,10 +25,9 @@
        {
            InitializeComponent();
            //ConfigHelper.Save(@"D:\P066-Data\P066XML\1.xml", runparam);
            runparam = ConfigHelper.Load<P066RunParam>(@"D:\P066-Data\P066XML\Jin_Mid.xml");
        }
            var configuraPath = Environment.CurrentDirectory+ "\\Config\\Jin_Mid.xml";
           runparam = ConfigHelper.Load<P066RunParam>(configuraPath);
    }
        private void btnLoadData1_Click(object sender, EventArgs e)
        {
@@ -50,6 +50,7 @@
        {
            var fileinfos1 = directoryInfo1.GetFiles();
            var fileinfos2 = directoryInfo2.GetFiles();
            var listSum = new List<ResultData>();
            var JudgeListSum = new List<ResultData>();
@@ -125,7 +126,7 @@
                        GuaNum=GuaNum+1;
                        filenameDir = "复检中框刮白";
                        filename = "复检中框刮白" + GuaNum;
                    judgeList = GetBkLocation(judgeList);
                    judgeList = GetWhiteLocation(judgeList);
                    //给镜头区分位置及角度
                    list = GetBkLocation(list);
                }
@@ -466,7 +467,6 @@
            //}
            string defectType = "";
            string judgmentresult = "";
            for (int i = 1; i < allLines.Length; i++)
            {
@@ -493,15 +493,11 @@
                if (data[3]== "刮白")
                {
                    defectType = "刮白";
                    judgmentresult = "NG";
                    Ptr = "刮白";
                }
                else
                {
                    defectType = "白点";
                    judgmentresult = data[1];
                }
                if (data[6] == "-")
@@ -556,7 +552,7 @@
                {
                    TimeTip = data[0].Split('-')[0],
                    ImageFileName = data[0],
                    JudgmentResult = judgmentresult,
                    JudgmentResult = data[1],
                    Result = data[3] == "OK",
                    Probability = Convert.ToDouble(data[4]),
                    Uncertainty = Convert.ToDouble(data[5]),
@@ -689,6 +685,131 @@
            }
            return list;
        }
        //获取中框角度和位置
        private List<ResultData> GetWhiteLocation(List<ResultData> list)
        {
            var group = list.GroupBy(a => a.TimeTip);
            foreach (var item in group)
            {
                //计算镜头1缺陷位置及角度
                var listLensnumber1 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1);
                for (int k = 0; k < listLensnumber1.Count; k++)
                {
                    var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y);
                    if (lenAngle < 0)
                    {
                        lenAngle = 360 + lenAngle;
                    }
                    listLensnumber1[k].angle = lenAngle;
                    var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y);
                    if (distance <= runparam.MidLens1R1)
                    {
                        listLensnumber1[k].location = "镜头";
                    }
                    else if (runparam.MidLens1R1 < distance && distance <= runparam.MidLens1R2)
                    {
                        listLensnumber1[k].location = "斜面";
                    }
                    else if(runparam.MidLens1R2 < distance && distance <= runparam.BkLens1R1)
                    {
                        listLensnumber1[k].location = "平面可视区";
                    }
                    else
                    {
                        listLensnumber1[k].location = "平面非可视区";
                    }
                }
                //计算镜头2位置及角度
                var listLensnumber2 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2);
                for (int k = 0; k < listLensnumber2.Count; k++)
                {
                    var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y);
                    if (lenAngle < 0)
                    {
                        lenAngle = 360 + lenAngle;
                    }
                    listLensnumber2[k].angle = lenAngle;
                    var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y);
                    if (distance <= runparam.MidLens2R1)
                    {
                        listLensnumber2[k].location = "镜头";
                    }
                    else if (runparam.MidLens2R1 < distance && distance <= runparam.MidLens2R2)
                    {
                        listLensnumber2[k].location = "斜面";
                    }
                    else if (runparam.MidLens2R2 < distance && distance <= runparam.BkLens2R1)
                    {
                        listLensnumber2[k].location = "平面可视区";
                    }
                    else
                    {
                        listLensnumber2[k].location = "平面非可视区";
                    }
                }
                //计算镜头3位置及角度
                var listLensnumber3 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3);
                for (int k = 0; k < listLensnumber3.Count; k++)
                {
                    var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y);
                    if (lenAngle < 0)
                    {
                        lenAngle = 360 + lenAngle;
                    }
                    listLensnumber3[k].angle = lenAngle;
                    var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y);
                    if (distance <= runparam.MidLens3R1)
                    {
                        listLensnumber3[k].location = "镜头";
                    }
                    else if (runparam.MidLens3R1 < distance && distance <= runparam.MidLens3R2)
                    {
                        listLensnumber3[k].location = "斜面";
                    }
                    else if (runparam.MidLens3R2 < distance && distance <= runparam.BkLens3R1)
                    {
                        listLensnumber3[k].location = "平面可视区";
                    }
                    else
                    {
                        listLensnumber3[k].location = "平面非可视区";
                    }
                }
                //计算镜头4位置及角度
                var listLensnumber4 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4);
                for (int k = 0; k < listLensnumber4.Count; k++)
                {
                    var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y);
                    if (lenAngle < 0)
                    {
                        lenAngle = 360 + lenAngle;
                    }
                    listLensnumber4[k].angle = lenAngle;
                    var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y);
                    if (distance <= runparam.MidLens4R1)
                    {
                        listLensnumber4[k].location = "镜头";
                    }
                    else if (runparam.MidLens4R1 < distance && distance <= runparam.MidLens4R2)
                    {
                        listLensnumber4[k].location = "斜面";
                    }
                    else if (runparam.MidLens4R2 < distance && distance <= runparam.BkLens4R1)
                    {
                        listLensnumber4[k].location = "平面可视区";
                    }
                    else
                    {
                        listLensnumber4[k].location = "平面非可视区";
                    }
                }
            }
            return list;
        }
        //获取背板角度和位置
        private List<ResultData> GetBkLocation(List<ResultData> list)
        {