diff --git a/halftoneproject-master/Code/Enums.cs b/halftoneproject-master/Code/Enums.cs index 4d903c4..b30b948 100644 --- a/halftoneproject-master/Code/Enums.cs +++ b/halftoneproject-master/Code/Enums.cs @@ -207,6 +207,7 @@ namespace ProductionControl xb,//斜边 gsdl,//栅线 改为钢丝断裂 ds,//断栅 + sx, } public enum DefectNameEnum { @@ -221,7 +222,8 @@ namespace ProductionControl 压线, 斜边, 钢丝断裂, //栅线, - 断栅 + 断栅, + 栅线 } public enum ValType { diff --git a/halftoneproject-master/Code/FrmMain.Designer.cs b/halftoneproject-master/Code/FrmMain.Designer.cs index 8c45af6..3511351 100644 --- a/halftoneproject-master/Code/FrmMain.Designer.cs +++ b/halftoneproject-master/Code/FrmMain.Designer.cs @@ -548,7 +548,6 @@ // // tsbtnStart // - this.tsbtnStart.Enabled = false; this.tsbtnStart.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnStart.Image"))); this.tsbtnStart.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.tsbtnStart.ImageTransparentColor = System.Drawing.Color.Magenta; @@ -1552,7 +1551,7 @@ this.splitContainer2.Panel2.Controls.Add(this.gboxDefectList); this.splitContainer2.Panel2MinSize = 400; this.splitContainer2.Size = new System.Drawing.Size(463, 523); - this.splitContainer2.SplitterDistance = 31; + this.splitContainer2.SplitterDistance = 32; this.splitContainer2.SplitterWidth = 3; this.splitContainer2.TabIndex = 10; // @@ -1572,7 +1571,7 @@ // splitContainer3.Panel2 // this.splitContainer3.Panel2.Controls.Add(this.picScanner2); - this.splitContainer3.Size = new System.Drawing.Size(31, 523); + this.splitContainer3.Size = new System.Drawing.Size(32, 523); this.splitContainer3.SplitterDistance = 226; this.splitContainer3.SplitterWidth = 3; this.splitContainer3.TabIndex = 11; @@ -1586,7 +1585,7 @@ this.picScanner1.Location = new System.Drawing.Point(0, 0); this.picScanner1.Margin = new System.Windows.Forms.Padding(2); this.picScanner1.Name = "picScanner1"; - this.picScanner1.Size = new System.Drawing.Size(31, 226); + this.picScanner1.Size = new System.Drawing.Size(32, 226); this.picScanner1.TabIndex = 7; this.picScanner1.TabStop = false; // @@ -1598,7 +1597,7 @@ this.picScanner2.Location = new System.Drawing.Point(0, 0); this.picScanner2.Margin = new System.Windows.Forms.Padding(2); this.picScanner2.Name = "picScanner2"; - this.picScanner2.Size = new System.Drawing.Size(31, 294); + this.picScanner2.Size = new System.Drawing.Size(32, 294); this.picScanner2.TabIndex = 9; this.picScanner2.TabStop = false; // @@ -1612,7 +1611,7 @@ this.gboxDefectList.Margin = new System.Windows.Forms.Padding(2); this.gboxDefectList.Name = "gboxDefectList"; this.gboxDefectList.Padding = new System.Windows.Forms.Padding(2); - this.gboxDefectList.Size = new System.Drawing.Size(429, 523); + this.gboxDefectList.Size = new System.Drawing.Size(428, 523); this.gboxDefectList.TabIndex = 3; this.gboxDefectList.TabStop = false; this.gboxDefectList.Tag = "0"; @@ -1624,7 +1623,7 @@ this.lblDefectAddTag.AutoSize = true; this.lblDefectAddTag.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lblDefectAddTag.ForeColor = System.Drawing.Color.Blue; - this.lblDefectAddTag.Location = new System.Drawing.Point(278, 2); + this.lblDefectAddTag.Location = new System.Drawing.Point(277, 2); this.lblDefectAddTag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); this.lblDefectAddTag.Name = "lblDefectAddTag"; this.lblDefectAddTag.Size = new System.Drawing.Size(0, 12); @@ -1639,7 +1638,7 @@ this.pnlBmpList.Location = new System.Drawing.Point(2, 16); this.pnlBmpList.Margin = new System.Windows.Forms.Padding(2); this.pnlBmpList.Name = "pnlBmpList"; - this.pnlBmpList.Size = new System.Drawing.Size(425, 505); + this.pnlBmpList.Size = new System.Drawing.Size(424, 505); this.pnlBmpList.TabIndex = 0; // // chkBuzzer diff --git a/halftoneproject-master/Code/FrmMain.cs b/halftoneproject-master/Code/FrmMain.cs index 23f7225..f5d2439 100644 --- a/halftoneproject-master/Code/FrmMain.cs +++ b/halftoneproject-master/Code/FrmMain.cs @@ -156,6 +156,9 @@ namespace ProductionControl //读取硬盘剩余空间 Config.CheckDisk(); + + //测试 + } private void loadProductCodeList() { @@ -373,6 +376,8 @@ namespace ProductionControl order.StepId = (int)currProductModel.StepId; order.SN = sn; order.BatchId = currProductModel.BatchId; + //order.ProductInfo = model; + errStep = 9; int nextStepId = 0; do @@ -1366,6 +1371,8 @@ namespace ProductionControl AddTextEvent($"{stepIndex + 1}-{processName}", $"开始缺陷检测,源图索引:{defectBmpNum},图像队列数量: {scannerGBmpQueue.Count}..."); string[] aarCut_size = processParam.Value("CutSize").Split(','); string[] aarResize = processParam.Value("Resize").Split(','); + + //string[] arrThresClass = processParam.Value("ThresholdsClass").Split(','); //图纸 attachmentFile = model.AttachmentList.FirstOrDefault(x => x.Type == 0); if (attachmentFile != null) @@ -1386,7 +1393,8 @@ namespace ProductionControl cut_size = new System.Drawing.Size(Convert.ToInt32(aarCut_size[0]), Convert.ToInt32(aarCut_size[1])), resize = new System.Drawing.Size(Convert.ToInt32(aarResize[0]), Convert.ToInt32(aarResize[1])), thresholds = processParam.Value("Thresholds"), - thresholdsClass = processParam.Value("ThresholdsClass"), + thresholdsClass = processParam.Value("ThresholdsClass").Split(',').Length == 11? + processParam.Value("ThresholdsClass") + ",0.3" : processParam.Value("ThresholdsClass"), recAreaThreshold= getProductAreaThreshol(model), //qxName,面积; qxName,面积; qxName,面积; finishEvent = (res) => { @@ -1394,7 +1402,7 @@ namespace ProductionControl { setDgvContentCol(liStatocStepIndex, $"源图索引:{res.index},缺陷数:{res.defectCount},处理时间(ms):{string.Join("->", res.stopwatch.Select(i => i.ToString()).ToArray())}"); AddTextEvent($"{res.stepIndex + 1}-{res.processName}", $"缺陷检测完成(源图索引:{res.index}),缺陷数:{res.defectCount},处理时间(ms):{string.Join("->", res.stopwatch.Select(i => i.ToString()).ToArray())}"); - string path; + string path = ""; if (res.defectCount > 0) { //UI显示小图 (含统计缺陷类型数量) @@ -1439,20 +1447,32 @@ namespace ProductionControl //保存原始小图 if (Config.Defect_SrcSmall_SavePath != "" && Directory.Exists(Config.Defect_SrcSmall_SavePath)) { - for (int i = 0; i < res.defectInfor2RestorationDesk.Count(); i++) + string sinfo = ""; + int sterr = 0; + try { - int indext = int.Parse(res.defectInfor2RestorationDesk[i][0]); - double thres = double.Parse(res.defectInfor2RestorationDesk[i][4]); - if (thres >= Config.Defect_SrcSmall_Thres) + for (int i = 0; i < res.defectInfor2RestorationDesk.Count(); i++) { - path = Util.createSubDir(Config.Defect_SrcSmall_SavePath, - new List { order.CreateTime.ToString("yyyyMMdd"), + sterr = 1; + sinfo = JsonConvert.SerializeObject(res.defectInfor2RestorationDesk[i]); + int indext = int.Parse(res.defectInfor2RestorationDesk[i][0]); + double thres = double.Parse(res.defectInfor2RestorationDesk[i][4]); + if (thres >= Config.Defect_SrcSmall_Thres) + { + path = Util.createSubDir(Config.Defect_SrcSmall_SavePath, + new List { order.CreateTime.ToString("yyyyMMdd"), order.SN, - order.ProductInfo.MainGrid == 1?"主栅":order.ProductInfo.ClassesId == 7?"rj":"pi", + model.MainGrid == 1?"主栅":model.ClassesId == 7?"rj":"pi", res.defectInfor2RestorationDesk[i][3]}); - path += $"Defect_SN{order.SN}_I{res.index}_X{res.Xmm}_Y{res.Ymm}_{model.StepInfo.Name}"; - res.bmps_cut[indext].ImWrite(path + $"_i{i}.bmp"); + sterr = 2; + path += $"Defect_SN{order.SN}_I{res.index}_X{res.Xmm}_Y{res.Ymm}_{model.StepInfo.Name}"; + res.bmps_cut[indext].ImWrite(path + $"_i{i}.bmp"); + sterr = 3; + } } + }catch (Exception ex) + { + AddTextEvent($"{res.stepIndex + 1}-{res.processName}", $"原始小图保存出错{sterr}-{sinfo}-{path}:{ex.Message}"); } } @@ -1639,12 +1659,18 @@ namespace ProductionControl int itemDefectCount; foreach (var item in model.QualifiedCriterionList) { - defectCode = EnumUtil.Convert2Enum(item.DefectCode); - itemDefectCount = getDefectCountFromCode(order, defectCode); - if (item.MaxDefectCount>-1 && itemDefectCount > item.MaxDefectCount) + try { - order.Qualified = false; - defectNames += $"{((DefectNameEnum)(int)defectCode).ToString()}({itemDefectCount}),"; + defectCode = EnumUtil.Convert2Enum(item.DefectCode); + itemDefectCount = getDefectCountFromCode(order, defectCode); + if (item.MaxDefectCount > -1 && itemDefectCount > item.MaxDefectCount) + { + order.Qualified = false; + defectNames += $"{((DefectNameEnum)(int)defectCode).ToString()}({itemDefectCount}),"; + } + }catch (Exception ex) + { + ; } } } @@ -2230,9 +2256,11 @@ namespace ProductionControl case "xb": order.XBCount++; break; - case "sx": + case "gsdl"://sx =>gsdl order.SXCount++; break; + default: + break; } } } diff --git a/halftoneproject-master/Code/FrmMain.resx b/halftoneproject-master/Code/FrmMain.resx index 3ca4042..1bfc665 100644 --- a/halftoneproject-master/Code/FrmMain.resx +++ b/halftoneproject-master/Code/FrmMain.resx @@ -643,20 +643,20 @@ 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 @@ -665,11 +665,11 @@ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG9SURBVFhHYxgS4F+GuvqvFGVjKJf24KW9KM+nEJnk3+kq x/7nqf//l632H+iA/1+i5f6/DpC89MJVpOiRhQwnVDl1wbH6wmUPAjT/fwyV+Q90wH90B7wLkPr/wlX0 /0MbgRv3THjVodqoBx6Y8f1/7iRC0AFPbAT/3zfl+nzflCcQqhUveOkm2gtl4gekOOChOf9/kPpHFgIz - gdEmATUCBfzLUlb5Fiu/EeiA/1Ah/IAsB1gK/L/vwPX5pbvo3vfBUu1f4xXSfqcpN/7NUVv3PFftz7dY + gdEmATUCBfzLUlb5Fiu/EeiA/1Ah/IAsB1gK/L/vwPX5pbvo3vfBUu1f4xXSfqcpN/7NUVv3LFftz7dY hf80d8AzB+H/rz3F/38Ilv7/LU4BrPdfrhoYjzpg1AGjDhh1wNB3wM9s1ee/UhSv0s0BT92k/l8uDfkP LM89/tdrsUGlGP6HarG9CZAxA7YHJgMd8JMmDrgU7/Z/44o1/+es34NXwxMrfoOH5tz3qO6A9QdO/1+x 8yhBB4DAXWNB/vumvDMJOeBLrDyopoyFasMPSHEADDyyEPR4Ziv8BN0BH5LVvv3NUZ32PUZOEaqUMCDH - ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAEpq3zdLEAiX + ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAD2x3zbKG7iV AAAAAElFTkSuQmCC @@ -695,15 +695,15 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMDxm4IgaG0KgqA1sg91abChIsMG - GwJz0EKDChsiatBampqCIGiOGlKiQDLNoDw5+7rkSjMuy7yMSj0xA+HqyeJtqOBE06C4/3T33vu8/IaD - O+xPFB5O1FzpWRG6LX5UM1Xm72E0tPYOZwaSEBlMwbUuAee9t3CoCHh3ZeQILsZL0fbCtmYkFvFuCjIA - CGqj8BVAKmhwyY7B1uT2W+t3a9BY4bI14uBpO80KcEgIWG/Ak3Yx0YVGeduXB2bQJX+5AN72bkk9gLeQ - 85QyWIGO+FTIwFYHNdHVA3kA0BJ/+QG8QLTTyTMV4wjp49PRca4/YXqevBtNm31DN1ywLwZFB5BdNJyp - IhDSsxCb4CBhArgfTQMz9AgCQAAIAAHw9wHhwVTkWhc/+TUAIT+BnTEfZD4irZQSStAjjFJSJUcKutEl - I2cdEme6KACr2g0ry25YsNh5B5xSotZW57ooOMCyvQdLG66sgLc2RfvldikxnxWgjiUPOs5VaIy/XAAf - 4TKyNfNuhL8D2KcMYO5SG69CW7OXD+AjWsVUXulinQ8TnIadAlHI8JL7f+NPAAVJAAgA87bH+A4w241o - Seg/h2GvTpv1N1uFB9AAAAAASUVORK5CYII= + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxJyEIWpuCIGiNLCuXBhssMnSw + ITAHLTSoqEGiBqulqSkIhOaoISMKIjsrKE/Ovi65zIzL/DiMSj0xA8F6uuJtqODE0sC4/3T33vu8/IaD + O1FJFBlO1gZNrATdFj+qlSr39TB62nCHMwMpiA6mIWxMwlXvLZyo/J4DOTmKN+NlaHthW7cQi3g3BRwA + AoYYfAWQKhqc8jOwN7l8mw0HtWiscNmlOLjbvTkBjhYCNhrxFNZMqNEob0dK/yy65C8fwNveHZkb8DbS + SmkCleiIT4VG2JqAPrZ2rPQDWuLvZwAPEB106lLLOEKmxExsPNufnHyeujNnbN4hJhvoi0PRAaSahktt + FEImFuITWUhOAtybM8AMPYIAEAACQACUPiAymI6GjYnzPwMQynPYH7sA7iOioDQgRo9ElIYSn6poqVNO + zjladjNFAWzqXLCy7IKFVYx3YFdG1NnrndcFB6zuHcLSljMn4K1tyVEFJiOsOQG6eOq480qLxvjLB/AR + LicV3LsR+Q5gnzjA/I0hUY225u4ngI9oLVMVNMa7HiayenYaJKGRl/z/G38DKEgCQADY9tyWd4ANs6Al + of+cSPQKNSv1NawgHXgAAAAASUVORK5CYII= @@ -730,8 +730,8 @@ hSD+56M51fL5Z2xlyAfodJyTcaLd9RzkewtHdhEF7GHlB3rBESBlTn9ZbqhuHUoy5yd1CGFB5X0INOsc 4L/h+gBwY9z1HK5xfc9l/kNXwuEnFR5xPg+SPeSbaEdA2jGE5tYhtvQscppHcOj0ZaTXdCOysBEhtkr4 J9vxRUwe4CP3GVPPISY+MccdAdbY5FRj4lloBNJO9KCi8wouTs5iYoZNcO0mGvrGkXOyG1FFzdhxuP7v - CBgTz8I3wW51JwKbo/OsxsSzuBMBhQpYLAIqwBy9PQhILbNaLGHORSJw+26/EHt+arMuFBBR0PD/OL4D - z0PkL0wqc7U3HF6aAAAAAElFTkSuQmCC + CBgTz8I3wW51JwKbo/OsxsSzuBMBhQpYLAIqwBy9PQhILbNaLKHORSJw+26/EHt+arMuFBBR0PD/OL4D + z0PkL0nYc7TQrXDGAAAAAElFTkSuQmCC