领胜LDS 键盘AOI检测项目
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,22 +908,28 @@
                // 设置点位模式目标速度,即回原点速度
                sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, goHomePara.HighVelocity);
                do
                {
                    PositionReset(movingOption.AxisIndex, 1);
                    ClearStatus(movingOption.AxisIndex, 1);
                // 设置点位模式目标位置,即原点搜索距离
                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;
                    bool isStop = false;
                int pos;
                uint clk;//时钟参数
                do
                {
                    Thread.Sleep(IConfig.MonitorInterval);
                        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;
                        repeatTime -= IConfig.MonitorInterval * 5;
                } while (!(isStop || capture == 1 || repeatTime <= 0));
                if (repeatTime <= 0)
@@ -937,11 +938,11 @@
                    throw new ProcessException($"运动轴{movingOption.AxisIndex} ,回原点超时异常");
                }
                    var axisStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex);
                if (isStop && capture != 1)
                {
                    ClearStatus((short)movingOption.AxisIndex, 1);
                    var axisStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == movingOption.AxisIndex);
                    if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0))
                    {
@@ -961,10 +962,7 @@
                        }
                        homeDirection = !homeDirection;
                        goto StartCapture;
                    }
                    throw new ProcessException($"运动轴{movingOption.AxisIndex} ,回原点超时异常");
                }
                if (capture == 1)
@@ -972,7 +970,8 @@
                    if (!isRightLimitReached)
                    {
                        capture = 0;
                        goto StartCapture;
                            //GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME);
                            continue;
                    }
                    //先stop
@@ -995,6 +994,8 @@
                    PositionReset(movingOption.AxisIndex, 1);
                    return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop;
                }
                } while (!(capture == 1 && isRightLimitReached));
                return false;
            }
            catch (Exception ex)