Browse Source

fix some bugs in the eds collection.

gsp 4 years ago
parent
commit
cc582626f0
3 changed files with 20 additions and 38 deletions
  1. 3 3
      DBManager/MeasureDB.cs
  2. 8 18
      ExtenderControl/Extender.cs
  3. 9 17
      MeasureThread/Measure.cs

+ 3 - 3
DBManager/MeasureDB.cs

@@ -314,12 +314,12 @@ namespace DBManager
 
                     sql = "INSERT INTO AreaPosition(XrayID, AID, SegNum, SegID, X, Y, Length) values ("
                        + XrayId.ToString() + ","
-                       + (-1).ToString() + ","
+                       + PointsId.ToString() + ","
                        + (-1).ToString() + ","
                        + (-1).ToString() + ","
                        + X.ToString() + ","
                        + Y.ToString() + ","
-                       + (-1).ToString() + ")";
+                       + (0).ToString() + ")";
 
                     command = new SQLiteCommand(sql, m_db);
                     command.ExecuteNonQuery();
@@ -387,7 +387,7 @@ namespace DBManager
 
                     sql = "INSERT INTO AreaPosition(XrayID, AID, SegNum, SegID, X, Y, Length) values ("
                        + XrayId.ToString() + ","
-                       + AreaId.ToString() + ","
+                       + PointsId.ToString() + ","
                        + listSeg.Count.ToString() + ","
                        + i.ToString() + ","
                        + seg.X.ToString() + ","

+ 8 - 18
ExtenderControl/Extender.cs

@@ -1146,6 +1146,7 @@ namespace Extender
         private byte[] m_ImageBit = null;
         private long m_nImageWidth = 0;
         private long m_nImageHeight = 0;
+        private double m_dImagePixelsize = 0;//it will be initialized when we get an image from the EDS.
         bool m_bAcquistionDone = false;
         private Bitmap m_Bitmap = null;
 
@@ -1185,7 +1186,7 @@ namespace Extender
         {
             IElectronImage electronImage = e.Value[0];
 
-            if (!ReadImageData(electronImage, out m_ImageBit, out m_nImageWidth, out m_nImageHeight))
+            if (!ReadImageData(electronImage, out m_ImageBit, out m_nImageWidth, out m_nImageHeight,out m_dImagePixelsize))
             {
                 MessageBox.Show("图像采集完成,获取图像像素失败!");
             }
@@ -1197,10 +1198,11 @@ namespace Extender
         }
 
 
-        bool ReadImageData(IElectronImage a_electronImage, out Byte[] a_pImageBits, out long a_nImageHeight, out long a_nImageWidth)
+        bool ReadImageData(IElectronImage a_electronImage, out Byte[] a_pImageBits, out long a_nImageHeight, out long a_nImageWidth,out double a_nPixelSize)
         {
             a_nImageHeight = 0;
             a_nImageWidth = 0;
+            a_nPixelSize = 0;
             a_pImageBits = null;
 
             if (a_electronImage == null)
@@ -1210,6 +1212,7 @@ namespace Extender
 
             a_nImageHeight = a_electronImage.Height;
             a_nImageWidth = a_electronImage.Width;
+            a_nPixelSize = a_electronImage.PixelSize;
 
             int nBytesPerPixel = a_electronImage.BytesPerPixel;
             long nImageSize = a_nImageHeight * a_nImageWidth;
@@ -1519,25 +1522,12 @@ namespace Extender
             EdSpectrumSettings.EdSettings.EnergyRange = 20;
             EdSpectrumSettings.EdSettings.NumberOfChannels = 4096;
 
-            EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreateFullFieldRegion(1.0 / 1024.0);
+            //EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreateFullFieldRegion(1.0 / 1024.0);
         }
 
         void SetPointAcquistionRegion(double a_nX, double a_nY)
         {
-            //Chord chord = new Chord(a_nX, a_nY, 1);
-            //List < Chord > chords = new List < Chord> ();
-            //chords.Add(chord);
-
-            //ChordList chordsList = null;
-            //if (m_nImageWidth != 0)
-            //{
-            //    chordsList = new ChordList(chords, 1 / (double)m_nImageWidth);
-            //}
-            //else
-            //{
-            //    chordsList = new ChordList(chords, 1 / 1024.0);
-            //}
-            //EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreateChordListRegion(chordsList);
+            
             EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreatePointRegion(new System.Windows.Point(a_nX, a_nY));
         }
 
