فهرست منبع

fix bugs when take sample hole image.

gsp 2 سال پیش
والد
کامیت
6f74e03afe

+ 3 - 2
OTSIncAMeasureApp/0-OTSModel/Measure/ParamData/COTSMsrPrjResultData.cs

@@ -1493,8 +1493,9 @@ namespace OTSModelSharp
                 doc.Load(filename);
 
                 XmlNode  root = doc.SelectSingleNode("XMLData");
-                string sem = "Sample";
-               var members = root.SelectNodes(sem);
+               
+               var members = root.SelectNodes("Sample");
+
                 foreach (XmlNode member1 in members)
                 {
                     var paramNode = member1.SelectSingleNode("MsrParams");

+ 1 - 1
OTSIncAMeasureApp/0-OTSModel/OTSDataType/COTSSample.cs

@@ -197,7 +197,7 @@ namespace OTSDataType
             }
             if (bSetFalg)
             {
-                this.GetMsrStatus().SetStatus(OTS_MSR_SAMPLE_STATUS.PAUSED);//change the state so that this sample can be processed again.
+                this.GetMsrStatus().SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);//change the state so that this sample can be processed again.
 
 
             }

+ 15 - 14
OTSIncAMeasureApp/1-OTSMeasure/CMeasureThreadWrapper.cs

@@ -20,13 +20,23 @@ namespace OTSMeasureApp
         public CMeasure m_measure = null;
 
         //线程执行类型 1:测量 2:获取样品孔图片
-        public static MSR_THREAD_RunSTATUS DoRunType = (MSR_THREAD_RunSTATUS)1;
+        private  MSR_RUN_TYPE doRunType = (MSR_RUN_TYPE)1;
         private int holeIdForPreview;
-        //private CDomain domainForHolePreview;
+     
   
         NLog.Logger log ;
         #endregion
         COTSMsrPrjResultData m_ProjData;
+
+        public  MSR_RUN_TYPE GetDoRunType()
+        {
+            return doRunType;
+        }
+
+        public  void SetDoRunType(MSR_RUN_TYPE value)
+        {
+            doRunType = value;
+        }
         #region 构造方法
         public CMeasureThreadWrapper(OTSIncAMeasureAppForm MeasureApp)
         {
@@ -63,16 +73,7 @@ namespace OTSMeasureApp
         
         }
         #endregion
-        #region 设置线程类型
-        /// <summary>
-        /// 设置线程类型
-        /// </summary>
-        /// <param name="doRunType">线程执行类型 1:测量类型 2:获取样品孔图片类型</param>
-        public void SetDoRunType(MSR_THREAD_RunSTATUS doRunType)
-        {
-            DoRunType = doRunType;
-        }
-        #endregion
+ 
         #region 设置获取样品孔中照片所需的参数
         /// <summary>
         /// 设置获取样品孔中照片所需的参数
