领胜LDS 键盘AOI检测项目
wells
2020-07-12 66d995d55f9c122328b4eceb99bc20aca3a42c10
debug
6个文件已修改
91 ■■■■ 已修改文件
src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/M071Process.cs 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/M071Process_MotionCard.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/UI/KeyIndicator.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/UI/M071_MainForm.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.UI.Config/MenuForms/FrmOperation.resx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
@@ -255,5 +255,16 @@
            return list;
        }
        public static HImage ConvertHObjectToHImage(this HObject obj)
        {
            HTuple pointer, type, width, heght;
            HOperatorSet.GetImagePointer1(obj, out pointer, out type, out width, out heght);
            HImage img = new HImage();
            img.GenImage1(type, width, heght, pointer);
            return img;
        }
    }
}
src/Bro.M071.Process/M071Process.cs
@@ -647,8 +647,16 @@
                    int i = 0;
                    u.KeyImages?.ForEach(image =>
                    {
                        string fileName = Path.Combine(dir, $"{measureName}_{u.Key}{(i == 0 ? "" : $"-{i}")}_{DateTime.Now.ToString("HHmmss")}.tiff");
                        image.WriteImage("tiff", 0, fileName);
                        string fileName = "";
                        try
                        {
                            fileName = Path.Combine(dir, $"{measureName}_{u.Key}{(i == 0 ? "" : $"-{i}")}_{DateTime.Now.ToString("HHmmss")}.tiff");
                            image.WriteImage("tiff", 0, fileName);
                        }
                        catch (Exception)
                        {
                            LogAsync(DateTime.Now, "切图保存失败", fileName);
                        }
                        i++;
                    });
@@ -668,6 +676,7 @@
                 string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath;
                 HObject images = imgSet.HImage;
                 LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData);
                 LogAsync(DateTime.Now, $"扫描参数:{imgSet.ImageData}", "");
                 if (!string.IsNullOrWhiteSpace(toolKey))
                 {
@@ -691,6 +700,7 @@
                 }
                 HOperatorSet.CountObj(images, out HTuple count);
                 LogAsync(DateTime.Now, $"{snapshotName}切图{count.I}张", "");
                 if (count == 0)
                 {
@@ -699,7 +709,7 @@
                     return;
                 }
                 var excludeKeys = keys.Where(u => u.ImageSeq > count).ToList();
                 var excludeKeys = keys.Where(u => u.ImageSeq > count.I).ToList();
                 if (excludeKeys.Count > 0)
                 {
                     LogAsync(DateTime.Now, $"{string.Join(" ", excludeKeys.Select(u => u.AliasName))}未在图片获取序列中", "");
@@ -709,9 +719,19 @@
                          });
                 }
                 Parallel.For(1, count.I, (i) =>
                 string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}");
                 if (!Directory.Exists(dir))
                 {
                     Directory.CreateDirectory(dir);
                 }
                 Parallel.For(1, count.I + 1, (i) =>
                 //for (int i = 1; i <= count.I; i++)
                 {
                     HOperatorSet.SelectObj(images, out HObject image, i);
                     string fileName = Path.Combine(dir, $"{i}.tif");
                     image.ConvertHObjectToHImage().WriteImage("tiff", 0, fileName);
                     keys.Where(u => u.ImageSeq == i).ToList().ForEach(k =>
                         {
@@ -727,8 +747,8 @@
                             else
                             {
                                 _halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image;
                                 _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X;
                                 //_halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z;
                                 _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X / 1000000.0;
                                 _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z / 1000000.0;
                                 if (!_halconToolDict[keyToolKey].RunProcedure(out string error))
                                 {
                                     LogAsync(DateTime.Now, $"{k.AliasName}检测算法异常,{error}", "");
@@ -753,13 +773,14 @@
                             keyBindList.ForEach(kb =>
                             {
                                 kb.KeyImages.Add(image.Clone() as HImage);
                                 kb.KeyImages.Add(image.ConvertHObjectToHImage());
                                 kb.FillKeyValues(resultDict);
                             });
                         });
                     image.Dispose();
                 });
                     //image.Dispose();
                 }
                 );
                 //if (count.I != 1)
                 //{
src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -358,9 +358,17 @@
                throw new ProcessException("未获取板卡设备");
            bool? isToPause = null; //true 暂停 false 继续
            if (opConfig.InputPara != null && opConfig.InputPara.Count > 0)
            //if (opConfig.InputPara != null && opConfig.InputPara.Count > 0)
            //{
            //    isToPause = opConfig.InputPara[0] == 1;
            //}
            if (opConfig.InputPara[0] == 10)
            {
                isToPause = opConfig.InputPara[0] == 1;
                isToPause = false;
            }
            else if (opConfig.InputPara[0] == 11)
            {
                isToPause = true;
            }
            if (isToPause == null)
