Browse Source

fix the position conflict issue of taking multiple visual sample hole image.

gsp 1 year ago
parent
commit
c61519b2d3

+ 2 - 2
Bin/x64/Debug/Config/ProData/HardwareConfig.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <XMLData PathName="HardwareConfig.xml" ID="1">
-  <Member RegName="SemControllerName" Value="Oxford" ImageInputSources="BSE" />
-  <Member RegName="EDSName" Value="Oxford" DelayQuantify="false" />
+  <Member RegName="SemControllerName" Value="OffLine" ImageInputSources="BSE" />
+  <Member RegName="EDSName" Value="OffLine" DelayQuantify="false" />
   <Member RegName="BrukerDllVersion" Version="Bruker.API.Esprit64.dll" />
   <Member RegName="FEIIP" Value="192.168.0.1" />
   <Member RegName="FEIPORT" Value="7520" />

+ 106 - 91
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs

@@ -159,97 +159,6 @@ namespace OTSMeasureApp
             //国际化
             lan = new OTSCommon.Language(this);
             table = lan.GetNameTable(this.Name);
-        }
-
-        /// <summary>
-        /// 画圆形测试区域 事件
-        /// </summary>
-        public void DrawCircleMeasure()
-        {
-            //手绘测量区域类型为圆形
-            m_DrawMeasureType = CreateRectangleType.Circle;
-            m_IsDrawMeasure = true;
-            m_DrawMeasureGDIObject = null;
-            this.Cursor = Cursors.Hand;
-        }
-        /// <summary>
-        /// 画矩形测试区域 事件
-        /// </summary>
-        public void DrawRectangleMeasure()
-        {
-            //手绘测量区域类型为矩形
-            m_DrawMeasureType = CreateRectangleType.SampleBackGround_Rectangle;
-
-            m_IsDrawMeasure = true;
-            m_DrawMeasureGDIObject = null;
-            this.Cursor = Cursors.Hand;
-        }
-        /// <summary>
-        /// 画多边形测试区域 事件
-        /// </summary>
-        public void DrawPolygonMeasure()
-        {
-            m_DrawMeasureType = CreateRectangleType.Polygon;
-            m_IsDrawMeasure = true;
-            m_DrawMeasureGDIObject = null;
-            this.Cursor = Cursors.Hand;
-        }
-
-        /// <summary>
-        /// 三点画圆形测试区域 事件  先多边形后圆形
-        /// </summary>
-        public void DrawCircleMeasureByThreePoints()
-        {
-            //手绘测量区域类型为圆形
-            m_DrawMeasureType = CreateRectangleType.CircleByThreePoints;
-            m_IsDrawMeasure = true;
-            m_DrawMeasureGDIObject = null;
-            this.Cursor = Cursors.Hand;
-        }
-        public void DrawRingShapeArea()
-        {
-            //手绘测量区域类型为圆形
-            m_DrawMeasureType = CreateRectangleType.RingShape;
-            RingGdiDataInput frmInput = new RingGdiDataInput();
-            if (frmInput.ShowDialog() == DialogResult.OK)
-            {
-                float diameter = (float)m_visualStage.MicronConvertToPixel(frmInput.Diameter);
-                float ringwidth = (float)m_visualStage.MicronConvertToPixel(frmInput.RingWidth);
-                var sam = GetWorkingVisualSample();
-                SizeF size = new SizeF(diameter, diameter);
-                var position = sam.GetMeasureGDIObject().GetZoomedRegionF().Location;
-                RectangleF rec = sam.GetMeasureGDIObject().GetZoomedRegionF();
-                PointF centerPos = new PointF(position.X + rec.Width / 2, position.Y + rec.Height / 2);
-                PointF newRegionFPos = new PointF(centerPos.X - diameter / 2, centerPos.Y - diameter / 2);
-                RectangleF rectangle = new RectangleF(newRegionFPos, size);
-                Color MeasureColor = Color.Red;
-                CRingGDIObject newGDI;
-
-                newGDI = new CRingGDIObject(rectangle, CreateRectangleType.RingShape, sam.GetSampleGDIObject().NameOrHoleName, sam.GetSampleName(), MeasureColor);
-                newGDI.SetRingWidth(ringwidth);
-
-                newGDI.SetZoomNumber(m_visualStage.GetZoomNum());
-                newGDI.SetDisplayRefPoint(m_visualStage.GetDisplayRefPoint());
-
-                newGDI.IsWorkSample = true;
-
-
-                sam.SetMeasureGDIObject(newGDI);
-
-
-                m_DrawPolygonFinishGDIObject = null;
-                m_DrawMeasureGDIObject = null;
-
-                var para = m_visualStage.GetSampleMeasurePara(sam.GetMeasureGDIObject());
-
-                m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);
-
-
-            }
-
-
-
-
         }
         #region 菜单操作
         private void CMStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