@@ -155,7 +156,7 @@ namespace OTSMeasureApp
         /// <param name="e"></param>
         private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
         {
-            if (DoRunType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+            if (GetDoRunType() == MSR_RUN_TYPE.RUNMEASURE)
             {
                 InitMeasureThread(m_MeasureApp.m_ProjData);
 
@@ -163,7 +164,7 @@ namespace OTSMeasureApp
                 m_measure.DoMeasure();
               
             }
-            else if (DoRunType == MSR_THREAD_RunSTATUS.RUNSampleHoleImage)
+            else if (GetDoRunType() == MSR_RUN_TYPE.RUNSampleHoleImage)
             {
                 InitMeasureThread(m_MeasureApp.m_ProjData);
 

+ 14 - 20
OTSIncAMeasureApp/1-OTSMeasure/OTSMeasureDisplayResult.cs

@@ -308,7 +308,7 @@ namespace OTSMeasureApp
                     double dMagni = 0;
                     m_MeasureApp.m_ProjParam.GetWorkingSampleSEMData(ref iWDistance, ref dMagni);
                     
-                    if (CMeasureThreadWrapper.DoRunType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                    if (m_MeasureApp.GetRunType() == MSR_RUN_TYPE.RUNMEASURE)
                     {
                         m_OTSMeasureResultWindow.SetSampleName(sampleName);
                     }
@@ -367,7 +367,7 @@ namespace OTSMeasureApp
                 //测量状态:开始状态、完成状态(测量停止、测量失败、测量完成)
                 OTS_MSR_THREAD_STATUS msrStatus = SMsrData.STMThreadStu.iMsrStatu;
                 //获取当前线程执行类型 1:测量 2:获取样品孔图片
-                var runThreadType = CMeasureThreadWrapper.DoRunType;
+                var runThreadType = m_MeasureApp.GetRunType();
 
                 //获取需显示的grid信息
                 OTSSamplePropertyInfo MeasureInfo = new OTSSamplePropertyInfo();
@@ -381,26 +381,20 @@ namespace OTSMeasureApp
                         {
                             //测量状态在进行中-测量开始
                             case OTS_MSR_THREAD_STATUS.INPROCESS:
-                                //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                               
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
 
                                     string startTime = SMsrData.STMThreadStu.csMsrStartTime;
                              
                                      
                                 }
-                                ////判断信息来源  拍摄样品孔图片 或是 测量开始 
-                                if (m_MeasureApp.m_RunType == MSR_THREAD_RunSTATUS.RUNSampleHoleImage)
-                                {
-                                    //根据放大倍数、重新绘制帧图信息
-                                    var sam = m_MeasureApp.m_SamplepaceWindow.GetWorkingVisualSample();
-                                    m_MeasureApp.m_SamplepaceWindow.PrepareMeasureField(sam);
-                                }
+                           
                                 break;
                             //测量状态已完成
                             case OTS_MSR_THREAD_STATUS.COMPLETED:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     string inprocessEndTime = SMsrData.STMThreadStu.csMsrEndTime;
                                     SetMeasureResultInfo(SMsrData);
@@ -420,7 +414,7 @@ namespace OTSMeasureApp
                             //测量状态已失败
                             case OTS_MSR_THREAD_STATUS.FAILED:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     string failedEndTime = SMsrData.STMThreadStu.csMsrEndTime;
                                     SetMeasureResultInfo(SMsrData);
@@ -435,7 +429,7 @@ namespace OTSMeasureApp
                             //测量状态已停止
                             case OTS_MSR_THREAD_STATUS.STOPPED:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     string stopEndTime = SMsrData.STMThreadStu.csMsrEndTime;
                                     //打开测量结果窗口
@@ -462,7 +456,7 @@ namespace OTSMeasureApp
                         {
                             case OTS_MSR_SAMPLE_STATUS.INPROCESS:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     //获取样品名称
                                     string sampleName = SMsrData.STMSampleStu.cSampleName;
@@ -487,7 +481,7 @@ namespace OTSMeasureApp
                                     
                                     
                                 }
-                                else if (runThreadType == MSR_THREAD_RunSTATUS.RUNSampleHoleImage)
+                                else if (runThreadType == MSR_RUN_TYPE.RUNSampleHoleImage)
                                 {
                                     //获取样品名称
                                     string sampleName = SMsrData.STMSampleStu.cSampleName;
@@ -516,7 +510,7 @@ namespace OTSMeasureApp
                         {
                             case MSAMPLE_RET.BSE_DATA:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     //获取显示BSE的图片数据
                                     byte[] ImageData = SMsrData.STMSampleRetData.BSEData.lpBSEData;
@@ -535,7 +529,7 @@ namespace OTSMeasureApp
                                   
 
                                 }
-                                else if (runThreadType == MSR_THREAD_RunSTATUS.RUNSampleHoleImage)
+                                else if (runThreadType == MSR_RUN_TYPE.RUNSampleHoleImage)
                                 {
                                     //获取显示BSE的图片数据
                                     byte[] ImageData = SMsrData.STMSampleRetData.BSEData.lpBSEData;
@@ -551,7 +545,7 @@ namespace OTSMeasureApp
                                 break;
                             case MSAMPLE_RET.FIELD_DATA:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     //设置测量当前用时
                                     if (SMsrData.STMSampleRetData.SFieldData.TUsedTime != null)
@@ -568,7 +562,7 @@ namespace OTSMeasureApp
                                 break;
                             case MSAMPLE_RET.START_MSR_FIELD:
                                 //当前线程执行类型 1:测量
-                                if (runThreadType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                                if (runThreadType == MSR_RUN_TYPE.RUNMEASURE)
                                 {
                                     var sam = m_MeasureApp.m_SamplepaceWindow.GetWorkingVisualSample();
                                     m_MeasureApp.m_SamplepaceWindow.ChangeDoneMeasureState(sam,SMsrData.STMSampleRetData.SMsrField.FieldPos, Color.Yellow);

+ 4 - 7
OTSIncAMeasureApp/2-OTSMeasureParamManage/COTSMeasureParam.cs

@@ -35,10 +35,10 @@ namespace OTSMeasureApp
  
 
     //设置线程状态
-    public enum MSR_THREAD_RunSTATUS
+    public enum MSR_RUN_TYPE
     {
-        RUNMEASURE = 1,         //开始测量
-        RUNSampleHoleImage = 2  //运行获取样品孔照片
+        RUNMEASURE = 1,         //normal
+        RUNSampleHoleImage = 2  //take photo of the measure area.
     };
     enum SAMPLE_FAULT_WARN_CODE
     {
@@ -591,10 +591,7 @@ namespace OTSMeasureApp
         {
 
             COTSSample WSample = GetResultData().GetWorkingSample();
-            if (null == WSample)
-            {
-
-            }
+         
             return WSample;
 
         }

+ 36 - 60
OTSIncAMeasureApp/3-OTSDisplaySourceGridData/OTSPropertyWindow.cs

@@ -71,13 +71,13 @@ namespace OTSMeasureApp
         private void OTSPropertyWindow_Resize(object sender, EventArgs e)
         {
     
-            {
+           
                 if (null != m_SampleGrid )
                 {
                     m_SampleGrid.m_PropWindow_X = this.Width;              
                     m_SampleGrid.InitGridTitlet();
                 }
-            }
+         
             
         }
   
@@ -112,13 +112,9 @@ namespace OTSMeasureApp
             {
                 if (m_measurePara.SetSTDFileName((int)ObjVal))
                 {
-                    //重新获取原来工作样品值重新设置
-                    if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                    {
-                        //系统工作文件出错,设置样品属性失败
-                        return;
-                    }
-                    //Prop重新获显示工作样品的原来值
+                 
+                    m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                   
                     DisplaySampleMeasureInfo(SMInfo);
                     return;
                 }
@@ -133,12 +129,10 @@ namespace OTSMeasureApp
                     ObjVal = str;
                     if (!m_measurePara.CheckSampleNameIsValid((string)ObjVal))
                     {
-                        //重新获取原来工作样品值重新设置
-                        if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                        {
-                            return;
-                        }
-                        //Prop重新获显示工作样品的原来值
+                     
+                        m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                       
+                      
                         DisplaySampleMeasureInfo(SMInfo);
                         return;
                     }
@@ -147,13 +141,10 @@ namespace OTSMeasureApp
                 //更新COMBBOX值
                 if (!m_measurePara.SetSampleParamVal(SampleId, ValType, ObjVal))    // Prop值变化,修改样品值成功
                 {
-                    string sLog = "SampleId = " + SampleId.ToString() + "," + "ValType = " + ValType.ToString() + "," + "ObjVal = " + ObjVal.ToString();
-                    //重新获取原来工作样品值重新设置
-                    if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                    {
-                        return;
-                    }
-                    //Prop重新获显示工作样品的原来值
+                  
+                    m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                   
+                  
                     DisplaySampleMeasureInfo(SMInfo);
                     return;
                 }
@@ -161,49 +152,37 @@ namespace OTSMeasureApp
                 {
                     if (!m_measurePara.SetSampleParamVal(OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD, OTS_ITEM_TYPES.INT, StopModeDialog.FieldMode))    // Prop值变化,修改样品值成功
                     {
-                        string sLog = "SampleId = " + SampleId.ToString() + "," + "ValType = " + ValType.ToString() + "," + "ObjVal = " + ObjVal.ToString();
-                        //重新获取原来工作样品值重新设置
-                        if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                        {
-                            return;
-                        }
-                        //Prop重新获显示工作样品的原来值
+                       
+                        m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                       
+                 
                         DisplaySampleMeasureInfo(SMInfo);
                         return;
                     }
                     if (!m_measurePara.SetSampleParamVal(OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME, OTS_ITEM_TYPES.INT, StopModeDialog.TimeMode))    // Prop值变化,修改样品值成功
                     {
-                        string sLog = "SampleId = " + SampleId.ToString() + "," + "ValType = " + ValType.ToString() + "," + "ObjVal = " + ObjVal.ToString();
-                        //重新获取原来工作样品值重新设置
-                        if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                        {
-                            return;
-                        }
-                        //Prop重新获显示工作样品的原来值
+                      
+                        m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                       
+                    
                         DisplaySampleMeasureInfo(SMInfo);
                         return;
                     }
                     if (!m_measurePara.SetSampleParamVal(OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE, OTS_ITEM_TYPES.INT, StopModeDialog.ParticleMode))    // Prop值变化,修改样品值成功
                     {
-                        string sLog = "SampleId = " + SampleId.ToString() + "," + "ValType = " + ValType.ToString() + "," + "ObjVal = " + ObjVal.ToString();
-                        //重新获取原来工作样品值重新设置
-                        if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                        {
-                            return;
-                        }
-                        //Prop重新获显示工作样品的原来值
+                      
+                        m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                       
+                    
                         DisplaySampleMeasureInfo(SMInfo);
                         return;
                     }
                     if (!m_measurePara.SetSampleParamVal(OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_AREA, OTS_ITEM_TYPES.INT, StopModeDialog.AreaMode))    // Prop值变化,修改样品值成功
                     {
-                        string sLog = "SampleId = " + SampleId.ToString() + "," + "ValType = " + ValType.ToString() + "," + "ObjVal = " + ObjVal.ToString();
-                        //重新获取原来工作样品值重新设置
-                        if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-                        {
-                            return;
-                        }
-                        //Prop重新获显示工作样品的原来值
+                     
+                        m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+                            
+                      
                         DisplaySampleMeasureInfo(SMInfo);
                         return;
                     }
@@ -223,11 +202,8 @@ namespace OTSMeasureApp
 
         HERE:
 
-            if (!m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo))
-            {
-                //系统工作文件出错,设置样品属性失败
-                return;
-            }
+            m_measurePara.GetWorkSamplePerameter(m_measurePara.GetWorkSample(), ref SMInfo);
+           
          
                 // 修改TREEVIEW 工作样品的CHECKBOX值
                 if (OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH == SampleId)
@@ -237,13 +213,13 @@ namespace OTSMeasureApp
                     // 设置 开始 ,停止 和检查参数 按钮状态
                    m_MeasureAppForm. m_RibbonFun.SetMeasureRibbonButnStatu();
                 }
-                //设置SampleWindow新的工作样品
+             
                 sWSampleName = m_measurePara.GetWorkSampleName();
-                if (!("" == sWSampleName))
+                if ("" != sWSampleName)
                 {
                    m_MeasureAppForm. m_SamplepaceWindow.ChangeWorkSampleName(sWSampleName);
                 }
-                //GRID重新获取工作样品属性值
+                
                 DisplaySampleMeasureInfo(SMInfo);
                 //当修改了 样品图尺寸、放大倍数和样品图的Pix大小等,SAMPLEWINDOW需要重新绘制样品台
                 if (OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_GRP_MAX == SampleId 
@@ -256,10 +232,10 @@ namespace OTSMeasureApp
 
                     if (!measureTreadIsPaused && !PropertyMeasureThreadRunFlag)
                     {
-
+                        
                         var sam = m_MeasureAppForm.m_SamplepaceWindow.GetWorkingVisualSample();
 
-                        m_MeasureAppForm.m_SamplepaceWindow.PrepareMeasureField(sam);
+                        m_MeasureAppForm.m_SamplepaceWindow.PrepareMeasureField(sam, MSR_RUN_TYPE.RUNMEASURE);
 
                     }
                     

+ 29 - 31
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs

@@ -253,11 +253,10 @@ namespace OTSMeasureApp
 
                     break;
                 case "ReadSEMData":
-                    m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                    //设定SEM数据
-                    CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                    m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNMEASURE);
+                  
                     ReadSEMDataFromSEM();
-                    PrepareMeasureField(GetWorkingVisualSample());
+                    PrepareMeasureField(GetWorkingVisualSample(), MSR_RUN_TYPE.RUNMEASURE);
                   
                     break;
                 case "SetSemData":
@@ -275,12 +274,12 @@ namespace OTSMeasureApp
                     break;
                 case "ShootBSEPicture":
                     //设置消息类型 拍摄样品孔
-                    m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNSampleHoleImage;
-                    CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNSampleHoleImage;
+                    m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNSampleHoleImage);
+                   
                     //清除原图片信息
                     DeleteHoleBSEImageDataNoMessageBox();
                   
-                    PrepareMeasureField(GetWorkingVisualSample());
+                    PrepareMeasureField(GetWorkingVisualSample(), MSR_RUN_TYPE.RUNSampleHoleImage);
                   
                     GetBSEPictures();
                     break;
@@ -609,7 +608,7 @@ namespace OTSMeasureApp
                             m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(sampleMeasurePara);
                            
                  
-                           PrepareMeasureField(sam);
+                           PrepareMeasureField(sam, m_MeasureAppForm.GetRunType());
                             
                
                 this.Invalidate();
@@ -1086,9 +1085,9 @@ namespace OTSMeasureApp
                             m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
 
                             //-------------------- draw measrue field and save these data to sample
-                            m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                            CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                            PrepareMeasureField(sam);
+                            m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNMEASURE);
+                            //CMeasureThreadWrapper.SetDoRunType(MSR_THREAD_RunSTATUS.RUNMEASURE);
+                            PrepareMeasureField(sam, MSR_RUN_TYPE.RUNMEASURE);
                             //--------------------
 
                             Invalidate();
@@ -1163,8 +1162,8 @@ namespace OTSMeasureApp
                         var para = m_visualStage.GetSampleMeasurePara(sam1.GetMeasureGDIObject());
                         m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);
 
-                        m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                        CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                        m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNMEASURE);
+                        //CMeasureThreadWrapper.SetDoRunType(MSR_THREAD_RunSTATUS.RUNMEASURE);
                     
                         m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
                         Invalidate();
@@ -1946,9 +1945,9 @@ namespace OTSMeasureApp
                             m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);
 
 
-                            m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                            CMeasureThreadWrapper.DoRunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                            PrepareMeasureField(sam);
+                            m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNMEASURE);
+                         
+                            PrepareMeasureField(sam, MSR_RUN_TYPE.RUNMEASURE);
 
 
                             m_DrawMeasureGDIObject = null;
@@ -1979,7 +1978,7 @@ namespace OTSMeasureApp
 
                             this.Cursor = System.Windows.Forms.Cursors.Default;
 
-                            PrepareMeasureField(sam);
+                            PrepareMeasureField(sam, m_MeasureAppForm.GetRunType());
                         
                        
                     }
@@ -2198,7 +2197,7 @@ namespace OTSMeasureApp
                 if (ShowDeleteDialog(sampleSelectName))
                 {
                     //设置当前状态
-                    m_MeasureAppForm.m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+                    m_MeasureAppForm.SetRunType(MSR_RUN_TYPE.RUNMEASURE);
                     m_MeasureAppForm.DeleteSample(sampleSelectName);
                    
                 }
@@ -2464,7 +2463,7 @@ namespace OTSMeasureApp
 
                                
                                     sam.SetMeasureGDIObject(polygongdi);
-                                    PrepareMeasureField(sam);
+                                    PrepareMeasureField(sam,m_MeasureAppForm.GetRunType());
                                    
                                 }
                                 else
@@ -2480,7 +2479,7 @@ namespace OTSMeasureApp
                                     {
                                 
                                         sam.SetMeasureGDIObject(measureGdi);
-                                        PrepareMeasureField(sam);
+                                        PrepareMeasureField(sam, m_MeasureAppForm.GetRunType());
                                      }
                                 }
                             COTSMsrPrjResultData cProjMgr = m_MeasureAppForm.m_ProjParam.GetResultData();
