From 9a2f369bcee572ba086ca83d76a562a0ecaa587b Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期四, 16 七月 2020 17:22:09 +0800
Subject: [PATCH] 板卡修复回原点bug 主流程注释部分log信息,添加部分图片对象主动释放操作 修复Excel输出Alignment最后一项第一次无数据bug 添加平面补偿

---
 src/Bro.Device.GTSCard/GTSCardDriver.cs |  149 ++++++++++++++++++------------------
 src/Bro.M071.Process/M071Process.cs     |   40 +++++----
 2 files changed, 96 insertions(+), 93 deletions(-)

diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index d87e661..573f480 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -443,7 +443,7 @@
                 {
                     axisImmediatePauseHandleDict[optionPara.AxisIndex].WaitOne();
 
-                    if (!axisPauseResumeFlag[optionPara.AxisIndex])
+                    if (axisPauseResumeFlag.ContainsKey(optionPara.AxisIndex) && !axisPauseResumeFlag[optionPara.AxisIndex])
                         return true;
 
                     try
@@ -492,7 +492,7 @@
                         isSuccessAndStop = false;
                         LogAsync(DateTime.Now, $"杞磠optionPara.AxisIndex}杩愬姩寮傚父", ex.GetExceptionMessage());
                     }
-                } while (axisImmediatePauseFlag[optionPara.AxisIndex]);
+                } while (axisImmediatePauseFlag.ContainsKey(optionPara.AxisIndex) && axisImmediatePauseFlag[optionPara.AxisIndex]);
                 return isSuccessAndStop;
             });
         }
@@ -891,14 +891,9 @@
                 var goHomePara = IConfig.AxisSettings.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex).GoHomePara;
                 bool homeDirection = goHomePara.IsHomeDirPositive;
                 bool isRightLimitReached = false;
-
-            StartCapture:
-
-                PositionReset(movingOption.AxisIndex, 1);
-                ClearStatus(movingOption.AxisIndex, 1);
+                short capture = 0;
 
                 GTSCardAPI.TTrapPrm trapPrm;
-                bool isStop = false;
                 //鎼滅储璺濈 闃舵1
                 // 鍚姩Home鎹曡幏
                 short sRtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME);
@@ -913,88 +908,94 @@
                 // 璁剧疆鐐逛綅妯″紡鐩爣閫熷害锛屽嵆鍥炲師鐐归�熷害
                 sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, goHomePara.HighVelocity);
 
-                // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈
-                sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, homeDirection ? 99999999 : -99999999);
-                // 鍚姩杩愬姩
-                sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1));
-
-                int repeatTime = goHomePara.GoHomeTimeOut * 1000;
-                short capture;
-                int pos;
-                uint clk;//鏃堕挓鍙傛暟
                 do
                 {
-                    Thread.Sleep(IConfig.MonitorInterval);
-                    // 璇诲彇鎹曡幏鐘舵��
-                    GTSCardAPI.GT_GetCaptureStatus((short)IConfig.CardNum, (short)movingOption.AxisIndex, out capture, out pos, 1, out clk);
-                    isStop = IsStop((short)movingOption.AxisIndex);
-                    repeatTime -= IConfig.MonitorInterval;
-                } while (!(isStop || capture == 1 || repeatTime <= 0));
+                    PositionReset(movingOption.AxisIndex, 1);
+                    ClearStatus(movingOption.AxisIndex, 1);
 
-                if (repeatTime <= 0)
-                {
-                    MoveStop((short)movingOption.AxisIndex, 0);
-                    throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父");
-                }
+                    // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈
+                    sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, homeDirection ? 99999999 : -99999999);
+                    // 鍚姩杩愬姩
+                    sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1));
 
-                if (isStop && capture != 1)
-                {
-                    ClearStatus((short)movingOption.AxisIndex, 1);
+                    int repeatTime = goHomePara.GoHomeTimeOut * 1000;
+
+                    bool isStop = false;
+                    int pos;
+                    uint clk;//鏃堕挓鍙傛暟
+                    do
+                    {
+                        Thread.Sleep(IConfig.MonitorInterval * 5);
+                        // 璇诲彇鎹曡幏鐘舵��
+                        GTSCardAPI.GT_GetCaptureStatus((short)IConfig.CardNum, (short)movingOption.AxisIndex, out capture, out pos, 1, out clk);
+                        isStop = IsStop((short)movingOption.AxisIndex);
+                        repeatTime -= IConfig.MonitorInterval * 5;
+                    } while (!(isStop || capture == 1 || repeatTime <= 0));
+
+                    if (repeatTime <= 0)
+                    {
+                        MoveStop((short)movingOption.AxisIndex, 0);
+                        throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父");
+                    }
 
                     var axisStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex);
 
