Bläddra i källkod

更改UI界面正在对焦请等待问题,只拍照流程测试通过。

@wang_qi0307 5 år sedan
förälder
incheckning
61492f5ccc

+ 1 - 1
HOZProject/MeasureMsgDispose/MeasureMsgManage.cs

@@ -118,7 +118,7 @@ namespace HOZProject
         private static void ShowStateMessage(FormHOZMain formHOZ, ThreadStatusEventArgs args)
         {
             //显示状态信息
-            if (args.Step_Code == "1-2")
+            if (args.Message == "自动对焦")
             {
                 formHOZ.lblStateMessage.Text = "正在对焦中...请等待";
             }

+ 7 - 7
HOZProject/MeasureXML/MeasureStructXml.xml

@@ -4,7 +4,7 @@
     <Step Index="0"  Code="1-0" IsData="False" Type="Photo" IsShow="True" Title="拉直放大倍数" Details="测量样品初始拉直时的放大倍数"></Step>
     <Step Index="1"  Code="1-1" IsData="False" Type="FIB" IsShow="True" Title="角度补偿54度" Details="测量样品初始设置SEM进行角度补偿54度"></Step>
     
-    <Step Index="2"  Code="1-2" IsData="False" Type="Photo" IsShow="True" Title="移动样品台" Details="移动样品台到观测点"></Step>
+    <Step Index="2"  Code="1-2" IsData="False" Type="Photo" IsShow="False" Title="移动样品台" Details="移动样品台到观测点"></Step>
     <Step Index="3"  Code="1-3" IsData="True" Type="Photo" IsShow="True" Title="拉直-自动对焦" Details="拉直操作自动对焦"></Step>
     <Step Index="4"  Code="1-4" IsData="True" Type="Photo" IsShow="True" Title="拉直-拍照" Details="拉直操作拍照"></Step>
     <Step Index="5"  Code="1-5" IsData="False" Type="Photo" IsShow="False" Title="拉直-获取角度" Details="图像接口获取旋转角度"></Step>
@@ -28,19 +28,19 @@
     <Step Index="21" Code="1-21" IsData="False" Type="FIB" IsShow="True" Title="验证分析是否成功" Details="验证FIB分析是否成功"></Step>
     
     <Step Index="22" Code="1-22" IsData="False" Type="FIB" IsShow="True" Title="切换到SEM模式" Details="切换到SEM模式"></Step>
-    <Step Index="23" Code="1-23" IsData="False" Type="Photo" IsShow="True" Title="拍照放大倍数/3" Details="拍照放大倍数/3查找分析点位置"></Step>
-    <Step Index="24" Code="1-24" IsData="True" Type="Photo" IsShow="True" Title="SEM拍照" Details="SEM拍照查找分析点位置"></Step>
+    <Step Index="23" Code="1-23" IsData="False" Type="FIB" IsShow="True" Title="拍照放大倍数/3" Details="拍照放大倍数/3查找分析点位置"></Step>
+    <Step Index="24" Code="1-24" IsData="True" Type="FIB" IsShow="True" Title="SEM拍照" Details="SEM拍照查找分析点位置"></Step>
     <Step Index="25" Code="1-25" IsData="False" Type="FIB" IsShow="True" Title="中心点获取并移动" Details="图像接口返回梯形中心点坐标并移动样品台"></Step>
     
-    <Step Index="26" Code="1-26" IsData="False" Type="FIB" IsShow="True" Title="定位放大倍数" Details="定位的放大倍数"></Step>
-    <Step Index="27" Code="1-27" IsData="True" Type="FIB" IsShow="True" Title="定位-自动对焦" Details="定位的高倍数对焦"></Step>
+    <Step Index="26" Code="1-26" IsData="False" Type="Photo" IsShow="True" Title="定位放大倍数" Details="定位的放大倍数"></Step>
+    <Step Index="27" Code="1-27" IsData="True" Type="Photo" IsShow="True" Title="定位-自动对焦" Details="定位的高倍数对焦"></Step>
     <Step Index="28" Code="1-28" IsData="False" Type="FIB" IsShow="True" Title="设置观测时的角度补偿" Details="设置观测时的角度补偿"></Step>
-    <Step Index="29" Code="1-29" IsData="True" Type="FIB" IsShow="True" Title="分析-SEM拍照" Details="拍照获取梯形偏移角度"></Step>
+    <Step Index="29" Code="1-29" IsData="True" Type="Photo" IsShow="True" Title="分析-SEM拍照" Details="拍照获取梯形偏移角度"></Step>
     <Step Index="30" Code="1-30" IsData="False" Type="FIB" IsShow="True" Title="获取观测形状的角度并补偿" Details="图像接口返回观测形状的角度并补偿"></Step>
     <Step Index="31" Code="1-31" IsData="True" Type="FIB" IsShow="True" Title="分析-SEM拍照" Details="获取定位观测层高位置"></Step>
     <Step Index="32" Code="1-32" IsData="False" Type="FIB" IsShow="false" Title="获取定位观测点并移动" Details="获取定位观测点位置并移动样品台"></Step>
     <Step Index="33" Code="1-33" IsData="True" Type="FIB" IsShow="false" Title="分析层高拍照" Details="分析层高拍照"></Step>
-    <Step Index="34" Code="1-34" IsData="False" Type="FIB" IsShow="True" Title="光束复位" Details="光束复位"></Step>
+    <Step Index="34" Code="1-34" IsData="False" Type="Photo" IsShow="True" Title="光束复位" Details="光束复位"></Step>
     
     <Step Index="35" Code="1-35" IsData="False" Type="FIB" IsShow="True" Title="自动层高分析" Details="自动进行层高分析"></Step>
   </MeasureFlow>

+ 144 - 135
MeasureThread/Measure.cs

@@ -643,6 +643,48 @@ namespace MeasureThread
                     //SendCutHoleMsg(((int)ThreadState.InProcess).ToString(), m_cutHoles[i].HoleName);
                     SendCutHoleMsg(((int)m_cutHoles[i].STATE).ToString(), m_cutHoles[i].HoleName);
 
+                    //1、移动样品台到第一个观测点,先移动R轴,再移动XY轴
+                    if (!iSEM.SetStageGotoR(m_cutHoles[0].Position.R))
+                    {
+                        LogManager.AddHardwareLog("样品台R轴移动失败。", true);
+                        return;
+                    }
+                    while (true)
+                    {
+                        Thread.Sleep(5000);
+                        if (iSEM.GetStageIs() == 0)
+                        {
+                            break;
+                        }
+                    }
+                    //判断是否停止进程
+                    if (key_stop)
+                    {
+                        return;
+                    }
+
+                    //移动XY轴
+                    if (!iSEM.MoveStageXY(m_cutHoles[0].Position.X, m_cutHoles[0].Position.Y))
+                    {
+                        LogManager.AddHardwareLog("样品台XY轴移动失败。", true);
+ 
+                        return;
+                    }
+                    while (true)
+                    {
+                        Thread.Sleep(5000);
+
+                        if (iSEM.GetStageIs() == 0)
+                        {
+                            break;
+                        }
+                    }
+                    //判断是否停止进程
+                    if (key_stop)
+                    {
+                        return;
+                    }
+
                     //成功
                     if (FirstHole())
                     {
@@ -968,7 +1010,7 @@ namespace MeasureThread
             }
 
             //3.控制SEM拍照,找到切割位置
-            String fileName1 = data_path + "\\" + m_cutHoles[m_nWorkHoleNo].HoleName + "_" + m_MsParam.Location_Magnification.ToString("0") + ImageName1;
+            String fileName1 = data_path + "\\" + m_cutHoles[m_nWorkHoleNo].HoleName + "_" + m_MsParam.Location_Magnification.ToString("0") + "_" + ImageName1;
             arg.Picture_Information.Picture_FullPath = fileName1;
             arg.Picture_Information.Work_Voltage = m_MsParam.Location_Voltage;
             arg.Picture_Information.Magnification = m_MsParam.Location_Magnification;
@@ -1665,17 +1707,19 @@ namespace MeasureThread
                 return false;
             }
 
