From 773369500892dcb5347e4a0059f8089960073030 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期三, 15 七月 2020 22:08:34 +0800
Subject: [PATCH] 板卡回原点配置迁移到初始配置轴配置中 板卡回原点配置区分运动方向和捕捉方向,限制捕捉原点方向

---
 src/Bro.Device.GTSCard/GTSCardDriver.cs |   41 +++++++++++++++++++++++++++++++++--------
 1 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index 2385a82..d87e661 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -888,7 +888,11 @@
         {
             try
             {
-                StartCapture:
+                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);
@@ -907,24 +911,24 @@
                 // 璁剧疆鐐逛綅妯″紡杩愬姩鍙傛暟
                 sRtn = GTSCardAPI.GT_SetTrapPrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, ref trapPrm);
                 // 璁剧疆鐐逛綅妯″紡鐩爣閫熷害锛屽嵆鍥炲師鐐归�熷害
-                sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, movingOption.GoHomePara.HighVelocity);
+                sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, goHomePara.HighVelocity);
 
                 // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈
-                sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, movingOption.GoHomePara.HomeDir == 1 ? 99999999 : -99999999);
+                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 = 1000;
+                int repeatTime = goHomePara.GoHomeTimeOut * 1000;
                 short capture;
                 int pos;
                 uint clk;//鏃堕挓鍙傛暟
                 do
                 {
-                    Thread.Sleep(20);
+                    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--;
+                    repeatTime -= IConfig.MonitorInterval;
                 } while (!(isStop || capture == 1 || repeatTime <= 0));
 
                 if (repeatTime <= 0)
@@ -941,7 +945,22 @@
 
                     if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0))
                     {
-                        movingOption.GoHomePara.HomeDir = (short)(movingOption.GoHomePara.HomeDir == 1 ? -1 : 1);
+                        //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;
                         goto StartCapture;
                     }
 
@@ -950,12 +969,18 @@
 
                 if (capture == 1)
                 {
+                    if (!isRightLimitReached)
+                    {
+                        capture = 0;
+                        goto StartCapture;
+                    }
+
                     //鍏坰top
                     MoveStop((short)movingOption.AxisIndex, 0);
                     ClearStatus((short)movingOption.AxisIndex, 1);
                     //宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2
                     // 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�"
-                    sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + movingOption.GoHomePara.HomeOffset);
+                    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;

--
Gitblit v1.8.0