Procházet zdrojové kódy

修改样品孔拍摄时的分辨率为所选分辨率的一半

CXS před 3 roky
rodič
revize
62201cbc2d

+ 1 - 1
Bin/x64/Debug/Config/SysData/OTSStage.stg

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<XMLData Modify="true" PathName=".\Config\SysData\OTSStage.stg" WorkingStageId="2">
+<XMLData Modify="true" PathName=".\Config\SysData\OTSStage.stg" WorkingStageId="0">
   <Collection RegName="Stagelist">
     <Member strName="圆形九圆孔50mm">
       <Member RegName="boundary" PolygonPoint="" rectDomian="0,0,50000,0" shape="0" />

+ 3 - 4
OTSIncAMeasureApp/0-OTSModel/Measure/GetBSEPic/CMsrThread.cs

@@ -500,13 +500,12 @@ namespace OTSModelSharp
             COTSImgScanPrm poImageScanParam = new COTSImgScanPrm();
             poImageScanParam.SetStopMode(OTS_MEASURE_STOP_MODE.CoverMode);
             poImageScanParam.SetStartImageMode(OTS_GET_IMAGE_MODE.FROM_CENTER);
-            poImageScanParam.SetScanImageSpeed(OTS_THREE_TIES_OPTIONS.TIE1);
-            poImageScanParam.SetImagePixelSize(OTS_FIVE_TIES_OPTIONS.TIE1);
+            poImageScanParam.SetScanImageSpeed(OTS_THREE_TIES_OPTIONS.low);
+            //poImageScanParam.SetImagePixelSize(OTS_FIVE_TIES_OPTIONS.TIE1);
 
             CSampleParam poMsrParams = pHoleSample.GetMsrParams();
-           
+            poImageScanParam.SetImagePixelSize(m_listMeasurableSamples[0].GetMsrParams().GetImageScanParam().GetImagePixelSize());//由于各样品分辨率应该一致,故此处没有读取选取的特定样品孔样品
             poMsrParams.SetImageScanParam(poImageScanParam);
-
             pHoleSample.SetMsrParams(poMsrParams);
 
             return pHoleSample;

+ 80 - 15
OTSIncAMeasureApp/0-OTSModel/Measure/GetBSEPic/CSmplMeasure.cs

@@ -176,6 +176,7 @@ namespace OTSModelSharp
             int nResulotionId = RESOLUTION_ID_FIRST_TIE + (int)nImageSizeId;
             Size sizePixelImage = RESOLUTION_VALUE[nResulotionId];
 
+
             // get SEM controller
             if (!pSEMController.IsConnected())
             {
@@ -186,33 +187,98 @@ namespace OTSModelSharp
                 }
             }
 
-            // get scan field size
-            double dScanFieldSizeX = sizePixelImage.Width;
-            double dScanFieldSizeY = sizePixelImage.Height;
-            if (!pSEMController.GetScanFieldSize(ref dScanFieldSizeX, ref dScanFieldSizeY))
+            // get dwell time 
+            OTS_THREE_TIES_OPTIONS nDwellTime = pImgScanParam.GetScanImageSpeed();
+
+            // convert dwell time to bruker dwell time (8, 16, 32)
+            int nBrukerDwellTimeId=3;
+            switch (nDwellTime)
             {
+                case OTS_THREE_TIES_OPTIONS.low:
+                    nBrukerDwellTimeId = 3;
+                    break;
+                case OTS_THREE_TIES_OPTIONS.meddium:
+                    nBrukerDwellTimeId = 4;
+                    break;
+                case OTS_THREE_TIES_OPTIONS.high:
+                    nBrukerDwellTimeId = 5;
+                    break;
+                default:
+                    nBrukerDwellTimeId = 3;
+                    break;
 
-                log.Error("SetBSEParam: failed to call GetScanFieldSize method.");
+            }
+
+            long nBrukerDwellTime = OTSDataType.otsdataconst.DWELLTIME_BRUKER_VALUES[nBrukerDwellTimeId];
+
+
+            if (!pScanController.Init())
+            {
+                log.Error("SetBSEParam: failed to get scan control.");
+               
                 return false;
+            }
 
+            // set dwell time
+            if (!pScanController.SetDwellTime(nBrukerDwellTime))
+            {
+                log.Error("SetBSEParam: failed to set dwell time (%d) for bruker system.", nBrukerDwellTime);
+                return false;
             }
 