-            //6、获取偏移坐标,7、移动到位
-            //if (DialogResult.Yes == MessageBox.Show("是否手动移动样品台到指定位置?\n如果点击取消则会调用Web接口。", "确认消息", MessageBoxButtons.YesNo))
-            //{
-            //    arg.Message = "样品台移动到指定位置";
-            //    arg.State = true;
-            //    SendMsg("1-26");
-            //    x1 = iSEM.GetStageAtX();
-            //    y1 = iSEM.GetStageAtY();
-            //}
-            //else
-            //{
+            if (m_MsParam.Is_Photograph == false)
+            {
+                //6、获取偏移坐标,7、移动到位
+                //if (DialogResult.Yes == MessageBox.Show("是否手动移动样品台到指定位置?\n如果点击取消则会调用Web接口。", "确认消息", MessageBoxButtons.YesNo))
+                //{
+                //    arg.Message = "样品台移动到指定位置";
+                //    arg.State = true;
+                //    SendMsg("1-26");
+                //    x1 = iSEM.GetStageAtX();
+                //    y1 = iSEM.GetStageAtY();
+                //}
+                //else
+                //{
                 //8,计算切割面区域偏移角度及方向
                 float degree = 0;
                 int direction = 0;
@@ -1700,77 +1744,83 @@ namespace MeasureThread
                 {
                     //if (DialogResult.Yes != MessageBox.Show("网络参数State返回为0。\n是否继续操作?。", "确认消息", MessageBoxButtons.YesNo))
                     //{
-                        arg.Message = "图像接口参数State返回值为零";
-                        arg.State = false;
-                        SendMsg("1-30");
-                        return false;
+                    arg.Message = "图像接口参数State返回值为零";
+                    arg.State = false;
+                    SendMsg("1-30");
+                    return false;
                     //}
                 }
                 //x1 = iSEM.GetStageAtX();
                 //y1 = iSEM.GetStageAtY();
-            //}
-            //判断是否停止进程
-            if (key_stop)
-            {
-                return false;
-            }
+                //}
+                //判断是否停止进程
+                if (key_stop)
+                {
+                    return false;
+                }
 
-            ////11、自动对焦。与之前操作相同
-            //if (ImageFocus("1-28"))
-            //{
-            //    arg.Message = "自动对焦完成";
-            //    arg.State = true;
-            //    SendMsg("1-28");
-            //}
-            //else
-            //{
-            //    arg.Message = "自动对焦失败";
-            //    arg.State = false;
-            //    SendMsg("1-28");
-            //}
-            ////判断是否停止进程
-            //if (key_stop)
-            //{
-            //    return false;
-            //}
+                ////11、自动对焦。与之前操作相同
+                //if (ImageFocus("1-28"))
+                //{
+                //    arg.Message = "自动对焦完成";
+                //    arg.State = true;
+                //    SendMsg("1-28");
+                //}
+                //else
+                //{
+                //    arg.Message = "自动对焦失败";
+                //    arg.State = false;
+                //    SendMsg("1-28");
+                //}
+                ////判断是否停止进程
+                //if (key_stop)
+                //{
+                //    return false;
+                //}
 
-            //12拍照
-            String fileName6 = data_path + "\\" + m_cutHoles[m_nWorkHoleNo].HoleName + "_" + m_MsParam.Photograph_Magnification.ToString("0") + "_" + ImageName6;
-            arg.Picture_Information.Picture_FullPath = fileName6;
-            arg.Picture_Information.Work_Status = "SEM";
-            arg.Picture_Information.Work_Voltage = iSEM.GetSEMVoltage();
-            Thread.Sleep(1000);
-            arg.Picture_Information.Magnification = iSEM.GetMagnification();
-            Thread.Sleep(1000);
-            arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
-            Thread.Sleep(1000);
-            //拍照前改变速度,延时
-            iSEM.CmdSaveRate();
-            cycle_time = iSEM.GetCycleTime();
-            Thread.Sleep(Convert.ToInt32(cycle_time) + 1000);
-            if (!GetImage(ImageMode.SEM, fileName6))
-            {
-                arg.Message = "SEM拍照失败";
-                arg.State = false;
+                //12拍照
+                String fileName6 = data_path + "\\" + m_cutHoles[m_nWorkHoleNo].HoleName + "_" + m_MsParam.Photograph_Magnification.ToString("0") + "_" + ImageName6;
+                arg.Picture_Information.Picture_FullPath = fileName6;
+                arg.Picture_Information.Work_Status = "SEM";
+                arg.Picture_Information.Work_Voltage = iSEM.GetSEMVoltage();
+                Thread.Sleep(1000);
+                arg.Picture_Information.Magnification = iSEM.GetMagnification();
+                Thread.Sleep(1000);
+                arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
+                Thread.Sleep(1000);
+                //拍照前改变速度,延时
+                iSEM.CmdSaveRate();
+                cycle_time = iSEM.GetCycleTime();
+                Thread.Sleep(Convert.ToInt32(cycle_time) + 1000);
+                if (!GetImage(ImageMode.SEM, fileName6))
+                {
+                    arg.Message = "SEM拍照失败";
+                    arg.State = false;
+                    SendMsg("1-31");
+                    return false;
+                }
+                arg.State = true;
+                image18 = fileName6;
+                arg.Message = "SEM拍照成功";
                 SendMsg("1-31");
-                return false;
-            }
-            arg.State = true;
-            image18 = fileName6;
-            arg.Message = "SEM拍照成功";
-            SendMsg("1-31");
-            iSEM.CmdFocusRate();
-            cycle_time = iSEM.GetCycleTime();
-            Thread.Sleep(Convert.ToInt32(cycle_time) + 1000);
-            //判断是否停止进程
-            if (key_stop)
-            {
-                return false;
-            }
+                iSEM.CmdFocusRate();
+                cycle_time = iSEM.GetCycleTime();
+                Thread.Sleep(Convert.ToInt32(cycle_time) + 1000);
+                //判断是否停止进程
+                if (key_stop)
+                {
+                    return false;
+                }
+
+                //华为程序还没有做出来
 
-            //华为程序还没有做出来
+
+            }
 
             //14光束复位和Rotation关闭开关
