jace.tang
2023-02-11 ed8d469ccdc0e627d8f180bb92a9d78dbdb008b1
SizeDetection.cs
@@ -232,6 +232,7 @@
                timeStr, CommonUtil.StepControl.ToString()));
            HObject hImage = null;
            string tempFileName = "";
            try
            {
                Thread.Sleep(50);
@@ -242,7 +243,7 @@
                {
                    return;
                }
                string tempFileName = GetCurrentProductSN(detectID);
                tempFileName = GetCurrentProductSN(detectID);
                string productNo = GetProductNo(detectID);
                int times = 3;
@@ -289,6 +290,7 @@
                    tupleDictionary.Add("OUTPUT_RectArea", new HTuple());
                    tupleDictionary.Add("INPUT_Rect", rectROI);
                    tupleDictionary.Add("INPUT_RectThreshold", rectThreshold);
                    tupleDictionary.Add("INPUT_Type", CommonUtil.DetectionOption == DetectionOption.doStandardBlock ? 2 : 1);
                    #endregion
                    _tool.SetDictionary(tupleDictionary, imageDictionary);
@@ -333,6 +335,10 @@
                        btyLength += compL;
                        btyWidth += compW;
                        //限制精度5位
                        btyLength = Math.Round(btyLength, 5);
                        btyWidth = Math.Round(btyWidth, 5);
                        lengthMeasureState = (btyLength >= opcConfig.batteryLengthLimit.Min && btyLength <= opcConfig.batteryLengthLimit.Max) ? MeasureState.OK : MeasureState.NG;
                        widthMeasureState = (btyWidth >= opcConfig.batteryWidthLimit.Min && btyWidth <= opcConfig.batteryWidthLimit.Max) ? MeasureState.OK : MeasureState.NG;
@@ -390,13 +396,13 @@
                    }
                    else
                    {
                        Type t = opcConfig.standardCompensationL.GetType();
                        Type t = opcConfig.compensationL.GetType();
                        FieldInfo fi = t.GetField(string.Format("station{0}", CommonUtil.mainForm.PlateID));
                        compL = (double)fi.GetValue(opcConfig.standardCompensationL);
                        compL = (double)fi.GetValue(opcConfig.compensationL);
                        t = opcConfig.standardCompensationW.GetType();
                        t = opcConfig.compensationW.GetType();
                        fi = t.GetField(string.Format("station{0}", CommonUtil.mainForm.PlateID));
                        compW = (double)fi.GetValue(opcConfig.standardCompensationW);
                        compW = (double)fi.GetValue(opcConfig.compensationW);
                        btyLength += compL;
                        btyWidth += compW;
@@ -406,13 +412,49 @@
                        if (lengthMeasureState == MeasureState.OK && widthMeasureState == MeasureState.OK)
                        {
                            ms = MeasureState.OK;
                            //ms = MeasureState.OK;
                            //VisionDetect.SaveImageAs(hImage, CommonUtil.ScreenshotsDir + @"\" + tempFileName);
                            VisionDetect.SaveImageAs(hImage, CommonUtil.ProductSizeImageDir + @"\" + tempFileName);
                        }
                        else
                        {
                            ms = MeasureState.NG;
                            fileName = VisionDetect.SaveImageAs(hImage, CommonUtil.ScreenshotsDir + @"_NG\" + tempFileName);
                            //ms = MeasureState.NG;
                            if (btyLength >= MaxLength || btyLength <= MinLength || btyWidth >= MaxWidth || btyWidth <= MinWidth)
                            {
                                lengthMeasureState = MeasureState.NA;
                                widthMeasureState = MeasureState.NA;
                                ms = MeasureState.NA;
                            }
                            else
                            {
                                ms = MeasureState.NG;
                            }
                            if (ms != MeasureState.NA)
                            {
                                if (!isNA)
                                {
                                    ms = MeasureState.NG;
                                    fileName = VisionDetect.SaveImageAs(hImage, CommonUtil.ProductSizeImageDir + @"\" + tempFileName);
                                }
                                else
                                {
                                    lengthMeasureState = MeasureState.NA;
                                    widthMeasureState = MeasureState.NA;
                                    ms = MeasureState.NA;
                                    fileName = VisionDetect.SaveImageAs(hImage, CommonUtil.ProductSizeImageDir + $"_{ms.ToString()}\\{ tempFileName}");
                                }
                            }
                            else
                            {
                                fileName = VisionDetect.SaveImageAs(hImage, CommonUtil.ProductSizeImageDir + $"_{ms.ToString()}\\{ tempFileName}");
                            }
                            //ms = MeasureState.NG;
                            //fileName = VisionDetect.SaveImageAs(hImage, CommonUtil.ScreenshotsDir + @"_NG\" + tempFileName);
                            //fileName = VisionDetect.SaveImageAs(hImage, CommonUtil.ProductSizeImageDir + @"\" + tempFileName);
                        }
                    }
@@ -462,6 +504,7 @@
            catch (Exception ex)
            {
                CommonUtil.WriteLog(LogType.Exc, string.Format("产品尺寸检测出现异常:{0}", ex.Message));
                fileName = VisionDetect.SaveImageAs(hImage, $"{CommonUtil.ProductSizeImageDir}_NA\\{tempFileName}");
            }
            finally
            {
@@ -652,8 +695,25 @@
        {
            GregorianCalendar gc = new GregorianCalendar();
            int weekOfYear = gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
            var weekPlusStr = ConfigurationManager.AppSettings["WeekPlus"];
            int weekPlus = 0;
            if (!int.TryParse(weekPlusStr, out weekPlus))
            {
                weekPlus = 0;
            }
            weekOfYear += weekPlus;
            string week = weekOfYear.ToString().Length == 1 ? "0" + weekOfYear.ToString() : weekOfYear.ToString();
            var yearPlusStr = ConfigurationManager.AppSettings["YearPlus"];
            int yearPlus = 0;
            if (!int.TryParse(yearPlusStr, out yearPlus))
            {
                yearPlus = 0;
            }
            string year = dt.Year.ToString().Substring(dt.Year.ToString().Length - 1, 1);
            year = (int.Parse(year) + yearPlus).ToString();
            return year + week;
        }
    }