-                    if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0))
+                    if (isStop && capture != 1)
                     {
-                        //movingOption.GoHomePara.HomeDir = (short)(movingOption.GoHomePara.HomeDir == 1 ? -1 : 1);
+                        ClearStatus((short)movingOption.AxisIndex, 1);
 
-                        //姝i檺浣�
-                        if ((axisStatus.AxisStatus & 0x20) != 0 && !goHomePara.IsCaptureDirPositive)
+                        if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0))
                         {
-                            isRightLimitReached = true;
+                            //movingOption.GoHomePara.HomeDir = (short)(movingOption.GoHomePara.HomeDir == 1 ? -1 : 1);
+
+                            //姝i檺浣�
+                            if ((axisStatus.AxisStatus & 0x20) != 0 && !goHomePara.IsCaptureDirPositive)
+                            {
+                                isRightLimitReached = true;
+                            }
+
+
+                            //璐熼檺浣�
+                            if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive)
+                            {
+                                isRightLimitReached = true;
+                            }
+
+                            homeDirection = !homeDirection;
                         }
-
-
-                        //璐熼檺浣�
-                        if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive)
-                        {
-                            isRightLimitReached = true;
-                        }
-
-                        homeDirection = !homeDirection;
-                        goto StartCapture;
                     }
 
-                    throw new ProcessException($"杩愬姩杞磠movingOption.AxisIndex} 锛屽洖鍘熺偣瓒呮椂寮傚父");
-                }
-
-                if (capture == 1)
-                {
-                    if (!isRightLimitReached)
+                    if (capture == 1)
                     {
-                        capture = 0;
-                        goto StartCapture;
+                        if (!isRightLimitReached)
+                        {
+                            capture = 0;
+                            //GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME);
+                            continue;
+                        }
+
+                        //鍏坰top
+                        MoveStop((short)movingOption.AxisIndex, 0);
+                        ClearStatus((short)movingOption.AxisIndex, 1);
+                        //宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2
+                        // 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�"
+                        sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + goHomePara.HomeOffset);
+                        // 鍦ㄨ繍鍔ㄧ姸鎬佷笅鏇存柊鐩爣浣嶇疆
+                        sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1));
+                        isStop = false;
+
+                        repeatTime = 1000;
+                        do
+                        {
+                            Thread.Sleep(20);
+                            isStop = IsStop((short)movingOption.AxisIndex);
+                            repeatTime--;
+                        } while (!isStop && repeatTime > 0);
+                        PositionReset(movingOption.AxisIndex, 1);
+                        return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop;
                     }
 
-                    //鍏坰top
-                    MoveStop((short)movingOption.AxisIndex, 0);
-                    ClearStatus((short)movingOption.AxisIndex, 1);
-                    //宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2
-                    // 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�"
-                    sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + goHomePara.HomeOffset);
-                    // 鍦ㄨ繍鍔ㄧ姸鎬佷笅鏇存柊鐩爣浣嶇疆
-                    sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1));
-                    isStop = false;
-
-                    repeatTime = 1000;
-                    do
-                    {
-                        Thread.Sleep(20);
-                        isStop = IsStop((short)movingOption.AxisIndex);
-                        repeatTime--;
-                    } while (!isStop && repeatTime > 0);
-                    PositionReset(movingOption.AxisIndex, 1);
-                    return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop;
-                }
+                } while (!(capture == 1 && isRightLimitReached));
                 return false;
             }
             catch (Exception ex)
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index 4c1512c..7847649 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -377,12 +377,12 @@
                                         else
                                         {
                                             m.Spec.ActualValue = double.Parse(_halconToolDict[toolKey].GetResultTuple("OUTPUT_Result").D.ToString("f2"));
-                                            LogAsync(DateTime.Now, $"{m.GetDisplayText()}鏁版嵁{m.Spec.ActualValue}锛岀粨鏋渰(m.Spec.MeasureResult == null ? "TBD" : (m.Spec.MeasureResult == true ? "OK" : "NG"))}", "");
+                                            //LogAsync(DateTime.Now, $"{m.GetDisplayText()}鏁版嵁{m.Spec.ActualValue}锛岀粨鏋渰(m.Spec.MeasureResult == null ? "TBD" : (m.Spec.MeasureResult == true ? "OK" : "NG"))}", "");
                                         }
                                     }
                                 }
 
