瀏覽代碼

optimize the bcregulate and ExpressionClassifyEngine module

GSP 1 月之前
父節點
當前提交
43b091851e

+ 1 - 1
OTSCPP/OTSClassifyEngine/ExpressionClassifyEngine.cpp

@@ -534,7 +534,7 @@ CElementChemistriesList ExpressionClassifyEngine::ZeroElementProcess(COTSParticl
 			continue;
 		}
 	}
-	//particle->GetXrayInfo()->SetElementQuantifyData(partEles);//set the particle's xray element quantify data to the new partEles.
+	particle->GetXrayInfo()->SetElementQuantifyData(partEles);//set the particle's xray element quantify data to the new partEles.
 	return partEles;
 
 }

+ 27 - 16
OTSIncAMeasureApp/1-OTSMeasure/Measure/3-MeasureFlow/CBrightnessContrastAdjust.cs

@@ -25,7 +25,7 @@ namespace OTSMeasureApp._1_OTSMeasure.Measure._3_MeasureFlow
     
         protected CMeasure m_pMsrThread;
 
-         double curbrightness = 0, curcontrast = 0;
+       private bool brightnessContrastAdjustRuning = false;
 
         protected ISemController m_SemHardwareMgr;
         protected IScanController m_ScanHardwareMgr;
@@ -180,6 +180,10 @@ namespace OTSMeasureApp._1_OTSMeasure.Measure._3_MeasureFlow
 
             return true;
         }
+        public void StopBrightnessContrastAdjust()
+        {
+            brightnessContrastAdjustRuning = false;
+        }   
         public void DoBrightnessContrastAdjust()
         {
             using (AutoResetSEMControl autoReset = new AutoResetSEMControl(this))
@@ -253,6 +257,7 @@ namespace OTSMeasureApp._1_OTSMeasure.Measure._3_MeasureFlow
                 var desirebright = m_BrightnessContrastRegulateParam.brightphaseGrayvalue;
                 
                 SortedDictionary<double, SEMStateObject> BCstatedic =new SortedDictionary<double, SEMStateObject>();
+               brightnessContrastAdjustRuning = true;
                 bool finishcondition = Math.Abs(dark - desiredark) < 1 && Math.Abs(bright - desirebright) < 1;
                 while (!finishcondition)
                 {
@@ -278,18 +283,32 @@ namespace OTSMeasureApp._1_OTSMeasure.Measure._3_MeasureFlow
                         BCstatedic.Add(varerror, BcsemState);                       
                     }
                     //time out check
-                    if ((DateTime.Now-starttime).TotalSeconds>60)
+                    if ((DateTime.Now-starttime).TotalSeconds>100)
                     {
                         log.Warn("Auto BC time out, stop the auto BC!");
+                        if (BCstatedic.Count > 0)
+                        {
+                            var minerror = BCstatedic.Keys.Min();
+                            var minstate = BCstatedic[minerror];
+                            m_SemHardwareMgr.SetSemBrightness(minstate.brightness);
+                            m_SemHardwareMgr.SetSemContrast(minstate.contrast);
+                            log.Warn("Auto BC set brightness and contrast to:" + minstate.brightness + " " + minstate.contrast);
+                        }
+                        break;
+                    }
+                    // external stop check
+                    if (brightnessContrastAdjustRuning==false)
+                    {
+                        log.Warn("stop the auto BC!");
 
-                       break;
+                        break;
                     }
-                   
-                    
-                   
+
+
+
 
                     // check bse image
-                     pBSEIamge = m_ScanHardwareMgr.AcquireBSEImage();
+                    pBSEIamge = m_ScanHardwareMgr.AcquireBSEImage();
 
                     if (pBSEIamge == null)
                     {
@@ -299,15 +318,7 @@ namespace OTSMeasureApp._1_OTSMeasure.Measure._3_MeasureFlow
                     ProcessBSEImageToGetTheTwoGrayValue(pBSEIamge, ref bright, ref dark);
                     log.Info("two gray:" + bright.ToString() + " " + dark.ToString());
                     finishcondition = Math.Abs(dark - desiredark) < 1 && Math.Abs(bright - desirebright) < 1;
-                }
-                if (BCstatedic.Count > 0)
-                {
-                    var minerror = BCstatedic.Keys.Min();
-                    var minstate = BCstatedic[minerror];
-                    m_SemHardwareMgr.SetSemBrightness(minstate.brightness);
-                    m_SemHardwareMgr.SetSemContrast(minstate.contrast);
-                    log.Warn("Auto BC set brightness and contrast to:" + minstate.brightness + " " + minstate.contrast);
-                }
+                }                
 
                 m_SemHardwareMgr.GetSemContrast(ref m_BrightnessContrastRegulateParam.initialContrast);
                 m_SemHardwareMgr.GetSemBrightness(ref m_BrightnessContrastRegulateParam.initialBrightness);

+ 7 - 0
OTSIncAMeasureApp/1-OTSMeasure/Measure/3-MeasureFlow/CMeasure.cs

@@ -143,6 +143,13 @@ namespace OTSModelSharp
         public bool  IsMeasureRunning() { return m_ThreadStatus.GetStatus() == OTS_MSR_THREAD_STATUS.INPROCESS; }
         public bool  IsMeasureFailed() { return m_ThreadStatus.GetStatus() == OTS_MSR_THREAD_STATUS.FAILED; }
         public bool  IsMeasureCompleted() { return m_ThreadStatus.GetStatus() == OTS_MSR_THREAD_STATUS.COMPLETED; }
+       public void StopBrightnessContrastRegulation()
+        {
+            if (BCregulater != null)
+            {
+                BCregulater.StopBrightnessContrastAdjust();
+            }
+        }
         public   void DoMeasure()
         {
             // start measurement, creat thread measure status class, let the main thread know that measurement started

+ 4 - 2
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/frmBCRegulate.cs

@@ -27,6 +27,7 @@ namespace OTSMeasureApp._5_OTSMeasureStatuImageFun
         public CMeasure m_measureobj;
         private ISemController semController = SemController.GetSEMController(); 
         public CSEMStageData stageData = null;
+        CBrightnessContrastAdjust BCregulater=null;
         public frmBCRegulate()
         {
             InitializeComponent();
@@ -97,7 +98,7 @@ namespace OTSMeasureApp._5_OTSMeasureStatuImageFun
             param.initialContrast = double.Parse(txtinitcontrast.Text);
             param.toRun = EnableAutoBC.Checked;
             m_measureobj.m_pMeasureParam.GetDefaultParam().BrightnessContrastRegulationParam = param;
-           var BCregulater = new CBrightnessContrastAdjust(m_measureobj);
+            BCregulater = new CBrightnessContrastAdjust(m_measureobj);
          
             Thread thread = new Thread(new ThreadStart(BCregulater.DoBrightnessContrastAdjust));
             thread.Start();
@@ -157,7 +158,8 @@ namespace OTSMeasureApp._5_OTSMeasureStatuImageFun
 
         private void button8_Click(object sender, EventArgs e)
         {
-            m_measureobj.GetMsrThreadStatusobj().SetStatus(otsdataconst.OTS_MSR_THREAD_STATUS.STOPPED);    
+            if (BCregulater != null)
+                BCregulater.StopBrightnessContrastAdjust();
         }
     }
 }