+            arg.Message = "光束复位成功";
+            arg.State = true;
+            SendMsg("1-34");
             iSEM.SetTiltAngleOff();
             Thread.Sleep(1000);
             iSEM.SetScanRotationOff();
@@ -1779,9 +1829,6 @@ namespace MeasureThread
             Thread.Sleep(1000);
             iSEM.SetBeamShiftY(0);
             Thread.Sleep(3000);
-            arg.Message = "光束复位成功";
-            arg.State = true;
-            SendMsg("1-34");
             //判断是否停止进程
             if (key_stop)
             {
@@ -1828,56 +1875,6 @@ namespace MeasureThread
                 }
             }
 
-            //1、移动样品台到第一个观测点,先移动R轴,再移动XY轴
-            if (!iSEM.SetStageGotoR(firstHole.Position.R))
-            {
-                LogManager.AddHardwareLog("样品台R轴移动失败。", true);
-                arg.Message = "样品台R轴移动失败!";
-                arg.State = false;
-                SendMsg("1-2");
-                return false;
-            }
-            while (true)
-            {
-                Thread.Sleep(5000);
-                if (iSEM.GetStageIs() == 0)
-                {
-                    break;
-                }
-            }
-            //判断是否停止进程
-            if (key_stop)
-            {
-                return false;
-            }
-
-            //移动XY轴
-            if(!iSEM.MoveStageXY(firstHole.Position.X, firstHole.Position.Y))
-            {
-                LogManager.AddHardwareLog("样品台XY轴移动失败。", true);
-                arg.Message = "样品台XY轴移动失败!";
-                arg.State = false;
-                SendMsg("1-2");
-                return false;
-            }
-            while (true)
-            {
-                Thread.Sleep(5000);
-
-                if (iSEM.GetStageIs() == 0)
-                {
-                    break;
-                }
-            }
-            arg.Message = "样品台移动成功!";
-            arg.State = true;
-            SendMsg("1-2");
-            //判断是否停止进程
-            if (key_stop)
-            {
-                return false;
-            }
-
             //2、拉直操作
             if (!Straighten_Handle())
             {
@@ -2150,17 +2147,29 @@ namespace MeasureThread
             if (!iSEM.SetMagnification(m_measureFile.MParam.Stretch_Magnification))
             {
                 LogManager.AddHardwareLog("拉直放大倍数设置失败,程序退出。", true);
-
+                arg.Message = "拉直放大倍数设置失败!";
+                arg.State = false;
+                SendMsg("1-0");
                 return false;
             }
+            arg.Message = "拉直放大倍数设置成功!";
+            arg.State = true;
+            SendMsg("1-0");
+            Thread.Sleep(1000);
 
             //自动化流程-每个点都需要补偿54度
             if (m_MsParam.Is_Photograph == false)
             {
                 if (!TiltCorrection(54.0f))
                 {
+                    arg.Message = "角度补偿54度失败!";
+                    arg.State = false;
+                    SendMsg("1-1");
                     return false;
                 }
+                arg.Message = "角度补偿54度成功!";
+                arg.State = true;
+                SendMsg("1-1");
                 Thread.Sleep(2000);
                 //判断是否停止进程
                 if (key_stop)
@@ -2635,10 +2644,10 @@ namespace MeasureThread
                 {
                     return false;
                 }
-                if (step_code != "0-9")
-                {
-                    SendMsg(step_code);
-                }
+                arg.State = true;
+                arg.Message = "自动对焦";
+                SendMsg(step_code);
+
                 //判断是否停止进程
                 if (key_stop)
                 {
@@ -2686,10 +2695,10 @@ namespace MeasureThread
                 {
                     return false;
                 }
-                if (step_code != "0-9")
-                {
-                    SendMsg(step_code);
-                }
+                arg.State = true;
+                arg.Message = "自动对焦";
+                SendMsg(step_code);
+
                 //判断是否停止进程
                 if (key_stop)
                 {