@@ -2540,7 +2539,7 @@ namespace OTSMeasureApp
            
         }
         #region 获取Filed帧图
-        public List<CRectangleGDIObject> GetOTSFieldVisualRects(CVisualSampleArea sam)
+        public List<CRectangleGDIObject> GetOTSFieldVisualRects(CVisualSampleArea sam, MSR_RUN_TYPE runType)
         {
             List<Point> listCenterPoint ;
             Size rectSize ;
@@ -2549,7 +2548,7 @@ namespace OTSMeasureApp
             var sample = m_ResultData.GetSampleByName(sam.GetSampleName());
             List<CRectangleGDIObject> visualfieldRects = new List<CRectangleGDIObject>();
 
-            if (GetFieldData(sample,out listCenterPoint, out rectSize))
+            if (GetFieldData(sample,runType,out listCenterPoint, out rectSize))
             { 
       
                 for (int i=0;i< listCenterPoint.Count;i++)
@@ -2581,7 +2580,7 @@ namespace OTSMeasureApp
 
 
         }
-        public bool GetFieldData(COTSSample sample, out List<Point> pFields, out Size iSzie)
+        public bool GetFieldData(COTSSample sample, MSR_RUN_TYPE runType ,out List<Point> pFields, out Size iSzie)
         {
              pFields = new List<Point>();
             iSzie = new Size();
@@ -2602,7 +2601,7 @@ namespace OTSMeasureApp
             listPoint.Clear();
             //设置测量区域
             CSEMDataMsr pSEMDataMsr; ;
-            if (m_MeasureAppForm.m_RunType == MSR_THREAD_RunSTATUS.RUNSampleHoleImage)
+            if (runType == MSR_RUN_TYPE.RUNSampleHoleImage)
             {
                 pSEMDataMsr = new CSEMDataMsr();
                 pSEMDataMsr.SetScanFieldSize100(m_visualStage.GetOTSSampleStageData().iScanFieldSize100);
@@ -2635,19 +2634,17 @@ namespace OTSMeasureApp
                 return true;
         }
         #endregion
-        public void PrepareMeasureField(CVisualSampleArea sam)
+        public void PrepareMeasureField(CVisualSampleArea sam, MSR_RUN_TYPE runType)
         {
           
             try
             {
 
-              
-
                 List<CRectangleGDIObject> visualfieldRects = null;
 
-                visualfieldRects = GetOTSFieldVisualRects(sam);//get all the possible field rects through C++ code.
+                visualfieldRects = GetOTSFieldVisualRects(sam,runType);//get all the possible field rects through C++ code.
 
-                if (m_MeasureAppForm.m_RunType == MSR_THREAD_RunSTATUS.RUNSampleHoleImage)
+                if (runType == MSR_RUN_TYPE.RUNSampleHoleImage)
                 {
                     foreach (var r in visualfieldRects)
                     {
@@ -2657,7 +2654,7 @@ namespace OTSMeasureApp
                     }
                    
                 }
-                else if (m_MeasureAppForm.m_RunType == MSR_THREAD_RunSTATUS.RUNMEASURE)
+                else if (runType == MSR_RUN_TYPE.RUNMEASURE)
                 {
                  
                     sam.GetMeasureGDIObject().SubItems().Clear();
@@ -2684,6 +2681,7 @@ namespace OTSMeasureApp
             {
                 log.Error( ex.ToString());
             }
+            Invalidate();
         }
         public void SaveFieldPositionInfoToSample(CVisualSampleArea sam)
         {
@@ -3097,7 +3095,7 @@ namespace OTSMeasureApp
                     if (sampleHoleInfo != null)
                     {
    
-                            m_MeasureAppForm.StartSampleHoleBSEImage(MSR_THREAD_RunSTATUS.RUNSampleHoleImage, index);
+                            m_MeasureAppForm.StartSampleHoleBSEImage(index);
                      }
             
         }

+ 1 - 1
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/OTSMeasureStatusWindow.cs

@@ -1510,7 +1510,7 @@ namespace OTSMeasureApp
             MenuItemLineScam.Checked = false;
             //电镜设置对象
             //控制类对象初始化
-            //COTSControlFunExport cfun = COTSControlFunExport.GetControllerInstance();
+        
             EDSController m_EDSHardwareMgr = EDSController.GetEDSController();
             //1.连接电镜
             if (m_EDSHardwareMgr.Connect())

+ 56 - 91
OTSIncAMeasureApp/9-OTSRibbon/OTSRibbonFun.cs

@@ -51,19 +51,65 @@ namespace OTSMeasureApp
         public void SetMeasureRibbonButnStatu()
         {
             bool bSampleCheckBoxFalg = m_MeasureAppForm.m_ProjParam.GetSampleCheckBoxStatus();
-            List<int> RibbonIdList = new List<int>();
-            RibbonIdList.Add((int)RibbonButnID.Fun_Start);
-            RibbonIdList.Add((int)RibbonButnID.Fun_Pause);
-            RibbonIdList.Add((int)RibbonButnID.Fun_Stop);
-            RibbonIdList.Add((int)RibbonButnID.Fun_CheckPara);
+          
+            bool bFlag;
             if (!bSampleCheckBoxFalg)
             {
-                SetRibbonButonWorkListStatu(RibbonIdList, false);
+                 bFlag = false;
             }
-            else
+            else 
             {
-                SetRibbonButonWorkListStatu(RibbonIdList, true);
+                 bFlag = true;
             }
+                
+                    if (m_MeasureAppForm.MeasureThreadRunFlag)    //当正在测量时,开始按钮变灰色
+                    {
+                        m_MeasureAppForm.rbStart.Enabled = false;
+                    }
+                    else
+                    {
+                        m_MeasureAppForm.rbStart.Enabled = bFlag;
+                    }
+              
+                    if (m_MeasureAppForm.MeasureThreadRunFlag)    //当前正在运行的时候,才可以点击暂停
+                    {
+                        if (m_MeasureAppForm.GetRunType() == MSR_RUN_TYPE.RUNMEASURE)
+                        {
+                            m_MeasureAppForm.rbPause.Enabled = bFlag;
+                        }
+                        else
+                        {
+                            m_MeasureAppForm.rbPause.Enabled = false;
+                        }
+
+                    }
+                    else
+                    {
+                        m_MeasureAppForm.rbPause.Enabled = false;
+                    }
+             
+                    if (bFlag && m_MeasureAppForm.MeasureThreadRunFlag)  //当前正在运行的时候,才可以点击停止
+                    {
+                        m_MeasureAppForm.rbStop.Enabled = bFlag;
+                      
+                    }
+                    else
+                    {
+                        m_MeasureAppForm.rbStop.Enabled = false;
+                       
+                    }
+
+               
+                    if (m_MeasureAppForm.MeasureThreadRunFlag)
+                    {
+                        m_MeasureAppForm.rbCheckParam.Enabled = false;
+                    }
+                    else
+                    {
+                        m_MeasureAppForm.rbCheckParam.Enabled = bFlag;
+                    }
+
+               
         }
 
 
@@ -90,11 +136,11 @@ namespace OTSMeasureApp
             RibbonIdList.Add((int)RibbonButnID.Sample_DrawPolygon);
             if (0 == m_MeasureAppForm.m_ProjParam.GetSampleCount())
             {
-                SetRibbonButonWorkListStatu(RibbonIdList, false);
+                SetRibbonButonWorkListStatu(RibbonIdList,false);
             }
             else
             {
-                SetRibbonButonWorkListStatu(RibbonIdList, true);
+                SetRibbonButonWorkListStatu(RibbonIdList,true);
             }
         }
 
@@ -152,9 +198,6 @@ namespace OTSMeasureApp
                 SetReprotRibbonButnStatu();
             }
 
-            ////属性窗体中的按钮
-            //m_MeasureAppForm.m_SPropertyWindows.TSLoad.Enabled = bRibStstu;
-            //m_MeasureAppForm.m_SPropertyWindows.TSSaveAs.Enabled = bRibStstu;
 
         }
 
@@ -246,67 +289,6 @@ namespace OTSMeasureApp
                     continue;
                 }
 