+            // set image size
+            if (!pScanController.SetImageSize(sizePixelImage.Width,sizePixelImage.Height))
+            {
+                // failed to set dwell time
+                log.Error("SetBSEParam: failed to set dwell time (%d).", sizePixelImage.Height);
+                return false;
+            }
+
+            return true;
+        }
+        bool SetHoleBSEParam()
+        {
+
+
+            // get SEM controller 
+            var pSEMController = m_SemHardwareMgr;
+
+            // get scan controller
+            var pScanController = m_ScanHardwareMgr;
+
+
+            // scan parameters
+            var pMsrParam = m_Sample.GetMsrParams();
+            var pImgScanParam = pMsrParam.GetImageScanParam();
+
+            // get image size
+            var nImageSizeId = pImgScanParam.GetImagePixelSize();
+            int nResulotionId = RESOLUTION_ID_FIRST_TIE + (int)nImageSizeId;
+            Size sizePixelImage = RESOLUTION_VALUE[nResulotionId];
+
+
+
+            // get SEM controller
+            if (!pSEMController.IsConnected())
+            {
+                if (!pSEMController.Connect())
+                {
+                    log.Error("SetBSEParam: can't connect SEM.");
+                    return false;
+                }
+            }
 
             // get dwell time 
             OTS_THREE_TIES_OPTIONS nDwellTime = pImgScanParam.GetScanImageSpeed();
 
             // convert dwell time to bruker dwell time (6, 16, 32)
-          
-            const long DWELLTIME_BRUKER_ID_THREE_TIE_MIN = 3;	// 8
-            long nBrukerDwellTimeId = DWELLTIME_BRUKER_ID_THREE_TIE_MIN + (int)nDwellTime;
-            int[] DWELLTIME_BRUKER_VALUES = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 };
-            long nBrukerDwellTime = DWELLTIME_BRUKER_VALUES[nBrukerDwellTimeId];
+            long nBrukerDwellTime = DWELLTIME_BRUKER_VALUES[2];// choose the third option, so the dwell time will be 4 . there's no need to change here. it shoud be a const.
 
 
             if (!pScanController.Init())
             {
                 log.Error("SetBSEParam: failed to get scan control.");
-               
+
                 return false;
             }
 
@@ -224,7 +290,7 @@ namespace OTSModelSharp
             }
 
             // set image size
-            if (!pScanController.SetImageSize(sizePixelImage.Width,sizePixelImage.Height))
+            if (!pScanController.SetImageSize(sizePixelImage.Width/2, sizePixelImage.Height/2))
             {
                 // failed to set dwell time
                 log.Error("SetBSEParam: failed to set dwell time (%d).", sizePixelImage.Height);
@@ -234,8 +300,7 @@ namespace OTSModelSharp
             return true;
         }
 
-
-       public  void SetWorkingFolder(String a_strWorkingFolder)
+        public  void SetWorkingFolder(String a_strWorkingFolder)
         {
             // add "\\" at the string end if it is not "\\"
             if (a_strWorkingFolder.PadRight(1)!="\\")
@@ -755,7 +820,7 @@ namespace OTSModelSharp
                     return;
                 }
                 // set the BSE scan param
