Browse Source

add analysis processing

HaoShuang 5 năm trước cách đây
mục cha
commit
5e85f36e74
1 tập tin đã thay đổi với 112 bổ sung4 xóa
  1. 112 4
      MeasureThread/Measure.cs

+ 112 - 4
MeasureThread/Measure.cs

@@ -32,8 +32,11 @@ namespace MeasureThread
         static FactoryHardware factorySEM = FactoryHardware.Instance;
         ISEMControl iSEM = factorySEM.ISEM;
 
-        const String ImageName1 = @"ImageSEM600X.tif";
-        const String ImageName2 = @"ImageFIB600X.tif";
+        const String ImageName1 = @"ImageSEM600X.tif"; //传给客户
+        const String ImageName2 = @"ImageFIB600X1.tif";//传给客户
+        const String ImageName3 = @"ImageFIB600X2.tif";
+        const String ImageName4 = @"ImageSEM300X.tif";//传给客户
+        const String ImageName5 = @"ImageSEM6000X.tif";//传给客户
 
         const float fMin = (float)0.0000002; //单位是米
 
@@ -240,8 +243,8 @@ namespace MeasureThread
                 {
                     //1. 设置图片名称
                     //2. 保存图片2
-                    String fileName1 = WorkingFolder + ImageName2;
-                    if (!GetImage(ImageMode.FIB, fileName1))
+                    String fileName2 = WorkingFolder + ImageName2;
+                    if (!GetImage(ImageMode.FIB, fileName2))
                     {
                         return;
                     }
@@ -273,42 +276,147 @@ namespace MeasureThread
                 }
 
                 //14.保存样品1第1号孔中心位置6轴坐标1 XYZMRT到数据库,保存客户返回值信息到数据库
+                float[] firstPosition = iSEM.GetStagePosition();
             }
             //14.自动控制FIB切割
             {
                 //1.根据参数设置FIB草率时间(使图清晰),设置梯形上下边及深度、设置束流
                 //2.控制FIB进行切割
+
                 //3.控制FIB拍照600X
                 //4.保存图片
                 {
                     //1.设置图片名称
                     //2.保存图片3
+                    String fileName3 = WorkingFolder + ImageName3;
+                    if (!GetImage(ImageMode.FIB, fileName3))
+                    {
+                        return;
+                    }
                 }
                 //5.验证切割准确性:与切割前对比,如果对比误差大,则停止自动执行,进行报警
+
                 //6.设置FIB解冻:先读取状态,如果冻结状态则进行解冻
             }
             //15.根据样品类型决定是否撤出PT针
+            if (firstHole.PT == false)
+            {
+                if (!iSEM.OutputPT())
+                {
+                    return;
+                }
+            }
+
             //16.自动调整SEM找到切割位置
             {
                 //1.控制SEM放大到300倍
+                if (!iSEM.SetMagnification(300))
+                {
+                    return;
+                }
                 //2.控制SEM自动对焦、亮度、对比度-接口
+                if (FocusMode == FMode.Manual)
+                {
+                    //弹出手动对焦的窗口
+                }
+                else if (FocusMode == FMode.Auto)
+                {
+                    //调用自动对焦模块
+                }
+                else
+                {
+                    return;
+                }
+
                 //3.控制SEM拍照
+                String fileName4 = WorkingFolder + ImageName4;
+                if (!GetImage(ImageMode.SEM, fileName4))
+                {
+                    return;
+                }
                 //4.将照片传给客户,获取偏移坐标,以及偏移角度
+                float x4 = 0, y4 = 0;
+                float angle = 0;
+
                 //5.根据坐标控制SEM移动到切孔位置,居中
+                if (!iSEM.MoveStageXY(x4, y4))
+                {
+                    return;
+                }
+
+                if (!iSEM.SetScanRotation(angle))
+                {
+                    return;
+                }
+
                 //6.验证移动准确性:获取当前SEM中心位置坐标,与客户返回坐标对比,验证是否移动正确
+                float x5 = iSEM.GetStageAtX();
+                float y5 = iSEM.GetStageAtY();
+                if (Math.Abs(x5 - x4) > fMin && Math.Abs(y5 - y4) > fMin)
+                {
+                    return;
+                }
             }
             //17.自动控制SEM拍截面照
             {
                 //1.控制SEM放大到指定参数大小范围,6000x
+                if (!iSEM.SetMagnification(6000))
+                {
+                    return;
+                }
                 //2.控制SEM自动对焦、消像散、亮度、对比度
+                if (FocusMode == FMode.Manual)
+                {
+                    //弹出手动对焦的窗口
+                }
+                else if (FocusMode == FMode.Auto)
+                {
+                    //调用自动对焦模块
+                }
+                else
+                {
+                    return;
+                }
                 //3.设置SEM角度补偿cos36度
+                if (!TiltCorrection(36))
+                {
+                    return;
+                }
+
                 //4.控制SEM拍照
                 //5.保存照片4
+                String fileName5 = WorkingFolder + ImageName5;
+                if (!GetImage(ImageMode.SEM, fileName5))
+                {
+                    return;
+                }
                 //6.将照片传给客户,获取偏移坐标
+                float x6 = 0, y6 = 0;
+                float angle1 = 0;
+                float mage = 0;
+
                 //7.根据坐标控制SEM移动到分析位置
+                if (!iSEM.MoveStageXY(x6, y6))
+                {
+                    return;
+                }
                 //8.验证移动准确性:获取当前SEM中心位置坐标,与客户返回坐标对比,验证是否移动正确
+
+                float x7 = iSEM.GetStageAtX();
+                float y7 = iSEM.GetStageAtY();
+                if (Math.Abs(x6 - x7) > fMin && Math.Abs(y6 - y7) > fMin)
+                {
+                    return;
+                }
+
                 //9.控制SEM平行校正,并记录校正前初始值
+                if (!iSEM.SetScanRotation(angle1))
+                {
+                    return;
+                }
+                
                 //10.控制SEM放大到指定参数大小范围
+
                 //11.控制SEM自动对焦、消像散、亮度、对比度
                 //12.控制SEM对分析位置拍照
                 //13.保存照片