-                if (RibbonButnIDList[i] == (int)RibbonButnID.Fun_Start)
-                {
-                    if(m_MeasureAppForm.MeasureThreadRunFlag)    //当正在测量时,开始按钮变灰色
-                    {
-                        m_MeasureAppForm.rbStart.Enabled = false;
-                    }
-                    else
-                    {
-                        m_MeasureAppForm.rbStart.Enabled = bFlag;
-                    }
-                    continue;
-                }
-
-                if (RibbonButnIDList[i] == (int)RibbonButnID.Fun_Pause)
-                {
-                    if (m_MeasureAppForm.MeasureThreadRunFlag)    //当前正在运行的时候,才可以点击暂时
-                    {
-                        m_MeasureAppForm.rbPause.Enabled = bFlag;
-                    }
-                    else
-                    {
-                        m_MeasureAppForm.rbPause.Enabled = false;
-                    }
-                    continue;
-                }
-
-                if (RibbonButnIDList[i] == (int)RibbonButnID.Fun_Stop)
-                {
-                    if(bFlag && m_MeasureAppForm.MeasureThreadRunFlag)  //当前正在运行的时候,才可以点击停止
-                    {                       
-                        m_MeasureAppForm.rbStop.Enabled = bFlag;
-                        continue;
-                    }
-                    else
-                    {
-                        m_MeasureAppForm.rbStop.Enabled = false;
-                        continue;
-                    }
-                   
-                }
-
-                if (RibbonButnIDList[i] == (int)RibbonButnID.Fun_CheckPara)
-                {
-                    if (m_MeasureAppForm.MeasureThreadRunFlag)
-                    {
-                        m_MeasureAppForm.rbCheckParam.Enabled = false;
-                    }
-                    else
-                    {
-                        m_MeasureAppForm.rbCheckParam.Enabled = bFlag;
-                    }
-                        
-                    continue;
-                }
-
-           /*     if (RibbonButnIDList[i] == (int)RibbonButnID.Fun_CloseSem)
-                {
-                    m_MeasureAppForm.rbSEM.Enabled = bFlag;
-                    continue;
-                }*/
-
                 if (RibbonButnIDList[i] == (int)RibbonButnID.View_Ruler)
                 {
                     m_MeasureAppForm.rbRuler.Enabled = bFlag;
@@ -364,24 +346,7 @@ namespace OTSMeasureApp
             }
         }
 
