jace.tang
2023-02-11 ed8d469ccdc0e627d8f180bb92a9d78dbdb008b1
HeightDetection.cs
@@ -73,6 +73,7 @@
            HObject ihImage = null;
            HObject hi = new HObject();
            string tempFileName = "";
            try
            {
                opc.Write(OPCOutputTag.DetectionStart2, false);
@@ -125,7 +126,10 @@
                    CommonUtil.mainForm.Invoke(new Action(() => CommonUtil.mainForm.AppendDetectionData(productNo)));
                    int detectID = CommonUtil.StepControl.GetDetectHeightID();
                    string tempFileName = CommonUtil.mainForm.PlateID.ToString() + "_" + productNo.Trim().Replace("/", "").Replace("\"", "'") + "_" + DateTime.Now.ToString("HHmmssff") + "_" + detectID.ToString();
                    int slotNum = (CommonUtil.mainForm.PlateID + 1) % 5 + 1;
                    tempFileName = slotNum.ToString() + "_" + productNo.Trim().Replace("/", "").Replace("\"", "'") + "_" + DateTime.Now.ToString("HHmmssff") + "_" + detectID.ToString();
                    if (productNo.Trim().Length == CommonUtil.ProductNoLength)
                    {
                        string productNoFileName = CommonUtil.ProductNoImageDir + @"\" + productNo + "_" + detectID.ToString();
@@ -165,7 +169,7 @@
                                double compv = 0.0;
                                Type t = opcConfig.compensationZ.GetType();
                                int slotNum = (CommonUtil.mainForm.PlateID + 1) % 5 + 1;
                                FieldInfo fi = t.GetField(string.Format("station{0}", slotNum));
                                compv = (double)fi.GetValue(opcConfig.compensationZ);
@@ -188,26 +192,76 @@
                                cellHeightResult = MeasureState.NA;
                            }
                            #endregion
                            //保存高度图片
                            if (cellHeightResult == MeasureState.OK)
                            {
                                heightResult = MeasureState.OK;
                                DateTime dt = DateTime.Now;
                                if (dt.Second >= 10 && dt.Second <= 15)
                                {
                                    heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                                }
                            }
                            else if (cellHeightResult == MeasureState.NG)
                            {
                                heightResult = MeasureState.NG;
                                heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                            }
                            else
                            {
                                heightResult = MeasureState.NA;
                                heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                            }
                        }
                        else
                        {
                            if (batteryHeight[0] != 999.999 && batteryHeight[0] != -999.999)
                            {
                                double compv = 0.0;
                                Type t = opcConfig.standardCompensationZ.GetType();
                                Type t = opcConfig.compensationZ.GetType();
                                FieldInfo fi = t.GetField(string.Format("station{0}", (CommonUtil.mainForm.PlateID + 1) % 5 + 1));
                                compv = (double)fi.GetValue(opcConfig.standardCompensationZ);
                                compv = (double)fi.GetValue(opcConfig.compensationZ);
                                batteryHeight[0] += compv;
                                cellHeightResult = batteryHeight[0] >= opcConfig.standardHeightLimit.Min
                                && batteryHeight[0] <= opcConfig.standardHeightLimit.Max ? MeasureState.OK : MeasureState.NG;
                            }
                            //batteryHeight[1] = 999.999;
                            else
                            {
                                cellHeightResult = MeasureState.NA;
                            }
                            cellHeightResult = batteryHeight[0] >= opcConfig.standardHeightLimit.Min
                            && batteryHeight[0] <= opcConfig.standardHeightLimit.Max ? MeasureState.OK : MeasureState.NG;
                            //保存高度图片
                            if (cellHeightResult == MeasureState.OK)
                            {
                                heightResult = MeasureState.OK;
                                heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"\" + tempFileName);
                            }
                            else if (cellHeightResult == MeasureState.NG)
                            {
                                heightResult = MeasureState.NG;
                                heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"\" + tempFileName);
                            }
                            else
                            {
                                heightResult = MeasureState.NA;
                                heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                            }
                        }
                        timeStr = DateTime.Now.ToString("hh:mm:ss fff");
                        heightResult = cellHeightResult;
                        //保存高度图片
                        //if (cellHeightResult == MeasureState.OK)
@@ -221,12 +275,42 @@
                        //    heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"_NG\" + tempFileName);
                        //}
                        heightResult = cellHeightResult;
                        //保存产品及标准块高度图片
                        //if (heightResult != MeasureState.OK)
                        //{
                        //    if (CommonUtil.DetectionOption == DetectionOption.doStandardBlock)
                        //    {
                        //        heightFileName=VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"\" + tempFileName);
                        //    }
                        //    else
                        //    {
                        //        heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                        //    }
                        //}
                        //else
                        //{
                        //    if (opcConfig.IsSaveHeightOKImage||CommonUtil.DetectionOption == DetectionOption.doStandardBlock)
                        //    {
                        //        if (CommonUtil.DetectionOption == DetectionOption.doStandardBlock)
                        //        {
                        //            heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"\" + tempFileName);
                        //        }
                        //        else
                        //        {
                        //            DateTime dt = DateTime.Now;
                        //            if (dt.Second >= 10 && dt.Second <= 15)
                        //            {
                        //                heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"_OK\" + tempFileName);
                        //            }
                        //        }
                        //    }
                        if (heightResult != MeasureState.OK)
                        {
                            heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                        }
                        //}
                        CommonUtil.WriteLog(LogType.Inf, string.Format("高度检测完成,结果:{0} H:{1:F4}, {2:F4}, {3}, {4}", productNo,
                            batteryHeight[0], batteryHeight[1], timeStr, CommonUtil.StepControl.ToString()));
                    }
@@ -243,6 +327,12 @@
            catch (Exception ex)
            {
                CommonUtil.WriteLog(LogType.Exc, string.Format("检测产品条码和厚度过程中出现异常:{0}", ex.Message));
                if (string.IsNullOrWhiteSpace(tempFileName))
                {
                    tempFileName = DateTime.Now.ToString("HHmmssfff");
                }
                VisionDetect.SaveImageAs(ihImage, $"{CommonUtil.ProductNoImageDir}_NA\\{tempFileName}");
            }
            finally
            {