소스 검색

样品台移动延时参数化

CXS 3 년 전
부모
커밋
a1a01f3938
2개의 변경된 파일14개의 추가작업 그리고 6개의 파일을 삭제
  1. 3 2
      OTSIncAMeasureApp/0-OTSModel/Measure/3-MeasureFlow/CSmplMeasure.cs
  2. 11 4
      OTSIncAMeasureApp/0-OTSModel/OTSDataType/SEMStageData.cs

+ 3 - 2
OTSIncAMeasureApp/0-OTSModel/Measure/3-MeasureFlow/CSmplMeasure.cs

@@ -430,7 +430,7 @@ namespace OTSModelSharp
             Point a_SEMpt = new Point();
        
             CSEMStageData a_pCSEMStageData = m_pMsrThread.GetProjResultData().GetSEMStageData();
-        
+            int hardWareDelay = a_pCSEMStageData.GetHardWareDelay();
 
 
             if (!a_pCSEMStageData.ConverOTSToSEMPoint(a_poi, ref a_SEMpt))
@@ -448,13 +448,14 @@ namespace OTSModelSharp
                 }
             }
             log.Info("Begin to move SEM stage to " + a_SEMpt.X + "," + a_SEMpt.Y);
-            Thread.Sleep(100);
+            Thread.Sleep(hardWareDelay);
             // move SEM to the position (rotation 0)
             if (!pSEMController.MoveSEMToPoint(a_SEMpt, 0))
             {
                 log.Error("MoveSEMToPoint: failed to call MoveSEMToPoint method.");
                 return false;
             }
+            Thread.Sleep(hardWareDelay);
             return true;
         }
         // Acquire a BSE image

+ 11 - 4
OTSIncAMeasureApp/0-OTSModel/OTSDataType/SEMStageData.cs

@@ -24,7 +24,7 @@ namespace OTSDataType
         CIntRange m_oXAxis;
         // y axis (micros)
         CIntRange m_oYAxis;
-
+        int m_iHardWareDelay;
         //-------------public---------------------
         public CSEMStageData()// constructor
         {
@@ -43,7 +43,8 @@ namespace OTSDataType
                 m_oYAxis == a_oSource.m_oYAxis &&
                 m_bXAxisDir == a_oSource.m_bXAxisDir &&
                 m_bYAxisDir == a_oSource.m_bYAxisDir &&
-                m_dMinMag == a_oSource.m_dMinMag;
+                m_dMinMag == a_oSource.m_dMinMag &&
+                m_iHardWareDelay == a_oSource.m_iHardWareDelay;
         }
         public bool ConverSEMToOTSSystem(CDomain a_pBoundary, CDomain a_pSTD, List<CHole> a_listStageHoles)
         {
@@ -242,6 +243,8 @@ namespace OTSDataType
         {
             m_dMinMag = a_dMinMag;
         }
+        public int GetHardWareDelay() { return m_iHardWareDelay; }
+        public void SetHardWareDelay(int a_iValue) { m_iHardWareDelay = a_iValue; }
         //-------------protected------------------
         protected void Init()
         {
@@ -251,6 +254,7 @@ namespace OTSDataType
             m_oXAxis = new CIntRange(0, 0);
             m_oYAxis = new CIntRange(0, 0);
             m_dMinMag = otsdataconst.MAGNIFICATION_MIN;
+            m_iHardWareDelay = 1000;
         }
         protected void Duplicate(CSEMStageData a_oSource)
         {
@@ -263,6 +267,7 @@ namespace OTSDataType
             m_oXAxis = a_oSource.m_oXAxis;
             m_oYAxis = a_oSource.m_oYAxis;
             m_dMinMag = a_oSource.m_dMinMag;
+            m_iHardWareDelay = a_oSource.m_iHardWareDelay;
         }
 
         public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
@@ -271,6 +276,7 @@ namespace OTSDataType
             xString xbXAxisDir = new xString();
             xString xbYAxisDir = new xString();
             xDouble xMinMag = new xDouble();
+            xInt xiHardWareDelay = new xInt();
             Slo slo = new Slo();
             slo.Register("scanFieldSize", xscanFieldSize100);//it should be "scanFieldSize100" ,but we have used "scanFieldSize" for a long time,here is for compatible with before version.
             slo.Register("xAxisDir", xbXAxisDir);
@@ -278,14 +284,14 @@ namespace OTSDataType
             slo.Register("MinMag", xMinMag);
             slo.Register("XAxis", m_oXAxis);
             slo.Register("YAxis", m_oYAxis);
-
+            slo.Register("ControlDelay", xiHardWareDelay);
             if (isStoring)
             {
                 xscanFieldSize100.AssignValue(m_nScanFieldSize100);
                 xbXAxisDir.AssignValue((int)m_bXAxisDir + ":" + m_bXAxisDir.ToString());
                 xbYAxisDir.AssignValue((int)m_bYAxisDir + ":" + m_bYAxisDir.ToString());
                 xMinMag.AssignValue(m_dMinMag);
-
+                xiHardWareDelay.AssignValue(m_iHardWareDelay);
                 slo.Serialize(true, classDoc, rootNode);
             }
             else
@@ -295,6 +301,7 @@ namespace OTSDataType
                 m_bXAxisDir = (OTS_X_AXIS_DIRECTION)Convert.ToInt32( xbXAxisDir.value().Split(':')[0]);
                 m_bYAxisDir = (OTS_Y_AXIS_DIRECTION)Convert.ToInt32( xbYAxisDir.value().Split(':')[0]);
                 m_dMinMag = xMinMag.value();
+                m_iHardWareDelay = xiHardWareDelay.value();
             }
         }
     }