@@ -342,6 +251,97 @@ namespace OTSMeasureApp
             }
         }
         #endregion
+        /// <summary>
+        /// 画圆形测试区域 事件
+        /// </summary>
+        public void DrawCircleMeasure()
+        {
+            //手绘测量区域类型为圆形
+            m_DrawMeasureType = CreateRectangleType.Circle;
+            m_IsDrawMeasure = true;
+            m_DrawMeasureGDIObject = null;
+            this.Cursor = Cursors.Hand;
+        }
+        /// <summary>
+        /// 画矩形测试区域 事件
+        /// </summary>
+        public void DrawRectangleMeasure()
+        {
+            //手绘测量区域类型为矩形
+            m_DrawMeasureType = CreateRectangleType.SampleBackGround_Rectangle;
+
+            m_IsDrawMeasure = true;
+            m_DrawMeasureGDIObject = null;
+            this.Cursor = Cursors.Hand;
+        }
+        /// <summary>
+        /// 画多边形测试区域 事件
+        /// </summary>
+        public void DrawPolygonMeasure()
+        {
+            m_DrawMeasureType = CreateRectangleType.Polygon;
+            m_IsDrawMeasure = true;
+            m_DrawMeasureGDIObject = null;
+            this.Cursor = Cursors.Hand;
+        }
+
+        /// <summary>
+        /// 三点画圆形测试区域 事件  先多边形后圆形
+        /// </summary>
+        public void DrawCircleMeasureByThreePoints()
+        {
+            //手绘测量区域类型为圆形
+            m_DrawMeasureType = CreateRectangleType.CircleByThreePoints;
+            m_IsDrawMeasure = true;
+            m_DrawMeasureGDIObject = null;
+            this.Cursor = Cursors.Hand;
+        }
+        public void DrawRingShapeArea()
+        {
+            //手绘测量区域类型为圆形
+            m_DrawMeasureType = CreateRectangleType.RingShape;
+            RingGdiDataInput frmInput = new RingGdiDataInput();
+            if (frmInput.ShowDialog() == DialogResult.OK)
+            {
+                float diameter = (float)m_visualStage.MicronConvertToPixel(frmInput.Diameter);
+                float ringwidth = (float)m_visualStage.MicronConvertToPixel(frmInput.RingWidth);
+                var sam = GetWorkingVisualSample();
+                SizeF size = new SizeF(diameter, diameter);
+                var position = sam.GetMeasureGDIObject().GetZoomedRegionF().Location;
+                RectangleF rec = sam.GetMeasureGDIObject().GetZoomedRegionF();
+                PointF centerPos = new PointF(position.X + rec.Width / 2, position.Y + rec.Height / 2);
+                PointF newRegionFPos = new PointF(centerPos.X - diameter / 2, centerPos.Y - diameter / 2);
+                RectangleF rectangle = new RectangleF(newRegionFPos, size);
+                Color MeasureColor = Color.Red;
+                CRingGDIObject newGDI;
+
+                newGDI = new CRingGDIObject(rectangle, CreateRectangleType.RingShape, sam.GetSampleGDIObject().NameOrHoleName, sam.GetSampleName(), MeasureColor);
+                newGDI.SetRingWidth(ringwidth);
+
+                newGDI.SetZoomNumber(m_visualStage.GetZoomNum());
+                newGDI.SetDisplayRefPoint(m_visualStage.GetDisplayRefPoint());
+
+                newGDI.IsWorkSample = true;
+
+
+                sam.SetMeasureGDIObject(newGDI);
+
+
+                m_DrawPolygonFinishGDIObject = null;
+                m_DrawMeasureGDIObject = null;
+
+                var para = m_visualStage.GetSampleMeasurePara(sam.GetMeasureGDIObject());
+
+                m_MeasureAppForm.m_ProjParam.SetWorkSampleHoleAndMeasureArea(para);
+
+
+            }
+
+
+
+
+        }
+        
         public CVisualSampleArea GetWorkingVisualSample()
         {
 
@@ -2705,6 +2705,19 @@ namespace OTSMeasureApp
 
                 if (runType == MSR_RUN_TYPE.RUNSampleHoleImage)
                 {
+                    //-------maybe take more than one visualsample hole image for one sample,
+                    //if the previous visual area's fields don't finish,then the unfinished field's area may overlap with the current visualsample's area.
+                    // then there positions will conflict. So we should remove the unfinished fields first.
+                    var completeHoleImgs = new List<CRectangleGDIObject>();
+                    foreach (var holeImgfld in sam.FrameOfHoleGDIObjects)
+                    {
+                        if (holeImgfld.BSEImage != null)
+                        {
+                            completeHoleImgs.Add(holeImgfld);
+                        }
+                    }
+                    sam.FrameOfHoleGDIObjects = completeHoleImgs;
+                    //------
                     foreach (var r in visualfieldRects)
                     {
                         r.SetDisplayRefPoint(m_visualStage.GetDisplayRefPoint());
@@ -2725,6 +2738,8 @@ namespace OTSMeasureApp
                         createImageRect.NameOrHoleName = r.NameOrHoleName;
                         createImageRect.SetZoomNumber(m_visualStage.GetZoomNum());
                         createImageRect.SetDisplayRefPoint(m_visualStage.GetDisplayRefPoint());
+                       
+                        
                         sam.FrameOfHoleGDIObjects.Add(createImageRect);
                     }
 

+ 1 - 0
OTSIncAMeasureApp/ServiceCenter/OxfordExtender/ExtenderWrapperIpc.cs

@@ -48,6 +48,7 @@ namespace OTSMeasureApp.ServiceCenter.OxfordExtender
                
                 
             }
+            extenderRemoteObj.ConnectToEDSHardware();
             return extenderRemoteObj;
 
         }