@@ -665,7 +673,7 @@
        [ProcessMethod("", "SafetyBeamSignal", "安全光幕信号监控,正常ON,OFF时报警", InvokeType.TestInvoke)]
        public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
        {
            if (MachineState != MachineState.Running || MachineState != MachineState.Alarm)
            if (MachineState != MachineState.Running && MachineState != MachineState.Alarm)
                return new ProcessResponse(true);
            if (opConfig.InputPara == null || opConfig.InputPara.Count == 0)
src/Bro.M071.Process/UI/KeyIndicator.cs
@@ -63,7 +63,10 @@
        public override void Draw(Graphics g)
        {
            g.DrawRectangle(Pen, DisplayRect);
            if (ResultState == null)
            {
                g.DrawRectangle(Pen, DisplayRect);
            }
            RectangleF rectFill = new RectangleF(DisplayRect.X + 1, DisplayRect.Y + 1, DisplayRect.Width - 2, DisplayRect.Height - 2);
            if (ResultState != null)
            {
@@ -74,12 +77,11 @@
                if (!ResultState.Value)
                {
                    backColor = Color.Red;
                    foreColor = Color.White;
                    //foreColor = Color.White;
                }
                g.FillRectangle(new SolidBrush(Color.FromArgb(85, backColor)), rectFill);
                g.DrawString(Text, Font, new SolidBrush(foreColor), (float)(DisplayRect.X + DisplayRect.Width / 2.0 - txtSize.Width / 2.0), (float)(DisplayRect.Y + DisplayRect.Height / 2.0 - txtSize.Height / 2.0));
                g.DrawString(Text, Font, new SolidBrush(foreColor), (float)(DisplayRect.X + DisplayRect.Width / 2.0 - txtSize.Width / 2.0), (float)(DisplayRect.Y + DisplayRect.Height));
            }
        }
src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -303,7 +303,6 @@
                            btnStartMeasure.Text = "开始测量";
                            btnStartMeasure.Enabled = false;
                            btnStartMeasure.BackColor = Color.Red;
                            break;
                        case MachineState.Pause:
                            btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Yellow;
@@ -312,25 +311,22 @@
                            btnStartMeasure.Text = "继续测量";
                            btnStartMeasure.Enabled = true;
                            btnStartMeasure.BackColor = Color.Lime;
                            break;
                        case MachineState.Ready:
                            btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime;
                            btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.White;
                            btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.Black;
                            lblMachineState.Text = "就绪";
                            
                            btnStartMeasure.Text = "开始测量";
                            btnStartMeasure.Enabled = true;
                            btnStartMeasure.BackColor = Color.Lime;
                            break;
                        case MachineState.Running:
                            btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime;
                            btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Transparent;
                            btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.DarkGreen;
                            lblMachineState.Text = "运行";
                            btnStartMeasure.Text = "暂停测量";
                            btnStartMeasure.Enabled = true;
                            btnStartMeasure.BackColor = Color.Lime;
                            break;
                        case MachineState.Unknown:
                            btnStartMeasure.BackColor = lblMachineState.BackColor = SystemColors.Control;
@@ -338,7 +334,6 @@
                            lblMachineState.Text = "未知";
                            btnStartMeasure.Enabled = false;
                            btnStartMeasure.BackColor = Color.Red;
                            break;
                    }
                }));
@@ -424,11 +419,11 @@
            }
            else if (btnStartMeasure.Text == "继续测量")
            {
                Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 0 } }, null, null);
                Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 10 } }, null, null);
            }
            else
            {
                Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 1 } }, null, null);
                Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 11 } }, null, null);
            }
        }
src/Bro.UI.Config/MenuForms/FrmOperation.resx
@@ -125,7 +125,7 @@
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm
        CgAAAk1TRnQBSQFMAgEBAgEAAfABAAHwAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
        CgAAAk1TRnQBSQFMAgEBAgEAAfgBAAH4AQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
        AwABYAMAARgDAAEBAQABCAYAAQkYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -182,7 +182,7 @@
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD4
        CAAAAk1TRnQBSQFMAwEBAAHwAQAB8AEAARgBAAEYAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
        CAAAAk1TRnQBSQFMAwEBAAH4AQAB+AEAARgBAAEYAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
        AWADAAEYAwABAQEAAQgGAAEJGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
        AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
        AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm