|
@@ -584,7 +584,7 @@ namespace MeasureThread
|
|
|
|
|
|
//设置扫描周期
|
|
|
LogManager.AddHardwareLog("测量线程:设置图像扫描周期为对焦周期", true);
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
if (cycle_time == 0)
|
|
@@ -1141,13 +1141,30 @@ namespace MeasureThread
|
|
|
{
|
|
|
if(m_measureFile.MParam.FIBAutoBC)
|
|
|
{
|
|
|
- iSEM.SetAutoVideoBrightnessAndContrast();
|
|
|
- //20201128陈工建议增加
|
|
|
- Thread.Sleep(200);
|
|
|
- iSEM.SetAutoBright(100);
|
|
|
- Thread.Sleep(200);
|
|
|
- iSEM.SetAutoContrast(100);
|
|
|
- Thread.Sleep(5000);
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
+ float m_TempBrightness = 50.0f;
|
|
|
+ float m_TempContrast = 30.0f;
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ m_TempBrightness = 50.0f;
|
|
|
+ m_TempContrast = 30.0f;
|
|
|
+ iSEM.SetAutoVideoOff();
|
|
|
+ Thread.Sleep(200);
|
|
|
+ iSEM.SetBrightness(m_TempBrightness); //50.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+ iSEM.SetContrast(m_TempContrast); //30.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+ }
|
|
|
+ else //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题 end
|
|
|
+ {
|
|
|
+ iSEM.SetAutoVideoBrightnessAndContrast();
|
|
|
+ //20201128陈工建议增加
|
|
|
+ Thread.Sleep(200);
|
|
|
+ iSEM.SetAutoBright(100);
|
|
|
+ Thread.Sleep(200);
|
|
|
+ iSEM.SetAutoContrast(100);
|
|
|
+ Thread.Sleep(5000);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1165,8 +1182,9 @@ namespace MeasureThread
|
|
|
//拍照前改变速度,延时
|
|
|
iSEM.CloseReduced();
|
|
|
Thread.Sleep(200);
|
|
|
-
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -1182,7 +1200,7 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Picture_FullPath = fileName2;
|
|
|
arg.Message = "FIB拍照成功";
|
|
|
SendMsg("1-11");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -1637,17 +1655,30 @@ namespace MeasureThread
|
|
|
Thread.Sleep(200);
|
|
|
|
|
|
//iSEM.SetAutoVideoBrightnessAndContrast();
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
+ float m_TempBrightness = 50.0f;
|
|
|
+ float m_TempContrast = 30.0f;
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ m_TempBrightness = 48.0f;
|
|
|
+ m_TempContrast = 29.0f;
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
iSEM.SetAutoVideoOff();
|
|
|
Thread.Sleep(200);
|
|
|
- iSEM.SetBrightness(50.0f);
|
|
|
+ iSEM.SetBrightness(m_TempBrightness); //50.0f
|
|
|
Thread.Sleep(200);
|
|
|
- iSEM.SetContrast(30.0f);
|
|
|
+ iSEM.SetContrast(m_TempContrast); //30.0f
|
|
|
+ Thread.Sleep(2000);
|
|
|
|
|
|
- Thread.Sleep(5000);
|
|
|
float mag = m_measureFile.MParam.Location_Magnification / 3;
|
|
|
if (mag < 200)
|
|
|
{
|
|
|
- mag = 200;
|
|
|
+ //add by sun 2020-12-17 设置找梯形照片的放大倍数为400,原来设置成200容易识别错乱
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ mag = 400;
|
|
|
+ else //add by sun 2020-12-17 设置找梯形照片的放大倍数为400,原来设置成200容易识别错乱
|
|
|
+ mag = 200;
|
|
|
}
|
|
|
if (!iSEM.SetMagnification(mag))
|
|
|
{
|
|
@@ -1690,7 +1721,9 @@ namespace MeasureThread
|
|
|
Thread.Sleep(200);
|
|
|
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -1707,7 +1740,7 @@ namespace MeasureThread
|
|
|
arg.State = true;
|
|
|
arg.Message = "SEM拍照成功";
|
|
|
SendMsg("1-25");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -1752,7 +1785,9 @@ namespace MeasureThread
|
|
|
//高倍到低倍不进行对焦
|
|
|
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -1767,8 +1802,8 @@ namespace MeasureThread
|
|
|
//return false;
|
|
|
LogManager.AddHardwareLog("测量线程报错:找到已切割的位置拍照失败", true);
|
|
|
}
|
|
|
-
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -1825,6 +1860,7 @@ namespace MeasureThread
|
|
|
LogManager.AddHardwareLog("测量线程报错:" + arg.Message, false);
|
|
|
return false;
|
|
|
}
|
|
|
+ //add
|
|
|
#endregion
|
|
|
Thread.Sleep(200);
|
|
|
#region 设置拍照的放大倍数
|
|
@@ -1858,9 +1894,9 @@ namespace MeasureThread
|
|
|
LogManager.AddHardwareLog("停止键按下", true);
|
|
|
return false;
|
|
|
}
|
|
|
-#endregion
|
|
|
+ #endregion
|
|
|
|
|
|
-#region 拍摄矩形的切割孔,使用拍照的放大倍数
|
|
|
+ #region 拍摄矩形的切割孔,使用拍照的放大倍数
|
|
|
//if(!iSEM.SetAutoVideoBrightnessAndContrast())
|
|
|
//{
|
|
|
// LogManager.AddHardwareLog("测量线程报错:自动开启亮度对比度失败", false);
|
|
@@ -1869,10 +1905,14 @@ namespace MeasureThread
|
|
|
//Thread.Sleep(5000);
|
|
|
|
|
|
//2.控制SEM自动对焦、亮度、对比度-接口
|
|
|
- iSEM.SetReduced(402, 128, 340, 256);
|
|
|
+ //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);
|
|
|
+ else //add by sun 2020-12-16 解决第5/6类样品 2000倍对焦不好问题 end
|
|
|
+ iSEM.SetReduced(402, 128, 340, 256);
|
|
|
Thread.Sleep(200);
|
|
|
//add by sun 2020 - 12 - 15 拍截面图调用蔡司接口时,要保证扫描速度5以上,自动亮度对比度功能关闭
|
|
|
- iSEM.CmdFocusRate(5);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedFocus);//CmdFocusRate(5);
|
|
|
//add by sun 2020 - 12 - 15 拍截面图调用蔡司接口时,要保证扫描速度5以上,自动亮度对比度功能关闭 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
@@ -1913,11 +1953,25 @@ namespace MeasureThread
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
+ float m_TempBrightness = 50.0f;
|
|
|
+ float m_TempContrast = 30.0f;
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ m_TempBrightness = 50f;
|
|
|
+ m_TempContrast = 29f;
|
|
|
+ iSEM.SetBrightness(m_TempBrightness); //50.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+ iSEM.SetContrast(m_TempContrast); //30.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题 end
|
|
|
+
|
|
|
if (!iSEM.SetAutoVideoBrightnessAndContrast())
|
|
|
{
|
|
|
LogManager.AddHardwareLog("测量线程报错:自动开启亮度对比度失败", false);
|
|
|
return false;
|
|
|
- }
|
|
|
+ }
|
|
|
Thread.Sleep(5000);
|
|
|
|
|
|
//3、设置SEM补偿角度
|
|
@@ -1955,7 +2009,9 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
|
|
|
Thread.Sleep(200);
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time)*2);
|
|
@@ -1971,7 +2027,7 @@ namespace MeasureThread
|
|
|
arg.State = true;
|
|
|
arg.Message = "SEM拍照成功";
|
|
|
SendMsg("1-30");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -2051,7 +2107,9 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
|
|
|
Thread.Sleep(200);
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -2067,7 +2125,7 @@ namespace MeasureThread
|
|
|
arg.State = true;
|
|
|
arg.Message = "SEM拍照成功";
|
|
|
SendMsg("1-33");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -2092,11 +2150,11 @@ namespace MeasureThread
|
|
|
",计算两个放大区域坐标,输入图像" + fileName6.ToString() +
|
|
|
"输入样品" + Convert.ToInt32(m_measureFile.MParam.SampleName) +
|
|
|
"输入产品" + m_measureFile.MParam.Firm.ToString()
|
|
|
- + "输出中心点1(x,y)为(" + ct[0].X.ToString() + "," + ct[0].Y.ToString() + ")"
|
|
|
- + "输出放大倍数1" + mag[0]
|
|
|
- + "输出中心点2(x,y)为(" + ct[1].X.ToString() + "," + ct[1].Y.ToString() + ")"
|
|
|
- + "输出放大倍数2" + mag[0]
|
|
|
- + "输出中心点3(x,y)为(" + ct0.X.ToString() + "," + ct0.Y.ToString() + ")", true);
|
|
|
+ + "输出中心点1为(" + ct[0].X.ToString() + "," + ct[0].Y.ToString() + ")"
|
|
|
+ + ",输出放大倍数1==" + mag[0]
|
|
|
+ + "倍,输出中心点2为(" + ct[1].X.ToString() + "," + ct[1].Y.ToString() + ")"
|
|
|
+ + "输出放大倍数2==" + mag[0]
|
|
|
+ + "倍,输出中心点3为(" + ct0.X.ToString() + "," + ct0.Y.ToString() + ")", true);
|
|
|
#endregion
|
|
|
if (state == 1 && ct.Count != 0 && mag.Count != 0)
|
|
|
{
|
|
@@ -2139,18 +2197,38 @@ namespace MeasureThread
|
|
|
//关闭自动亮度对比度
|
|
|
iSEM.SetAutoVideoOff();
|
|
|
Thread.Sleep(2000);
|
|
|
-
|
|
|
- iSEM.SetReduced(402, 128, 340, 256);
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
+
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ m_TempBrightness = 50f;
|
|
|
+ m_TempContrast = 29f;
|
|
|
+ iSEM.SetBrightness(m_TempBrightness); //50.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+ iSEM.SetContrast(m_TempContrast); //30.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题 end
|
|
|
+ //add by sun 2020-12-16 解决第5/6类样品 6000倍对焦不好问题
|
|
|
+ if ( m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ iSEM.SetReduced(402, 128, 500, 500);
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ iSEM.SetReduced(402, 128, 340, 256);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
Thread.Sleep(200);
|
|
|
//add by sun 2020-12-15 拍截面图调用蔡司接口时,要保证扫描速度5以上,自动亮度对比度功能关闭
|
|
|
- iSEM.CmdFocusRate(5);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedFocus);//CmdFocusRate(5);
|
|
|
//add by sun 2020-12-15 拍截面图调用蔡司接口时,要保证扫描速度5以上,自动亮度对比度功能关闭 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(100 + Convert.ToInt32(cycle_time));
|
|
|
|
|
|
|
|
|
- //放大到10000倍
|
|
|
+ //放大到6000倍
|
|
|
iSEM.SetMagnification(magMax / 2);
|
|
|
Thread.Sleep(100 + Convert.ToInt32(cycle_time));
|
|
|
|
|
@@ -2224,7 +2302,7 @@ namespace MeasureThread
|
|
|
//{
|
|
|
// return false;
|
|
|
//}
|
|
|
-
|
|
|
+
|
|
|
iSEM.CloseReduced();
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
@@ -2380,6 +2458,13 @@ namespace MeasureThread
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+ //add by sun 2020-12-17 根据客户要求,3大类样品需要在5000倍下在拍摄一张图片,不需要分析
|
|
|
+ if((m_measureFile.MParam.SampleName=="3")&&(n==0))
|
|
|
+ {
|
|
|
+ if (!GetImageFromSEM(mag[n]/2))
|
|
|
+ LogManager.AddHardwareLog("测量线程报错:第一个区域放大一半倍数" + (mag[n]/2).ToString() + "控制失败", true);
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 根据客户要求,3大类样品需要在5000倍下在拍摄一张图片,不需要分析 end
|
|
|
#region 拍照
|
|
|
if (!iSEM.SetMagnification(mag[n]))
|
|
|
{
|
|
@@ -2436,7 +2521,7 @@ namespace MeasureThread
|
|
|
arg.State = true;
|
|
|
arg.Message = "移动到第一个点位置拍照成功";
|
|
|
SendMsg("1-35");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -2503,6 +2588,15 @@ namespace MeasureThread
|
|
|
//第一个孔的测试过程
|
|
|
public bool FirstHole()
|
|
|
{
|
|
|
+ //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA
|
|
|
+ LogManager.AddHardwareLog("测量线程:第一孔=====设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ if (!SetVoltageAndIPROBE())
|
|
|
+ {
|
|
|
+ LogManager.AddHardwareLog("测量线程:第一孔=====设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
|
|
|
+
|
|
|
//设置拉直的放大倍数
|
|
|
LogManager.AddHardwareLog("测量线程:第一个孔的测试过程-设置SEM放大倍数为拉直放大倍数,放大倍数为" + m_measureFile.MParam.Stretch_Magnification.ToString(), true);
|
|
|
|
|
@@ -2550,7 +2644,7 @@ namespace MeasureThread
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // by sun:2是5/6类样品,不需要拉直
|
|
|
+ // 2是5/6类样品,不需要拉直
|
|
|
if (m_measureFile.MParam.SampleName != "2")
|
|
|
{
|
|
|
LogManager.AddHardwareLog("测量线程:第一个孔的测试过程-拉直操作开始!", true);
|
|
@@ -2609,7 +2703,7 @@ namespace MeasureThread
|
|
|
// return false;
|
|
|
// }
|
|
|
// LogManager.AddHardwareLog("测量线程:第一个孔的测试过程-14.自动控制FIB切割结束!", true);
|
|
|
- //}
|
|
|
+ //}
|
|
|
//del by sun 2020-12-15 temp end
|
|
|
//判断是否停止进程
|
|
|
if (key_stop)
|
|
@@ -2689,6 +2783,14 @@ namespace MeasureThread
|
|
|
//非第一个孔的测试过程
|
|
|
public bool OtherHole()
|
|
|
{
|
|
|
+ //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA
|
|
|
+ LogManager.AddHardwareLog("测量线程:非第一孔==设置拍照电压 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ if (!SetVoltageAndIPROBE())
|
|
|
+ {
|
|
|
+ LogManager.AddHardwareLog("测量线程:非第一孔==设置电压电流失败!目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
|
|
|
//设置拉直的放大倍数
|
|
|
if (!iSEM.SetMagnification(m_measureFile.MParam.Stretch_Magnification))
|
|
|
{
|
|
@@ -3045,17 +3147,26 @@ namespace MeasureThread
|
|
|
iSEM.SetReduced(402, 128, 340, 256);
|
|
|
Thread.Sleep(200);
|
|
|
//add by sun 2020-12-15
|
|
|
- iSEM.CmdFocusRate(5);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedFocus);//CmdFocusRate(5);
|
|
|
//add by sun 2020-12-15 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(100 + Convert.ToInt32(cycle_time));
|
|
|
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
+ float m_TempBrightness = 50.0f;
|
|
|
+ float m_TempContrast = 30.0f;
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ m_TempBrightness = 48.0f;
|
|
|
+ m_TempContrast = 29.0f;
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
iSEM.SetAutoVideoOff();
|
|
|
Thread.Sleep(200);
|
|
|
- iSEM.SetBrightness(50.0f);
|
|
|
+ iSEM.SetBrightness(m_TempBrightness);//50.0f
|
|
|
Thread.Sleep(200);
|
|
|
- iSEM.SetContrast(30.0f);
|
|
|
+ iSEM.SetContrast(m_TempContrast);//30.0f
|
|
|
Thread.Sleep(200);
|
|
|
|
|
|
if (!ImageFocus1(false))
|
|
@@ -3091,7 +3202,9 @@ namespace MeasureThread
|
|
|
String fileName0 = data_path + "\\" + m_cutHoles[m_nWorkHoleNo].HoleName + "_" + m_measureFile.MParam.Stretch_Magnification.ToString("0") + "_" + ImageName0;
|
|
|
LogManager.AddHardwareLog("测量线程:设置保存图像的是扫描速度保存图像" + fileName0, true);
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();//
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -3107,7 +3220,7 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Picture_FullPath = fileName0;
|
|
|
arg.State = true;
|
|
|
SendMsg("1-4");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) +100);
|
|
@@ -3238,6 +3351,7 @@ namespace MeasureThread
|
|
|
//拍图
|
|
|
public bool GetImage(String a_fileName)
|
|
|
{
|
|
|
+ LogManager.AddHardwareLog("获取分辨率开始!", true);
|
|
|
//3. 获取分辨率
|
|
|
int[] ImageSize = iSEM.GetImageStore();
|
|
|
if (ImageSize[0] == 0 || ImageSize[1] == 0)
|
|
@@ -3246,10 +3360,11 @@ namespace MeasureThread
|
|
|
}
|
|
|
short width = (short)ImageSize[0];
|
|
|
short height = (short)ImageSize[1];
|
|
|
-
|
|
|
+ LogManager.AddHardwareLog("获取分辨率结束!"+ a_fileName +"===="+ width+ "*"+height, true);
|
|
|
//4. 抓图
|
|
|
if (!iSEM.GrabImage(a_fileName, 0, 0, width, height, 0))
|
|
|
{
|
|
|
+ LogManager.AddHardwareLog("抓图失败!", true);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -3415,6 +3530,7 @@ namespace MeasureThread
|
|
|
string focusstig = XmlRpcClient.autofocusstig(10, 3, 3, 3, 0.7, snumstr);
|
|
|
if (focusstig != "success")
|
|
|
{
|
|
|
+ LogManager.AddHardwareLog("对焦失败" + focusstig , true);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
@@ -5758,12 +5874,22 @@ namespace MeasureThread
|
|
|
float x2 = 0, y2 = 0;
|
|
|
int state = 0;
|
|
|
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
+ float m_TempBrightness = 50.0f;
|
|
|
+ float m_TempContrast = 30.0f;
|
|
|
+ if (m_measureFile.MParam.SampleName == "3")
|
|
|
+ {
|
|
|
+ m_TempBrightness = 48.0f;
|
|
|
+ m_TempContrast = 29.0f;
|
|
|
+ }
|
|
|
+ //add by sun 2020-12-17 解决3大类样品FIB下亮度过白导致无法识别问题
|
|
|
iSEM.SetAutoVideoOff();
|
|
|
Thread.Sleep(200);
|
|
|
- iSEM.SetBrightness(50.0f);
|
|
|
+ iSEM.SetBrightness(m_TempBrightness);//50.0f
|
|
|
Thread.Sleep(200);
|
|
|
- iSEM.SetContrast(30.0f);
|
|
|
-
|
|
|
+ iSEM.SetContrast(m_TempContrast);//30.0f
|
|
|
+ Thread.Sleep(200);
|
|
|
+
|
|
|
//1.控制SEM放大到300倍
|
|
|
float mag = m_measureFile.MParam.Photograph_Magnification / 3;
|
|
|
if (mag < 200)
|
|
@@ -5808,7 +5934,9 @@ namespace MeasureThread
|
|
|
Thread.Sleep(200);
|
|
|
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -5825,7 +5953,7 @@ namespace MeasureThread
|
|
|
//arg.State = true;
|
|
|
//arg.Message = "SEM拍照成功";
|
|
|
//SendMsg("1-25");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -5869,7 +5997,9 @@ namespace MeasureThread
|
|
|
//高倍到低倍不进行对焦
|
|
|
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -5954,7 +6084,7 @@ namespace MeasureThread
|
|
|
iSEM.SetReduced(402, 128, 340, 256);
|
|
|
Thread.Sleep(200);
|
|
|
//add by sun 2020-12-15
|
|
|
- iSEM.CmdFocusRate(5);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedFocus);//iSEM.CmdFocusRate(5);//
|
|
|
//add by sun 2020-12-15 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
@@ -6035,7 +6165,9 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
|
|
|
Thread.Sleep(200);
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) * 2);
|
|
@@ -6050,7 +6182,7 @@ namespace MeasureThread
|
|
|
//arg.State = true;
|
|
|
//arg.Message = "SEM拍照成功";
|
|
|
//SendMsg("1-30");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -6130,7 +6262,9 @@ namespace MeasureThread
|
|
|
arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
|
|
|
Thread.Sleep(200);
|
|
|
//拍照前改变速度,延时
|
|
|
- iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020-12-15 增加不同样品扫描速度参数,每大类样品3种扫描速度
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedHigh);//iSEM.CmdSaveRate();
|
|
|
+ //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -6146,7 +6280,7 @@ namespace MeasureThread
|
|
|
//arg.State = true;
|
|
|
//arg.Message = "SEM拍照成功";
|
|
|
//SendMsg("1-33");
|
|
|
- iSEM.CmdFocusRate(4);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedNormal);//CmdFocusRate(4);
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
|
Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
@@ -6222,7 +6356,7 @@ namespace MeasureThread
|
|
|
iSEM.SetReduced(402, 128, 340, 256);
|
|
|
Thread.Sleep(200);
|
|
|
//add by sun 2020-12-15
|
|
|
- iSEM.CmdFocusRate(5);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedFocus);//CmdFocusRate(5);
|
|
|
//add by sun 2020-12-15 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
@@ -6474,11 +6608,15 @@ namespace MeasureThread
|
|
|
LogManager.AddHardwareLog("Z轴位置设置超出范围.", true);
|
|
|
}
|
|
|
LogManager.AddHardwareLog("将Z轴位置指定到:" + m_measureFile.MParam.EDSZ.ToString(), true);
|
|
|
- if (!iSEM.SetStageGotoZ(m_measureFile.MParam.EDSZ))
|
|
|
- {
|
|
|
- LogManager.AddHardwareLog("测量线程报错:样品台Z回到安全位置失败", false);
|
|
|
- return false;
|
|
|
- }
|
|
|
+ //if (!iSEM.SetStageGotoZ(m_measureFile.MParam.EDSZ))
|
|
|
+ //{
|
|
|
+ // LogManager.AddHardwareLog("测量线程报错:样品台Z回到安全位置失败", false);
|
|
|
+ // return false;
|
|
|
+ //}
|
|
|
+ //设置WD add by sun 2020-12-16 能谱设置工作距离为10mm
|
|
|
+ iSEM.SetWorkingDistance(m_measureFile.MParam.EDSZ);
|
|
|
+ Thread.Sleep(1000);
|
|
|
+
|
|
|
while (true)
|
|
|
{
|
|
|
Thread.Sleep(4000);
|
|
@@ -6520,7 +6658,7 @@ namespace MeasureThread
|
|
|
iSEM.SetReduced(256, 192, 512, 512);
|
|
|
Thread.Sleep(200);
|
|
|
//add by sun 2020-12-15
|
|
|
- iSEM.CmdFocusRate(5);
|
|
|
+ iSEM.CmdFocusScanSpeed(m_measureFile.MParam.ScanSpeedFocus);//CmdFocusRate(5);
|
|
|
//add by sun 2020-12-15 end
|
|
|
Thread.Sleep(200);
|
|
|
cycle_time = iSEM.GetCycleTime();
|
|
@@ -6564,6 +6702,74 @@ namespace MeasureThread
|
|
|
iSEM.SetBeamShiftY(0);
|
|
|
Thread.Sleep(200);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA
|
|
|
+ #region 设置电压电流
|
|
|
+ public bool SetVoltageAndIPROBE()
|
|
|
+ {
|
|
|
+ LogManager.AddHardwareLog("测量线程:设置电压电流 123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA 目前是第 " + m_measureFile.MParam.SampleName + " 类!", true);
|
|
|
+ //这块应该做成参数!!! 暂时写死。类型3 则为 5000V 500pA
|
|
|
+ bool mRet_VoltageFlag = false;
|
|
|
+ bool mRet_ElecFlag = false;
|
|
|
+ if (m_measureFile.MParam.SampleName != "3")
|
|
|
+ {
|
|
|
+ mRet_VoltageFlag = iSEM.SetSEMVoltage(2000);
|
|
|
+ Thread.Sleep(500);
|
|
|
+ mRet_ElecFlag = iSEM.SetSEMIPROBE(0.2F / 1000000000);
|
|
|
+ Thread.Sleep(500);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mRet_VoltageFlag = iSEM.SetSEMVoltage(5000);
|
|
|
+ Thread.Sleep(500);
|
|
|
+ mRet_ElecFlag = iSEM.SetSEMIPROBE(0.5F / 1000000000);
|
|
|
+ Thread.Sleep(500);
|
|
|
+ }
|
|
|
+ if (!mRet_VoltageFlag) return false;
|
|
|
+ if (!mRet_ElecFlag) return false;
|
|
|
+ LogManager.AddHardwareLog("测量线程:设置电压电流完成!" , true);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ //add by sun 2020-12-17 不同样品电压、电流不一致,应设置灵活。123456类电压2000V电流200pA,7类5000V 500pA,能谱 7000V 500pA end
|
|
|
+
|
|
|
+ //add by sun 2020-12-17 根据客户要求,3大类样品需要在5000倍下在拍摄一张图片,不需要分析
|
|
|
+ #region 拍照
|
|
|
+ public bool GetImageFromSEM(float m_Mag) {
|
|
|
+
|
|
|
+ if (!iSEM.SetMagnification(m_Mag))
|
|
|
+ {
|
|
|
+ LogManager.AddHardwareLog("测量线程报错:第一个区域放大倍数" + m_Mag.ToString() + "失败", false);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ LogManager.AddHardwareLog("========测量线程:移动到第一个点位置拍照完成(一半倍数)!", true);
|
|
|
+ Thread.Sleep(100 + Convert.ToInt32(cycle_time));
|
|
|
+
|
|
|
+ String m_FileName = data_path + "\\" + m_cutHoles[m_nWorkHoleNo].HoleName + "_" + m_Mag.ToString() + "_0_" + ImageNameTwo_1;
|
|
|
+ //arg.Picture_Information.Picture_FullPath = m_FileName;
|
|
|
+ //arg.Picture_Information.Work_Status = "SEM";
|
|
|
+ //arg.Picture_Information.Work_Voltage = iSEM.GetSEMVoltage();
|
|
|
+ //Thread.Sleep(200);
|
|
|
+ //arg.Picture_Information.Magnification = iSEM.GetMagnification();
|
|
|
+ //Thread.Sleep(200);
|
|
|
+ //arg.Picture_Information.Work_Distance = iSEM.GetWorkingDistance();
|
|
|
+ //Thread.Sleep(200);
|
|
|
+ //拍照前改变速度,延时
|
|
|
+ iSEM.CmdLineScan();
|
|
|
+ Thread.Sleep(200);
|
|
|
+ cycle_time = iSEM.GetCycleTime();
|
|
|
+ Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
|
|
|
+ if (!GetImage(m_FileName))
|
|
|
+ {
|
|
|
+ LogManager.AddHardwareLog("测量线程报错:========" + arg.Message, false);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ LogManager.AddHardwareLog("========测量线程:移动到第一个点位置完成!", true);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ //add by sun 2020-12-17 根据客户要求,3大类样品需要在5000倍下在拍摄一张图片,不需要分析 end
|
|
|
#endregion
|
|
|
}
|
|
|
}
|