+ 23 - 14
OTSIncAMeasureApp/ServiceCenter/OxfordExtender/OxfordScanController.cs

@@ -34,21 +34,30 @@ namespace OTSMeasureApp.ServiceCenter
         }
         public CBSEImgClr AcquireBSEImage()
         {
-            Rectangle r = new Rectangle();
-            CBSEImgClr bse = new CBSEImgClr(r);
-            bse.InitImageData(imageWidth, imageHeight);
-          
-            ImageAquistionParam p = new ImageAquistionParam();
-            p.width = imageWidth;
-            p.height = imageHeight;
-            p.DwellTime = dwelltime;
-            p.sourceType = imagesourceType;
-            NLog.LogManager.GetCurrentClassLogger().Info("Begin to acquire BSE image!");
-            iExtender.AquisitionImage(ref p);
-            NLog.LogManager.GetCurrentClassLogger().Info("End acquiring BSE image!");
-            bse.SetImageData(p.ImageData, imageWidth, imageHeight);
+            try
+            {
+                Rectangle r = new Rectangle();
+                CBSEImgClr bse = new CBSEImgClr(r);
+                bse.InitImageData(imageWidth, imageHeight);
+
+                ImageAquistionParam p = new ImageAquistionParam();
+                p.width = imageWidth;
+                p.height = imageHeight;
+                p.DwellTime = dwelltime;
+                p.sourceType = imagesourceType;
+                NLog.LogManager.GetCurrentClassLogger().Info("Begin to acquire BSE image!");
+                iExtender.AquisitionImage(ref p);
+                NLog.LogManager.GetCurrentClassLogger().Info("End acquiring BSE image!");
+                bse.SetImageData(p.ImageData, imageWidth, imageHeight);
+
+                return bse;
+            }
+            catch (Exception e)
+            {
+                NLog.LogManager.GetCurrentClassLogger().Warn(e.Message);
 
-            return bse;
+            }
+            return null;
         }
 
         public bool Init()

+ 10 - 1
OTSIncAMeasureApp/ServiceCenter/OxfordExtender/OxfordSemController.cs

@@ -24,7 +24,16 @@ namespace OTSMeasureApp.ServiceCenter
         }
         public bool Connect()
         {
- 
+            try 
+            {
+                iExtender = ExtenderWrapperIpc.GetExtenderWrapper();
+            } 
+            catch (Exception e)
+            {
+                NLog.LogManager.GetCurrentClassLogger().Warn(e.Message);
+
+             }
+  
             return true;
         }
 

+ 0 - 3
OxfordExtenderWrapper/ExtenderIpcUI1.cs

@@ -59,9 +59,6 @@ namespace OxfordExtenderWrapper
         public bool XrayAreaCollecting(ref AreaXrayParam p)
         {
 
-           
-              
-             
               var  r = iExtender.XrayAreaCollecting(ref p);