浏览代码

add PT,tilt

HaoShuang 5 年之前
父节点
当前提交
11b5fcbf00
共有 3 个文件被更改,包括 103 次插入4 次删除
  1. 95 0
      MeasureThread/Measure.cs
  2. 2 2
      SmartSEMControl/HardwareInterface.cs
  3. 6 2
      SmartSEMControl/SmartSEM.cs

+ 95 - 0
MeasureThread/Measure.cs

@@ -14,6 +14,12 @@ using MeasureData;
 
 namespace MeasureThread
 {
+    public enum FMode
+    {
+        Manual,
+        Auto
+    }
+
     public class Measure
     {
         //全局只有一个fatorySEM
@@ -52,6 +58,14 @@ namespace MeasureThread
             set { this.m_ThreadStatus = value; }
         }
 
+        //对焦模式
+        private FMode m_bFocusMode;
+        public FMode FocusMode
+        {
+            get { return this.m_bFocusMode; }
+            set { this.m_bFocusMode = FocusMode; }
+        }
+
         //// SEM data general
         //CSEMDataGnrPtr m_pSEMDataGnr;
 
@@ -63,6 +77,12 @@ namespace MeasureThread
         //构造函数
         public Measure()
         {
+            Init();
+        }
+
+        public void Init()
+        {
+            FocusMode = FMode.Manual;
         }
 
         //初始化测量业务, 读测量文件,判断是否有可测试的切孔
@@ -150,13 +170,42 @@ namespace MeasureThread
         //第一个孔的测试过程
         public void FirstHole()
         {
+            MeasureData.CutHole firstHole = m_cutHoles[0];
             //12.根据样品类型参数确定是否需要PT沉积,控制PT针插入
+            if (firstHole.PT == PTType.Have)
+            {
+                if (!iSEM.InsertPT())
+                {
+                    return;
+                }
+            }
 
             //13.自动定位切割
             {
                 //1.控制SEM放大600X
+                if (!iSEM.SetMagnification(600))
+                {
+                    return;
+                }
+
                 //2.控制SEM自动对焦、亮度、对比度
+                if (FocusMode == FMode.Manual)
+                {
+                    //弹出手动对焦的窗口
+                }
+                else if (FocusMode == FMode.Auto)
+                {
+                    //调用自动对焦模块
+                }
+                else
+                {
+                    return;
+                }
+
                 //3.设置SEM进行角度补偿54度
+                
+
+                
                 //4.控制SEM拍照
                 //5.保存照片
                 {
@@ -241,5 +290,51 @@ namespace MeasureThread
         {
         }
 
+        //角度补偿
+        public bool TiltCorrection(float a_fAngle)
+        {
+            bool bTilt = false;
+            float fOldTilt = iSEM.GetTiltCorrection();
+            if (fOldTilt == float.NaN)
+            {
+                return false;
+            }
+            else if (fOldTilt == 1)
+            {
+                bTilt = true;
+            }
+            else if (fOldTilt == 0)
+            {
+                bTilt = false;
+            }
+
+            if (!iSEM.SetTiltCorrectionOn())
+            {
+                return false;
+            }
+
+            if (!iSEM.SetTiltAngle(a_fAngle))
+            {
+                return false;
+            }
+
+            //恢复原始角度
+            if (bTilt)
+            {
+                if (!iSEM.SetTiltCorrectionOn())
+                {
+                    return;
+                }
+            }
+            else
+            {
+                if (!iSEM.SetTiltCorrectionOff())
+                {
+                    return;
+                }
+            }
+            return false;
+        }
+
     }
 }

+ 2 - 2
SmartSEMControl/HardwareInterface.cs

@@ -146,9 +146,9 @@ namespace SmartSEMControl
 
         //Pt的控制
         //PT针插入
-        void InsertPT();
+        Boolean InsertPT();
         //PT针退出
-        void OutputPT();
+        Boolean OutputPT();
 
     }
 

+ 6 - 2
SmartSEMControl/SmartSEM.cs

@@ -1208,12 +1208,16 @@ namespace SmartSEMControl
         }
         #endregion
 
-        public void InsertPT()
+        public Boolean InsertPT()
         {
+            //插入动作
+            //已经插入完成
+            return false;
         }
         //PT针退出
-        public void OutputPT()
+        public Boolean OutputPT()
         {
+            return false;
         }
     }
 }