-                                LogAsync(DateTime.Now, $"{m.GetDisplayText()}妫�娴嬬粨鏋�", $"{((m.Spec.MeasureResult ?? false) ? "OK" : "NG")}");
+                                //LogAsync(DateTime.Now, $"{m.GetDisplayText()}妫�娴嬬粨鏋�", $"{((m.Spec.MeasureResult ?? false) ? "OK" : "NG")}");
 
                                 KeyIndicator indicator = new KeyIndicator(m.Id, m.DisplayLocation);
                                 indicator.Text = (m.Spec.ActualValue == null || m.Spec.ActualValue == -999) ? "NA" : m.Spec.ActualValue.Value.ToString("f2");
@@ -808,7 +808,7 @@
                                 int allRowNums = alignmentSheet.Dimension.Rows;
                                 int aligneStartCol = alignmentSheet.Dimension.Columns;
 
-                                for (int i = 3; i <= allRowNums; i++)
+                                for (int i = 3; i <= alignmentSheet.Dimension.End.Row; i++)
                                 {
                                     string keys = alignmentSheet.Cells[i, 1].Value.ToString();
                                     string position = alignmentSheet.Cells[i, 2].Value.ToString();
@@ -1047,7 +1047,9 @@
                  var keyBindCollection = measureList.SelectMany(u => u.KeyUnitCollection).Where(u => keys.Any(k => k.Key == u.Key)).ToList();
 
                  string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath;
-                 HObject images = imgSet.HImage;
+                 //HObject images = imgSet.HImage;
+
+                 HObject images = new HObject();
                  LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData);
                  LogAsync(DateTime.Now, $"鎵弿鍙傛暟:{imgSet.ImageData}", "");
 
@@ -1061,8 +1063,8 @@
                          return;
                      }
 
-                     string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif");
-                     imgSet.HImage.WriteImage("tiff", 0, fileName);
+                     //string fileName = Path.Combine(Config.ImageSaveFolder, "BeforeRun", $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.tif");
+                     //imgSet.HImage.WriteImage("tiff", 0, fileName);
 
                      _halconToolDict[toolKey].InputImageDic["INPUT_Image"] = imgSet.HImage;
                      if (!_halconToolDict[toolKey].RunProcedure(out string error))
@@ -1095,22 +1097,22 @@
                           });
                  }
 
-                 string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}");
-                 if (!Directory.Exists(dir))
-                 {
-                     Directory.CreateDirectory(dir);
-                 }
+                 //string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{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");
-                     using (HImage temp = image.ConvertHObjectToHImage())
-                     {
-                         temp.WriteImage("tiff", 0, fileName);
-                     }
+                     //string fileName = Path.Combine(dir, $"{i}.tif");
+                     //using (HImage temp = image.ConvertHObjectToHImage())
+                     //{
+                     //    temp.WriteImage("tiff", 0, fileName);
+                     //}
 
                      keys.Where(u => u.ImageSeq == i).ToList().ForEach(k =>
                          {
@@ -1142,10 +1144,9 @@
                                      }
                                      else
                                      {
-                                         //results = results.Select(u => double.Parse(u.ToString("f2"))).ToList();
-                                         LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}");
+                                         //LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}");
 
-                                         results.ForEach(u => u = u - Config.PlanCompensation);
+                                         results = results.Select(u => u - Config.PlanCompensation).ToList();
                                          resultDict = k.KeyResultList.ToDictionary(u => u, u =>
                                               {
                                                   int index = k.KeyResultList.IndexOf(u);
@@ -1166,6 +1167,7 @@
                  }
                  //);
 
+                 images.Dispose();
                  //if (count.I != 1)
                  //{
                  //    hImage?.Dispose();

--
Gitblit v1.8.0