-        //打开工作文件名
-        public String OpenWorkFile()
-        {
-            OpenFileDialog openFileDialog = new OpenFileDialog();
-            openFileDialog.InitialDirectory = "c:\\";//注意这里写路径时要用c:\\而不是c:\
-            //openFileDialog.Filter = "文本文件|*.*|C#文件|*.cs|所有文件|*.*";
-            openFileDialog.Filter = "文本文件|*.*|所有文件|*.*";
-            openFileDialog.RestoreDirectory = true;
-            openFileDialog.FilterIndex = 1;
-            String csFileName = "";
-            if (openFileDialog.ShowDialog() == DialogResult.OK)
-            {
-                csFileName = openFileDialog.FileName;
-                
-            }
 
-            return csFileName;
-        }
     }
 
     

+ 21 - 11
OTSIncAMeasureApp/OTSIncAMeasureAppForm.cs

@@ -56,7 +56,7 @@ namespace OTSMeasureApp
         public  OTSRibbonFun m_RibbonFun = null;
 
         //判断信息来源  拍摄样品孔图片 或是 测量开始
-        public MSR_THREAD_RunSTATUS m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+        private MSR_RUN_TYPE runType = MSR_RUN_TYPE.RUNMEASURE;
 
 
 
@@ -93,6 +93,17 @@ namespace OTSMeasureApp
 
         // 测量线程当前状态  True: 正在测量;  False: 测量结束 
         public bool MeasureThreadRunFlag { get => m_MsrThreadWrapper.BGWorkThreadIsRunning();  }
