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 +++++++++++++++++++++++++------------------------
 1 files changed, 75 insertions(+), 74 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)

--
Gitblit v1.8.0