|
@@ -546,7 +546,7 @@ namespace MeasureThread
|
|
|
|
|
|
|
|
|
//检查硬件连接是否正常
|
|
|
- log.Info("测量线程:开始连接硬件...", true);
|
|
|
+ log.Warn("测量线程:开始连接硬件...", true);
|
|
|
if (!ConnectHardware())
|
|
|
{
|
|
|
MessageBox.Show("连接电镜失败!","重要错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
|
@@ -606,7 +606,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
Thread.Sleep(5000);
|
|
|
|
|
|
- log.Info("测量线程:测试第"+i.ToString()+"个分析点。", true);
|
|
|
+ log.Warn("测量线程:测试第"+i.ToString()+"个分析点。", true);
|
|
|
//记录测量序号和孔名
|
|
|
m_nWorkHoleNo = i;
|
|
|
arg.HoleName = m_cutHoles[i].HoleName;
|
|
@@ -663,13 +663,13 @@ namespace MeasureThread
|
|
|
//开始循环工作
|
|
|
if (i == 0)
|
|
|
{
|
|
|
- log.Info("测量线程:分析点" + m_cutHoles[i].HoleName+"开始测量。", true);
|
|
|
+ log.Warn("测量线程:分析点" + m_cutHoles[i].HoleName+"开始测量。", true);
|
|
|
m_cutHoles[i].START = DateTime.Now;
|
|
|
//切孔操作-开始
|
|
|
m_cutHoles[i].STATE = State.InProcess;
|
|
|
SendCutHoleMsg(((int)m_cutHoles[i].STATE).ToString(), m_cutHoles[i].HoleName);
|
|
|
|
|
|
- log.Info("测量线程:控制样品台至样品分析点位置(R,X,Y,Z) = (" + m_cutHoles[0].Position.R.ToString() + ","
|
|
|
+ log.Warn("测量线程:控制样品台至样品分析点位置(R,X,Y,Z) = (" + m_cutHoles[0].Position.R.ToString() + ","
|
|
|
+ m_cutHoles[0].Position.X.ToString()+","
|
|
|
+ m_cutHoles[0].Position.Y.ToString()+","
|
|
|
+ m_cutHoles[0].Position.Z.ToString() + ")", true);
|
|
@@ -1195,6 +1195,8 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Picture_FullPath = fileName2;
|
|
|
arg.Message = "FIB拍照成功";
|
|
|
SendMsg("1-11");
|
|
|
+ Thread.Sleep(200);
|
|
|
+ SendMsg("1-16");
|
|
|
iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
@@ -1208,7 +1210,7 @@ namespace MeasureThread
|
|
|
|
|
|
iSEM.CmdFIBModeSEM();
|
|
|
Thread.Sleep(200);
|
|
|
-
|
|
|
+
|
|
|
//10.将照片传给客户,返回梯形位置坐标,及样品类型参数(是否需要PT沉积,PT坐标位置,PT宽度、PT高度、梯形上、下边及深度、扫描时间、束流、样品放大倍数1、样品放大倍数2等切割参数)
|
|
|
log.Info("测量线程:调用图像处理接口,准备移动样品台", true);
|
|
|
log.Info("文件名=" + fileName2, true);
|
|
@@ -1910,7 +1912,7 @@ namespace MeasureThread
|
|
|
//2.控制SEM自动对焦、亮度、对比度-接口
|
|
|
//add by sun 2020-12-16 解决第5/6类样品 2000倍对焦不好问题
|
|
|
if ((m_measureFile.MParam.SampleName == "2")||(m_measureFile.MParam.SampleName == "3"))
|
|
|
- iSEM.SetReduced(402, 128, 500, 500);
|
|
|
+ iSEM.SetReduced(402, 128, 600, 600);
|
|
|
else //add by sun 2020-12-16 解决第5/6类样品 2000倍对焦不好问题 end
|
|
|
iSEM.SetReduced(402, 128, 340, 256);
|
|
|
Thread.Sleep(200);
|
|
@@ -2629,10 +2631,10 @@ namespace MeasureThread
|
|
|
if (m_measureFile.MParam.IsonlyEDSForDebug == true)
|
|
|
{
|
|
|
//add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA
|
|
|
- log.Info("测量线程:第一孔=====设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ log.Warn("测量线程:第一孔=====设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
if (!SetVoltageAndIPROBE())
|
|
|
{
|
|
|
- log.Info("测量线程:第一孔=====设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ log.Error("测量线程:第一孔=====设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", false);
|
|
|
return false;
|
|
|
}
|
|
|
//add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
|
|
@@ -2687,7 +2689,7 @@ namespace MeasureThread
|
|
|
// 2是5/6类样品,不需要拉直
|
|
|
if (m_measureFile.MParam.SampleName != "2")
|
|
|
{
|
|
|
- log.Info("测量线程:第一个孔的测试过程-拉直操作开始!", true);
|
|
|
+ log.Warn("测量线程:第一个孔的测试过程-拉直操作开始!", true);
|
|
|
if (!Straighten_Handle())
|
|
|
{
|
|
|
log.Info("测量线程报错:第一个孔的测试过程-拉直操作失败。", true);
|
|
@@ -2719,7 +2721,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
|
|
|
//13. 自动 定位功能
|
|
|
- log.Info("测量线程:第一个孔的测试过程-自动定位开始!", true);
|
|
|
+ log.Warn("测量线程:第一个孔的测试过程-自动定位开始!", true);
|
|
|
if (!GetPoistion())
|
|
|
{
|
|
|
log.Error("测量线程报错:自动定位失败,程序退出。", false);
|
|
@@ -2738,7 +2740,7 @@ namespace MeasureThread
|
|
|
{
|
|
|
if (m_measureFile.MParam.IsCutingForDebug)
|
|
|
{
|
|
|
- log.Info("测量线程:第一个孔的测试过程-14.自动控制FIB切割开始!==" + m_measureFile.MParam.IsCutingForDebug, true);
|
|
|
+ log.Warn("测量线程:第一个孔的测试过程-14.自动控制FIB切割开始!==" + m_measureFile.MParam.IsCutingForDebug, true);
|
|
|
if (!FIBCross())
|
|
|
{
|
|
|
log.Error("测量线程报错:自动控制FIB切割失败。", false);
|
|
@@ -2769,7 +2771,7 @@ namespace MeasureThread
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
- log.Info("测量线程:第一个孔的测试过程-17.自动控制SEM拍截面照开始", true);
|
|
|
+ log.Warn("测量线程:第一个孔的测试过程-17.自动控制SEM拍截面照开始", true);
|
|
|
//将过程17最后的拍照图片提出给18步进行调用
|
|
|
List<String> limg_path = new List<string>();
|
|
|
List<float> lsize = new List<float>();
|
|
@@ -2793,7 +2795,7 @@ namespace MeasureThread
|
|
|
//18.自动层高分析
|
|
|
if (m_measureFile.MParam.Is_Photograph == false)
|
|
|
{
|
|
|
- log.Info("测量线程:第一个孔的测试过程-18.自动层高分析开始", true);
|
|
|
+ log.Warn("测量线程:第一个孔的测试过程-18.自动层高分析开始", true);
|
|
|
float size = iSEM.GetPixelSize();
|
|
|
int state = 1;
|
|
|
wr.Img_Measure_Height(limg_path, lsize, data_path + "\\", Convert.ToInt32(m_measureFile.MParam.SampleName), m_measureFile.MParam.Firm, out state);
|
|
@@ -2814,7 +2816,7 @@ namespace MeasureThread
|
|
|
//19.能谱分析
|
|
|
if (m_measureFile.MParam.EDS)
|
|
|
{
|
|
|
- log.Info("测量线程:第一个孔的测试过程-19.能谱分析开始===" + m_measureFile.MParam.EDS, true);
|
|
|
+ log.Warn("测量线程:第一个孔的测试过程-19.能谱分析开始===" + m_measureFile.MParam.EDS, true);
|
|
|
EDSAnalysis();
|
|
|
log.Info("测量线程:第一个孔的测试过程-19.能谱分析结束===" + m_measureFile.MParam.EDS, true);
|
|
|
}
|
|
@@ -2828,7 +2830,7 @@ namespace MeasureThread
|
|
|
public bool OtherHole()
|
|
|
{
|
|
|
//add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA
|
|
|
- log.Info("测量线程:非第一孔==设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ log.Warn("测量线程:非第一孔==设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
if (!SetVoltageAndIPROBE())
|
|
|
{
|
|
|
log.Error("测量线程:非第一孔==设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", false);
|
|
@@ -2836,6 +2838,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
//add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
|
|
|
//设置拉直的放大倍数
|
|
|
+ log.Info("设置拉直放大倍数!");
|
|
|
if (!iSEM.SetMagnification(m_measureFile.MParam.Stretch_Magnification))
|
|
|
{
|
|
|
log.Error("拉直放大倍数设置失败,程序退出。", false);
|
|
@@ -2859,6 +2862,7 @@ namespace MeasureThread
|
|
|
//自动化流程-每个点都需要补偿54度
|
|
|
if (m_measureFile.MParam.Is_Photograph == false)
|
|
|
{
|
|
|
+ log.Info("角度补偿54度!");
|
|
|
if (!TiltCorrection(54.0f))
|
|
|
{
|
|
|
arg.Message = "角度补偿54度失败!";
|
|
@@ -2879,6 +2883,7 @@ namespace MeasureThread
|
|
|
|
|
|
if (m_measureFile.MParam.SampleName != "2")
|
|
|
{
|
|
|
+ log.Warn("开始进行拉直操作!");
|
|
|
if (!Straighten_Handle())
|
|
|
{
|
|
|
log.Info("测量线程报错:拉直操作失败。", true);
|
|
@@ -2908,6 +2913,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
|
|
|
//13. 自动 定位功能
|
|
|
+ log.Info("开始进行自动定位!");
|
|
|
if (!GetPoistion())
|
|
|
{
|
|
|
return false;
|
|
@@ -2917,10 +2923,11 @@ namespace MeasureThread
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//14.自动控制FIB切割
|
|
|
if (m_measureFile.MParam.Is_Photograph == false)
|
|
|
{
|
|
|
+ log.Warn("开始进行FIB切割!");
|
|
|
if (!FIBCross())
|
|
|
{
|
|
|
return false;
|
|
@@ -2935,6 +2942,7 @@ namespace MeasureThread
|
|
|
// 16.找到切割位置
|
|
|
if (m_measureFile.MParam.Is_Photograph == false)
|
|
|
{
|
|
|
+ log.Warn("开始找切割位置!");
|
|
|
if (!FindCross())
|
|
|
{
|
|
|
return false;
|
|
@@ -2950,6 +2958,7 @@ namespace MeasureThread
|
|
|
List<String> limg_path = new List<string>();
|
|
|
List<float> lsize = new List<float>();
|
|
|
//17.自动控制SEM拍截面照
|
|
|
+ log.Warn("开始控制SEM拍截面照!");
|
|
|
if (!ShotSection(ref limg_path, ref lsize))
|
|
|
{
|
|
|
//return false;
|
|
@@ -2968,6 +2977,7 @@ namespace MeasureThread
|
|
|
//18.自动层高分析
|
|
|
if (m_measureFile.MParam.Is_Photograph == false)
|
|
|
{
|
|
|
+ log.Warn("开始进行层高分析!");
|
|
|
float size = iSEM.GetPixelSize();
|
|
|
int state = 1;
|
|
|
wr.Img_Measure_Height(limg_path, lsize, data_path + "\\", Convert.ToInt32(m_measureFile.MParam.SampleName), m_measureFile.MParam.Firm, out state);
|
|
@@ -2986,6 +2996,7 @@ namespace MeasureThread
|
|
|
//19.能谱分析
|
|
|
if (m_measureFile.MParam.EDS)
|
|
|
{
|
|
|
+ log.Warn("开始进行能谱分析!");
|
|
|
EDSAnalysis();
|
|
|
}
|
|
|
|
|
@@ -4064,7 +4075,7 @@ namespace MeasureThread
|
|
|
string path = a_param.Path;
|
|
|
if (!Directory.Exists(path))
|
|
|
{
|
|
|
- log.Info("文件夹丢失", true);
|
|
|
+ log.Error("文件夹丢失", false);
|
|
|
return false;
|
|
|
}
|
|
|
string path_coarse = a_param.Path + "\\Coarse";
|
|
@@ -4590,7 +4601,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- log.Info("FIB自动聚焦参数设置有误", true);
|
|
|
+ log.Error("FIB自动聚焦参数设置有误", false);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -4598,14 +4609,14 @@ namespace MeasureThread
|
|
|
|
|
|
if (a_param == null)
|
|
|
{
|
|
|
- log.Info("空参数", true);
|
|
|
+ log.Error("空参数", false);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
string path = a_param.Path;
|
|
|
if (!Directory.Exists(path))
|
|
|
{
|
|
|
- log.Info("文件夹丢失", true);
|
|
|
+ log.Error("文件夹丢失", false);
|
|
|
return false;
|
|
|
}
|
|
|
string path_coarse = a_param.Path + "\\Coarse";
|
|
@@ -4642,7 +4653,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- log.Info("FIB对焦参数设置有误,对焦类型错", true);
|
|
|
+ log.Error("FIB对焦参数设置有误,对焦类型错", false);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -4702,7 +4713,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- log.Info("自动消像散参数设置有误", true);
|
|
|
+ log.Error("自动消像散参数设置有误", false);
|
|
|
return false;
|
|
|
}
|
|
|
//arg.Picture_Information.Work_Distance = (float)(cWd * 0.00000001);
|
|
@@ -6877,7 +6888,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
- log.Info("在测量图上显示放大倍数和像素大小信息失败", true);
|
|
|
+ log.Error("在测量图上显示放大倍数和像素大小信息失败", false);
|
|
|
}
|
|
|
}
|
|
|
//add by zjx 2020-12-21 在测量图上显示放大倍数和像素大小等信息 end
|