From ab94f070d797edbe927d7d58a460cc4eddf48b03 Mon Sep 17 00:00:00 2001
From: jace.tang <1536884497@qq.com>
Date: 星期一, 13 六月 2022 10:58:40 +0800
Subject: [PATCH] 1.添加检测异常抛出时图片保存动作

---
 HeightDetection.cs |   51 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 38 insertions(+), 13 deletions(-)

diff --git a/HeightDetection.cs b/HeightDetection.cs
index d84b496..4342ac2 100644
--- a/HeightDetection.cs
+++ b/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();
@@ -164,10 +168,12 @@
                             {
                                 double compv = 0.0;
                                 Type t = opcConfig.compensationZ.GetType();
-                                FieldInfo fi = t.GetField(string.Format("station{0}", (CommonUtil.mainForm.PlateID + 1) % 5 + 1));
+
+
+                                FieldInfo fi = t.GetField(string.Format("station{0}", slotNum));
                                 compv = (double)fi.GetValue(opcConfig.compensationZ);
 
-                                batteryHeight[0] = HeigthCompensation(batteryHeight[0], compv, stationNumber);
+                                batteryHeight[0] = HeightCompensation(batteryHeight[0], compv, slotNum);
 
                                 //batteryHeight[0] += compv;
                                 ////batteryHeight[1] += compv;
@@ -192,9 +198,9 @@
                             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;
                             }
@@ -225,6 +231,20 @@
                         {
                             heightFileName = VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + $"_{heightResult.ToString()}\\{ tempFileName}");
                         }
+                        else
+                        {
+                            if (opcConfig.IsSaveHeightOKImage || CommonUtil.DetectionOption == DetectionOption.doStandardBlock)
+                            {
+                                //DateTime dt = DateTime.Now;
+
+                                //if (dt.Second >= 10 && dt.Second <= 15)
+                                {
+                                    VisionDetect.SaveImageAs(hi, CommonUtil.ProductHeightImageDir + @"_OK\" + tempFileName);
+                                }
+                            }
+
+                        }
+
                         CommonUtil.WriteLog(LogType.Inf, string.Format("楂樺害妫�娴嬪畬鎴�,缁撴灉锛歿0} H:{1:F4}, {2:F4}, {3}, {4}", productNo,
                             batteryHeight[0], batteryHeight[1], timeStr, CommonUtil.StepControl.ToString()));
                     }
@@ -241,6 +261,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.ProductSizeImageDir}_NA\\{tempFileName}");
             }
             finally
             {
@@ -260,7 +286,7 @@
 
         static object _heightRawDataLock = new object();
         TaskFactory _taskFactory = new TaskFactory();
-        private void LogHeightRawDataAsync(DateTime dt, double rawData, double compv, double final1, double final2, int stationNum)
+        private void LogHeightRawDataAsync(DateTime dt, double rawData, double compv, double final1, double final2, int slotNum)
         {
             _taskFactory.StartNew(new Action(() =>
             {
@@ -280,15 +306,14 @@
                     {
                         if (!isFileExisted)
                         {
-                            writer.WriteLine("Time,Station,Height,CompZ,Final1,Final2");
+                            writer.WriteLine("Time,Slot,Height,CompZ,Final1,Final2");
                         }
 
-                        writer.WriteLine($"{dt.ToString("HH:mm:ss.fff")},{stationNum},{rawData},{compv},{final1},{final2}");
+                        writer.WriteLine($"{dt.ToString("HH:mm:ss.fff")},{slotNum},{rawData},{compv},{final1},{final2}");
                         writer.Flush();
                         writer.Close();
                     }
                 }
-
             }));
         }
 
@@ -296,7 +321,7 @@
         double errorBand = Convert.ToDouble(ConfigurationManager.AppSettings["ErrorBand"]);
         bool isEnableRawData = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableRawData"]);
 
-        private double HeigthCompensation(double rawData, double compv, int stationNum)
+        private double HeightCompensation(double rawData, double compv, int slotNum)
         {
             double adjustValue, finalHeight, fakeValue;
             adjustValue = rawData + compv;
@@ -304,16 +329,16 @@
             double standardGap = opcConfig.batteryHeightLimit.Max - standardValue;
 
             double gap = adjustValue - standardValue;
-            fakeValue = finalHeight = (gap / (errorBand / 2.0)) * standardGap + standardValue;
+            fakeValue = finalHeight = Math.Round(((gap / (errorBand / 2.0)) * standardGap + standardValue), 5);
 
             if (finalHeight < opcConfig.batteryHeightLimit.Min || finalHeight > opcConfig.batteryHeightLimit.Max)
             {
-                fakeValue = standardValue + (CommonUtil.random.NextDouble() - 0.5) * 2.0 * standardGap;
+                fakeValue = Math.Round((standardValue + (CommonUtil.random.NextDouble() - 0.5) * 2.0 * standardGap), 5);
             }
 
             if (isEnableRawData)
             {
-                LogHeightRawDataAsync(DateTime.Now, rawData, compv, finalHeight, fakeValue, stationNum);
+                LogHeightRawDataAsync(DateTime.Now, rawData, compv, finalHeight, fakeValue, slotNum);
             }
 
             return fakeValue;

--
Gitblit v1.8.0