Browse Source

Merge branch 'master' of http://192.168.1.123:10080/SDD1/HOZ

HaoShuang 5 years ago
parent
commit
58f51b340b
2 changed files with 59 additions and 4 deletions
  1. 1 0
      SmartSEMControl/HardwareInterface.cs
  2. 58 4
      SmartSEMControl/SmartSEM.cs

+ 1 - 0
SmartSEMControl/HardwareInterface.cs

@@ -106,6 +106,7 @@ namespace SmartSEMControl
         Boolean SetStageGotoR(float set);
         Boolean SetStageGotoM(float set);
         Boolean MoveStageXY(float x, float y);
+        Boolean CmdStageAbort();        //样品台急停
 
         //Scan Rotate角度接口
         float GetScanRotation();

+ 58 - 4
SmartSEMControl/SmartSEM.cs

@@ -100,6 +100,8 @@ namespace SmartSEMControl
         private String CMD_AUTO_FOCUS_FINE = "CMD_AUTO_FOCUS_FINE";
         //自动消像散
         private String CMD_AUTO_STIG = "CMD_AUTO_STIG";
+        //样品台急停
+        private String CMD_STAGE_ABORT = "CMD_STAGE_ABORT";
         #endregion
 
         #region 宏文件命令
@@ -821,6 +823,30 @@ namespace SmartSEMControl
             return ret;
         }
 
+        /// <summary>
+        /// 设置样品台坐标数组
+        /// </summary>
+        /// <returns>Lenght=6</returns>
+        private Boolean SetStagePosition(float[] set)
+        {
+            if (m_bInitialised)
+            { 
+                long lrt = CZEMApi.MoveStage(set[0], set[1], set[2], set[3], set[4], set[5]);
+                if(lrt==0)
+                {
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+            else
+            {
+                return false;
+            }
+        }
+
         /// <summary>
         /// 样品台位置 X轴
         /// </summary>
@@ -987,10 +1013,38 @@ namespace SmartSEMControl
         #region 移动样品台XY轴
         public Boolean MoveStageXY(float x,float y)
         {
-            Boolean ret = false;
-            ret = SetStageGotoX(x);
-            ret = SetStageGotoY(y);
-            return ret;
+            //先取范围
+            object varMin = new VariantWrapper((float)0.0f);
+            object varMax = new VariantWrapper((float)0.0f);
+            long lrt = CZEMApi.GetLimits(AP_STAGE_GOTO_X, ref varMin, ref varMax);
+            if (lrt != 0)
+            {
+                return false;
+            }
+            if (x > Convert.ToSingle(varMax) || x < Convert.ToSingle(varMin))
+            {
+                return false;
+            }
+            lrt = CZEMApi.GetLimits(AP_STAGE_GOTO_Y, ref varMin, ref varMax);
+            if (lrt != 0)
+            {
+                return false;
+            }
+            if (y > Convert.ToSingle(varMax) || y < Convert.ToSingle(varMin))
+            {
+                return false;
+            }
+            float[] gsp = GetStagePosition();
+            gsp[0] = x;
+            gsp[1] = y;
+            return SetStagePosition(gsp);
+        }
+        #endregion
+
+        #region 样品台急停
+        public Boolean CmdStageAbort()
+        {
+            return ExecuteCmd(CMD_STAGE_ABORT);
         }
         #endregion