-                if (!SetBSEParam())
+                if (!SetHoleBSEParam())
                 {
                     log.Error("DoMeasure: fail to set BSE param.");
                     pStatus.SetStatus(OTS_MSR_SAMPLE_STATUS.FAILED);

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

@@ -37,7 +37,7 @@ namespace OTSDataType
          const OTS_GET_IMAGE_MODE DEFAULT_IMAGEMODE = OTS_GET_IMAGE_MODE.FROM_CENTER;
 
         // scan speed
-         const OTS_THREE_TIES_OPTIONS DEFAULE_SCAN_SPEED = OTS_THREE_TIES_OPTIONS.TIE2;
+         const OTS_THREE_TIES_OPTIONS DEFAULE_SCAN_SPEED = OTS_THREE_TIES_OPTIONS.meddium;
 
         // image size
          const OTS_FIVE_TIES_OPTIONS DEFAULE_IMAGE_SIZE = OTS_FIVE_TIES_OPTIONS.TIE3;

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

@@ -2274,7 +2274,7 @@ namespace OTSDataType
 
                 case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
                     {
-                        if (OTS_THREE_TIES_OPTIONS.TIE1 > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.TIE3)
+                        if (OTS_THREE_TIES_OPTIONS.low > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.high)
                         {
                             return false;
                         }
@@ -2294,7 +2294,7 @@ namespace OTSDataType
 
                 case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
                     {
-                        if (OTS_THREE_TIES_OPTIONS.TIE1 > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.TIE3)
+                        if (OTS_THREE_TIES_OPTIONS.low > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.high)
                         {
                             return false;
                         }
@@ -2304,7 +2304,7 @@ namespace OTSDataType
 
                 case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
                     {
-                        if (OTS_THREE_TIES_OPTIONS.TIE1 > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.TIE3)
+                        if (OTS_THREE_TIES_OPTIONS.low > (OTS_THREE_TIES_OPTIONS)a_nValue || (OTS_THREE_TIES_OPTIONS)a_nValue > OTS_THREE_TIES_OPTIONS.high)
                         {
                             return false;
                         }
@@ -2406,7 +2406,7 @@ namespace OTSDataType
                 case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
                     //case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
                     {
-                        for (int i = (int)OTS_THREE_TIES_OPTIONS.TIE1; i <= (int)OTS_THREE_TIES_OPTIONS.TIE3; ++i)
+                        for (int i = (int)OTS_THREE_TIES_OPTIONS.low; i <= (int)OTS_THREE_TIES_OPTIONS.high; ++i)
                         {
                             strItem = XmlResourceData.GetInstance().GetStringByKey(GrpImageScan, IDS_THREE_TIES_OPTIONS_FIRST + i);
                             a_listComboStrings.Add(strItem);

+ 2 - 2
OTSIncAMeasureApp/0-OTSModel/OTSDataType/COTSXRayParam.cs

@@ -17,10 +17,10 @@ namespace OTSDataType
         const int DEFAULE_XRAY_LOW_COUNT = 800;
 
         // search x-ray speed
-        const OTS_THREE_TIES_OPTIONS DEFAULE_SEARCH_XRAY_SPEED = OTS_THREE_TIES_OPTIONS.TIE2;
+        const OTS_THREE_TIES_OPTIONS DEFAULE_SEARCH_XRAY_SPEED = OTS_THREE_TIES_OPTIONS.meddium;
 
         // analysis x-ray speed
-        const OTS_THREE_TIES_OPTIONS DEFAULE_ANALYSIS_XRAY_SPEED = OTS_THREE_TIES_OPTIONS.TIE2;
+        const OTS_THREE_TIES_OPTIONS DEFAULE_ANALYSIS_XRAY_SPEED = OTS_THREE_TIES_OPTIONS.meddium;
 
         // x-ray expect counts 
         const int DEFAULE_XRAY_EXP_COUNT = 4500;

+ 3 - 3
OTSIncAMeasureApp/0-OTSModel/OTSDataType/DataPublic.cs

@@ -46,7 +46,7 @@ namespace OTSModelSharp
 		// get image mode
 		public const otsdataconst.OTS_GET_IMAGE_MODE FETCH_IMAGE_MODE = otsdataconst.OTS_GET_IMAGE_MODE.FROM_CENTER;
 		// scan speed
-		public const otsdataconst.OTS_THREE_TIES_OPTIONS SCAN_SPEED = otsdataconst.OTS_THREE_TIES_OPTIONS.TIE2;
+		public const otsdataconst.OTS_THREE_TIES_OPTIONS SCAN_SPEED = otsdataconst.OTS_THREE_TIES_OPTIONS.meddium;
 		// image size
 		public const otsdataconst.OTS_FIVE_TIES_OPTIONS IMAGE_WIDTH = otsdataconst.OTS_FIVE_TIES_OPTIONS.TIE1;
 		// particle area																						
@@ -59,11 +59,11 @@ namespace OTSModelSharp
 		// XRay scan mode												
 		public const otsdataconst.OTS_X_RAY_SCAN_MODE SCAN_MODE = otsdataconst.OTS_X_RAY_SCAN_MODE.PointMode;
 		// XRay search speed
-		public const otsdataconst.OTS_THREE_TIES_OPTIONS SEARCH_SPEED = otsdataconst.OTS_THREE_TIES_OPTIONS.TIE2;
+		public const otsdataconst.OTS_THREE_TIES_OPTIONS SEARCH_SPEED = otsdataconst.OTS_THREE_TIES_OPTIONS.meddium;
 		// XRay search count
 		public const int SEARCH_COUNT = 5000;
 		// XRay analysis speed
-		public const otsdataconst.OTS_THREE_TIES_OPTIONS ANALYSIS_SPEED = otsdataconst.OTS_THREE_TIES_OPTIONS.TIE2;
+		public const otsdataconst.OTS_THREE_TIES_OPTIONS ANALYSIS_SPEED = otsdataconst.OTS_THREE_TIES_OPTIONS.meddium;
 		// XRay analysis expect count
 		public const int ANALYSIS_EXPECT_COUNT = 10000;
 

+ 4 - 8
OTSIncAMeasureApp/0-OTSModel/OTSDataType/otsdataconst.cs

@@ -58,17 +58,13 @@ namespace OTSDataType
        public const String FILE_TITLE_SPLIT = ":";
 
        public const String LINE_END = "\r\n";
-
+       public static int[] DWELLTIME_BRUKER_VALUES = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 };
 
         // IMAGE_RESOLUTION of BRUKER
         public const int RESOLUTION_ID_MIN = 0;
         public const int RESOLUTION_ID_MAX = 6;
         public const int RESOLUTION_ID_DEFAULT = 4;
         public const int RESOLUTION_ID_FIRST_TIE = 0;
-        //const CSize RESOLUTION_VALUE[RESOLUTION_ID_MAX] = { CSize(1024, 704), CSize(2048, 1408), CSize(3072, 2048),
-        //CSize(1024,884), CSize(2048, 1768), CSize(1024, 640),CSize(1024,768) };
-        //const CString RESOLUTION_STRINGS[RESOLUTION_ID_MAX] = { _T("1024 X 704"), _T("2048 X 1408"), _T("3072 X 2048"),256192
-        //_T("1024 X 884"), _T("2048 X 1768"), _T("1024 X 640") ,_T("1024 X 768")};
         public static readonly Size[] RESOLUTION_VALUE = { new Size(512, 384), new Size(1024, 704), new Size(1024, 768), new Size(2048, 1408), new Size(2048, 1536), new Size(3072, 2048),new Size(4096, 3072) };
 
         public static readonly string[] RESOLUTION_STRINGS = { "512 X 384", "1024 X 704", "1024 X 768", "2048 X 1408",  "2048 X 1536", "3072 X 2048",  "4096 X 3072" };
@@ -222,9 +218,9 @@ namespace OTSDataType
 
         public enum OTS_THREE_TIES_OPTIONS
         {
-            TIE1 = 0,
-            TIE2 = 1,
-            TIE3 = 2
+            low = 0,//低
+            meddium = 1,//中
+            high = 2// 高
         }
 
 

+ 3 - 3
OTSIncAMeasureApp/ResourceManage/ResourceData.cs

@@ -123,7 +123,7 @@ namespace OTSModelSharp.ResourceManage
 
             string strScanSpeedId = "";
 
-            if (a_nScanSpeed >= otsdataconst.OTS_THREE_TIES_OPTIONS.TIE1 && a_nScanSpeed <= otsdataconst.OTS_THREE_TIES_OPTIONS.TIE3)
+            if (a_nScanSpeed >= otsdataconst.OTS_THREE_TIES_OPTIONS.low && a_nScanSpeed <= otsdataconst.OTS_THREE_TIES_OPTIONS.high)
             {
                 strScanSpeedId = XmlResourceData.GetInstance().GetStringByKey(ResourceID.GrpOtherParam, ResourceID.IDS_SCANSPEED + (int)a_nScanSpeed);
             }
@@ -162,7 +162,7 @@ namespace OTSModelSharp.ResourceManage
 
             string strXRayAnalySpeedId = "";
 
-            if (a_nXRayAnalySpeed >= otsdataconst.OTS_THREE_TIES_OPTIONS.TIE1 && a_nXRayAnalySpeed <= otsdataconst.OTS_THREE_TIES_OPTIONS.TIE3)
+            if (a_nXRayAnalySpeed >= otsdataconst.OTS_THREE_TIES_OPTIONS.low && a_nXRayAnalySpeed <= otsdataconst.OTS_THREE_TIES_OPTIONS.high)
             {
                 strXRayAnalySpeedId = XmlResourceData.GetInstance().GetStringByKey(ResourceID.GrpOtherParam, ResourceID.IDS_ANALYSPEED + (int)a_nXRayAnalySpeed);
             }
@@ -190,7 +190,7 @@ namespace OTSModelSharp.ResourceManage
 
             string strXRaySearchSpeedId = "";
 
-            if (a_nXRaySearchSpeed >= otsdataconst.OTS_THREE_TIES_OPTIONS.TIE1 && a_nXRaySearchSpeed <= otsdataconst.OTS_THREE_TIES_OPTIONS.TIE3)
+            if (a_nXRaySearchSpeed >= otsdataconst.OTS_THREE_TIES_OPTIONS.low && a_nXRaySearchSpeed <= otsdataconst.OTS_THREE_TIES_OPTIONS.high)
             {
                 strXRaySearchSpeedId = XmlResourceData.GetInstance().GetStringByKey(ResourceID.GrpOtherParam, ResourceID.IDS_SEARCHSPEED + (int)a_nXRaySearchSpeed);
             }