|
|
@@ -565,7 +565,7 @@ namespace OTSModelSharp
|
|
|
|
|
|
if (IsSampleOver(pScanParam))
|
|
|
{
|
|
|
- pStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.SUCCESSED);
|
|
|
+ pStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.COMPLETED);
|
|
|
pStatus.ComputeTime(OTS_MSR_TIME_TYPE.COMPLT);
|
|
|
break;
|
|
|
}
|
|
|
@@ -589,8 +589,6 @@ namespace OTSModelSharp
|
|
|
int fldNo = curFld.GetId();
|
|
|
log.Warn("Current field:" + fldNo.ToString());
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// move SEM to the field center
|
|
|
if (!MoveSEMToPoint(poiFieldCentre))
|
|
|
{// failed to move SEM to the position
|
|
|
@@ -660,6 +658,32 @@ namespace OTSModelSharp
|
|
|
try
|
|
|
{
|
|
|
CollectParticlesXrayData(curFld);
|
|
|
+ //collect another time by double dwell time if it is lowcounts particle
|
|
|
+ var xrayparts = curFld.GetListXrayParticles();
|
|
|
+ var lowcountparts = new List<COTSParticleClr>();
|
|
|
+ foreach (var p in xrayparts)
|
|
|
+ {
|
|
|
+ if (IsLowCounts(p))
|
|
|
+ {
|
|
|
+ lowcountparts.Add(p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var finalAnalysisPartTime = (uint)m_Sample.GetMsrParams().GetXRayParam().GetMidAnalyAQTime() * 2;
|
|
|
+ if (lowcountparts.Count > 0)
|
|
|
+ {
|
|
|
+ Thread.Sleep(200); // wait EDS ready
|
|
|
+ m_EDSController.GetXRayByParts(lowcountparts, finalAnalysisPartTime, true);
|
|
|
+
|
|
|
+ }
|
|
|
+ var enoughcountparts = new List<COTSParticleClr>();
|
|
|
+ foreach (var p in curFld.GetListAnalysisParticles())
|
|
|
+ {
|
|
|
+ if (!IsLowCounts(p))
|
|
|
+ {
|
|
|
+ enoughcountparts.Add(p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ curFld.SetListAnalysisParticles(enoughcountparts);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
@@ -670,7 +694,6 @@ namespace OTSModelSharp
|
|
|
|
|
|
}
|
|
|
|
|
|
- m_Sample.GetMsrStatus().SetStatus(OTS_MSR_SAMPLE_STATUS.SUCCESSED);
|
|
|
|
|
|
|
|
|
curFld.SetIsMeasureComplete(true);
|
|
|
@@ -734,7 +757,7 @@ namespace OTSModelSharp
|
|
|
|
|
|
pStatus.ComputeTime(OTS_MSR_TIME_TYPE.COMPLT);
|
|
|
|
|
|
- pStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.SUCCESSED);
|
|
|
+ //pStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.SUCCESSED);
|
|
|
|
|
|
// let main thread to know that this sample measurement completes
|
|
|
ST_MSTMsg MsgSmplEnd = new ST_MSTMsg(m_Sample);
|