@@ -1719,7 +1709,7 @@ namespace Extender
            
             SetXrayAcquisitionParam(ref dMilliSecondsTime);
           
-            SetPointAcquistionRegion(x, y);
+            SetPointAcquistionRegion(x*m_dImagePixelsize, y*m_dImagePixelsize);
             NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
             log.Info("开始XrayStartAcquisition:t="+dMilliSecondsTime.ToString()+"pos="+"("+x.ToString()+","+y.ToString()+")");
 

+ 9 - 17
MeasureThread/Measure.cs

@@ -5467,11 +5467,11 @@ namespace MeasureThread
         /// <summary>
         /// 做能谱分析
         /// </summary>
-        /// <param name="a_FieldID">分析点视场ID,索引号</param>
-        /// <param name="a_FieldName">分析点视场名称</param>
+        /// <param name="a_CutHoleID">分析点视场ID,索引号</param>
+        /// <param name="a_CutHoleName">分析点视场名称</param>
         /// <param name="a_FieldImagePositionID">分析点的视场位置ID,图像处理会返回多个Xray分析点,但我们这里只取第一个点所在的视场</param>
         /// <returns>成功或失败</returns>
-        public bool DoEDS(int a_FieldID, string a_FieldName, int a_FieldImagePositionID)
+        public bool DoEDS(int a_CutHoleID, string a_CutHoleName, int a_FieldImagePositionID)
         {
             try
             {
@@ -5527,7 +5527,7 @@ namespace MeasureThread
                             return false;
                         }
                         log.Info("返回 listPoints=" + listPoints.Count.ToString(), true);
-                        if (!m_MeasDB.InsertAnylysisField(a_FieldID, a_FieldName, EDS_path, listPoints.Count, listFeature.Count, a_FieldImagePositionID))
+                        if (!m_MeasDB.InsertAnylysisField(a_CutHoleID, a_CutHoleName, EDS_path, listPoints.Count, listFeature.Count, a_FieldImagePositionID))
                         {
                             log.Error("插入分析视场失败", false);
                         }
@@ -5541,16 +5541,8 @@ namespace MeasureThread
                         {
                             XrayData = new long[2000];
                             listElement = new Dictionary<string, double>();
-                            double realPointX, realPointY;
-
-
-
-                            double currentPixelSize = iSEM.GetPixelSize();
-
-                            log.Info("当前PixelSize:" + currentPixelSize.ToString());
-                            realPointX = Convert.ToDouble(pt.X * currentPixelSize);
-                            realPointY = pt.Y * currentPixelSize;
-                            if (iExtender.XrayPointCollecting(param.PointTime, realPointX, realPointY, out XrayData, out listElement))
+                          
+                            if (iExtender.XrayPointCollecting(param.PointTime, pt.X, pt.Y , out XrayData, out listElement))
                             {
                                 string ele = "";
                                 foreach (var s in listElement)
@@ -5561,7 +5553,7 @@ namespace MeasureThread
                                 //写入数据库
                                 m_nXrayId++;
                                 log.Info("点采集结束,写入数据库开始--" + m_nXrayId.ToString(), true);
-                                Boolean ret = m_MeasDB.InsertAPointXray(a_FieldID, m_nXrayId, pt.X, pt.Y, XrayData, listElement, a_FieldImagePositionID);
+                                Boolean ret = m_MeasDB.InsertAPointXray(a_CutHoleID, m_nXrayId, pt.X, pt.Y, XrayData, listElement, a_FieldImagePositionID);
                                 Thread.Sleep(1000);
                             }
 
@@ -5632,7 +5624,7 @@ namespace MeasureThread
                                 m_nXrayId++;
 
                                 AreasNo++;
-                                m_MeasDB.InsertAAreaXay(a_FieldID, m_nXrayId, AreasNo, listSeg, XrayData, listElement, a_FieldImagePositionID);
+                                m_MeasDB.InsertAAreaXay(a_CutHoleID, m_nXrayId, AreasNo, listSeg, XrayData, listElement, a_FieldImagePositionID);
 
 
 
@@ -5695,7 +5687,7 @@ namespace MeasureThread
                                 m_nXrayId++;
 
                                 AreasNo++;
-                                m_MeasDB.InsertAAreaXay(a_FieldID, m_nXrayId, AreasNo, listSeg, XrayData, listElement, a_FieldImagePositionID);
+                                m_MeasDB.InsertAAreaXay(a_CutHoleID, m_nXrayId, AreasNo, listSeg, XrayData, listElement, a_FieldImagePositionID);
                             }
                             else
                             {