+
+        public MSR_RUN_TYPE GetRunType()
+        {
+            return m_MsrThreadWrapper.GetDoRunType();
+        }
+
+        public void SetRunType(MSR_RUN_TYPE value)
+        {
+            m_MsrThreadWrapper.SetDoRunType(value);
+        }
+
         public FileSystemWatcher fileWatcher = new FileSystemWatcher(Application.StartupPath+ @"\Config\SysData");
         public OTSIncAMeasureAppForm()
         {
@@ -709,7 +720,7 @@ namespace OTSMeasureApp
             //设置 删除,复位,圆形,矩形 按钮状态
             m_RibbonFun.SetSampleRibbonButnStatus();
             //清空帧图信息
-            m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
+            SetRunType(MSR_RUN_TYPE.RUNMEASURE);
          
         }
 
@@ -884,16 +895,16 @@ namespace OTSMeasureApp
             }
             if (!m_MsrThreadWrapper.BGWorkThreadIsRunning() && !m_MsrThreadWrapper.BgWorkIsPaused())
             {
-               
-                m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                m_MsrThreadWrapper.SetDoRunType(MSR_THREAD_RunSTATUS.RUNMEASURE);
+
+                SetRunType(MSR_RUN_TYPE.RUNMEASURE);
+                //m_MsrThreadWrapper.SetDoRunType(MSR_RUN_TYPE.RUNMEASURE);
                 m_MsrThreadWrapper.StartBGWorkThread();
                 m_RibbonFun.SetMeasureRibbonButnStatu();
             }
             else //thread is in pausing state
             {
-                m_RunType = MSR_THREAD_RunSTATUS.RUNMEASURE;
-                m_MsrThreadWrapper.SetDoRunType(MSR_THREAD_RunSTATUS.RUNMEASURE);
+                SetRunType(MSR_RUN_TYPE.RUNMEASURE);
+                //m_MsrThreadWrapper.SetDoRunType(MSR_RUN_TYPE.RUNMEASURE);
                 m_MsrThreadWrapper.SetMeasureThreadStatus(OTS_MSR_THREAD_STATUS.INPROCESS);
                 m_RibbonFun.SetMeasureRibbonButnStatu();
             }
@@ -910,7 +921,7 @@ namespace OTSMeasureApp
             m_SolutionWindows.Enabled = false;
             m_SPropertyWindows.Enabled = false;
             rbStart.Enabled = false;
-            rbPause.Enabled = true;
+            //rbPause.Enabled = true;
             rbStop.Enabled = true;
             rbCheckParam.Enabled = false;
         }
@@ -1031,10 +1042,9 @@ namespace OTSMeasureApp
         /// <param name="doRunType"></param>
         /// <param name="HoleID"></param>
         /// <param name="c_DomainMessure"></param>
-        public void StartSampleHoleBSEImage(MSR_THREAD_RunSTATUS doRunType,int HoleID)
+        public void StartSampleHoleBSEImage(int HoleID)
         {
-            //线程执行类型 1:测量类型 2:获取样品孔图片类型
-            m_MsrThreadWrapper.SetDoRunType(doRunType);
+       
             //设置获取样品孔中照片所需的参数
             m_MsrThreadWrapper.SetHoleImagePreview(HoleID);