Quellcode durchsuchen

update the invalid particle identify algorithm.

gsp vor 1 Jahr
Ursprung
Commit
45d57431af

BIN
Bin/x64/Debug/Config/SysData/IncSysLib/IncASTDData.db


BIN
Bin/x64/Debug/Config/SysData/IncSysLib/普通钢/IncASTDData.db


BIN
Bin/x64/Debug/Config/SysData/IncSysLib/高氮高铝钢/IncASTDData.db


+ 12 - 0
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.cpp

@@ -284,10 +284,13 @@ namespace OTSClassifyEngine
 		double dSumKeyElements = 0;
 		double dSumSubElements = 0;
 		double dCarbonMolar = 0;
+		double dCarbonWeight = 0;
 		double dNbMolar = 0;
 		double dOMolar = 0;
+		double dOweight = 0;
 		double dSiMolar = 0;
 		double dFeMolar = 0;
+		double dFeWeight = 0;
 		for (auto pElChem : a_listElementChemistries)
 		{
 			// create a new element chemistry
@@ -315,6 +318,7 @@ namespace OTSClassifyEngine
 				if (pElChem->GetName().CompareNoCase(STR_O) == 0)
 				{
 					dOMolar = pElChem->GetMolarPercentage();
+					dOweight = pElChem->GetPercentage();
 				}
 				
 			}
@@ -353,10 +357,12 @@ namespace OTSClassifyEngine
 			else if (pElChem->GetName().CompareNoCase(STR_FE) == 0)
 			{
 				dFeMolar = pElChem->GetMolarPercentage();
+				dFeWeight = pElChem->GetPercentage();
 			}
 			else if (pElChem->GetName().CompareNoCase(STR_C) == 0)
 			{
 				dCarbonMolar = pElChem->GetMolarPercentage();
+				dCarbonWeight = pElChem->GetPercentage();
 			}
 			
 			
@@ -415,6 +421,12 @@ namespace OTSClassifyEngine
 			a_nIncId = OTS_PARTICLE_TYPE::INVALID;
 			return TRUE;
 		}
+		double sumOfCarboOxideFe = dOweight + dCarbonWeight + dFeWeight;
+		if (sumOfCarboOxideFe > 60)
+		{
+			a_nIncId = OTS_PARTICLE_TYPE::INVALID;
+			return TRUE;
+		}
 
 		if (dSumKeyElementsMolar > INC_KEY_ELEMENT_TOTAL_100 && dSumSubElementsMolar > INC_SUB_ELEMENT_TOTAL_100)
 		{

+ 0 - 1680
OxfordExtenderWrapper/ExtenderWrapper1.cs

@@ -1,1680 +0,0 @@
-
-using OINA.Extender;
-using OINA.Extender.Acquisition;
-using OINA.Extender.Acquisition.Ed;
-using OINA.Extender.Acquisition.Image;
-using OINA.Extender.Data;
-using OINA.Extender.Data.Ed;
-using OINA.Extender.Data.Image;
-using OINA.Extender.MicroscopeControl;
-using OINA.Extender.Processing;
-using OINA.Extender.Processing.Ed;
-using OINA.Extender.Processing.Quant;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Windows.Forms;
-
-
-namespace OxfordExtenderWrapper
-{
-   
-    public class ExtenderWrapper1:MarshalByRefObject
-    {
-
-        NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
-        private Thread controlThread;
-        AutoResetEvent startEvent = new AutoResetEvent(false);
-        AutoResetEvent endEvent = new AutoResetEvent(false);
-        private oxfordCommandData currentCommand;
-
-        #region 电镜控制、样品台
-        //控制电镜
-        private IMicroscopeController microscopeController = null;
-        /// <summary>
-        /// IImageAcquisitionController object
-        /// </summary>
-        private IImageAcquisitionController imageAcquisitionController = null;
-
-        /// <summary>
-        /// IImageSettings object
-        /// </summary>
-        private IImageAcquisitionSettings imageAcquisitionSettings = null;
-        //控制器
-        private IEdSpectrumAcquisitionController EdSpectrumAcquisitionController = null;
-        private IEdSpectrumSettings EdSpectrumSettings = null;
-        private IEdSpectrumProcessing EdSpectrumProcessing = null;
-        // Use the autoIdSettings to define elements that are known or elements that you want to exclude. They also list elements that cannot be identified
-        private IAutoIdSettings autoIdSettings = null;
-        private ISEMQuantSettings quantSettings = null;
-
-        //private IEdChordListAcquisitionController _edsChordListController = null;
-        //private OxfordControllerState m_nState;
-        private IEdChordListSettings _edsChordListSetting;
-        private int XRayChannelLength = 2000;
-
-        private int EDSColletionTimeOut = 10000;
-  
-
-        const int g_nOxfordControllerProcessTime = 4;
-        const int g_nOxfordControllerEnergyRange = 20;
-
-
-        private bool m_bXrayDone = false;
-        //电压
-        private double m_dHighVoltage;
-        //放大倍数
-        private double m_dMagnification;
-        //工作距离
-        private double m_dWorkingDistance;
-        //亮度
-        private double m_dBirghtness;
-        //对比度
-        private double m_dContrast;
-        //BeamOn
-        private bool m_bBeamOn;
-        //FilamentOn
-        private bool m_bFilamentOn;
-
-        //样品台位置
-        private double m_dStageX;
-        private double m_dStageY;
-        private double m_dStageZ;
-        private double m_dStageR;
-        private double m_dStageT;
-
-
-
-        //构造函数
-        public ExtenderWrapper1()
-        {
-           
-        }
-        public bool ConnectToEDSHardware()
-        {
-            try
-            {
-                InitMicroscopeController();
-                InitImageAcquisition();
-                InitXrayAcquistion();
-
-                controlThread = new Thread(this.ControlerThread);
-                controlThread.Start();
-                return true;
-            }
-            catch (Exception e)
-            {
-                log.Error(e.Message);
-                return false;
-            }
-           
-
-        }
-       
-        //结束
-        public void CloseExtender()
-        {
-            CloseMicroscopeController();
-            CloseImageAcquisition();
-            CloaseXrayAcquistion();
-            currentCommand.commandType = OxfordCommandType.Exit;
-            if (controlThread != null)
-            {
-                startEvent.Set();
-                controlThread.Join();
-            }
-            controlThread = null;
-
-
-        }
-        private void ControlerThread()
-        {
-
-            while (true)
-            {
-
-                while (true)
-                {
-                    if (startEvent.WaitOne(0, true))
-                    {
-
-                        break;
-                    }
-                  
-                    Application.DoEvents();
-                }
-
-
-                switch (currentCommand.commandType)
-                {
-                    case OxfordCommandType.MoveStageXY:
-                        {
-                            MoveStageParam p = currentCommand.moveStagePrm;
-
-                          
-                            var stageDictionary = new Dictionary<Stage, double>
-                            {
-                                { Stage.StageX, (double)p.x/1000.0 },
-                                { Stage.StageY, (double)p.y /1000.0}
-                            };
-                            m_StageUpdated = false;
-                            this.microscopeController.SetStageConditions(stageDictionary);
-                            currentCommand.returnType = true;
-
-                            int time1 = Environment.TickCount;
-                            int time2;
-                            while (!m_StageUpdated)
-                            {
-                                Application.DoEvents();
-                             
-                                time2 = Environment.TickCount;
-                                if (time2 - time1 > 20000)
-                                {
-                                    currentCommand.returnType = false;
-                                    break;
-                                }
-                            }
-                           
-
-                          
-                            
-                            endEvent.Set();
-                        }
-                        break;
-                    case OxfordCommandType.ImageAquisition:
-                        {
-                            ImageAquistionParam p = currentCommand.grabImgParam;
-                            SetImageAcquistionSetting(p.DwellTime, p.sourceType, p.width);
-
-
-                            try
-                            {
-                                int lastingTime = 0;
-                                m_bAcquistionDone = false;
-                                imageAcquisitionController.BeginMultipleAcquisition();
-                                IEnumerable<IElectronImage> images = imageAcquisitionController.StartAcquisition(imageAcquisitionSettings);
-
-
-
-                                var time1 = Environment.TickCount;
-                                while (true)
-                                {
-                                    if (m_bAcquistionDone)
-                                    {
-                                        p.ImageData = m_ImageBit;
-                                        currentCommand.returnType = true;
-
-                                        break;
-                                    }
-                                    Application.DoEvents();
-
-                                  
-                                    var time2 = Environment.TickCount;
-                                    if (time2 - time1 > EDSColletionTimeOut * 6)
-                                    {
-                                        currentCommand.returnType = false;
-                                    }
-                                }
-                            }
-                            catch (InvalidSettingsException settingsException)
-                            {
-                                var sb = new StringBuilder(@"Invalid settings have been supplied: ");
-                                sb.AppendLine();
-                                settingsException.ValidationResults.ValidationErrors.ToList().ForEach(ve => sb.AppendFormat("{0}{1}", Environment.NewLine, ve));
-
-                                NLog.LogManager.GetCurrentClassLogger().Error(sb.ToString());
-                            }
-                            catch (AcquisitionStartException startException)
-                            {
-                                string msg = string.Format(@"AcquisitionStartException: {0}", startException.Message);
-                                NLog.LogManager.GetCurrentClassLogger().Error(msg);
-                            }
-
-                            endEvent.Set();
-                        }
-                        break;
-
-                    case OxfordCommandType.XrayPointCollection:
-                        {
-                            PointXrayParam p = currentCommand.pointXrayPrm;
-
-                            m_bXrayDone = false;
-
-                            p.XrayData = new uint[XRayChannelLength];
-                            p.listElement = new Dictionary<string, double>();
-
-                            SetXrayAcquisitionParam(p.dMilliSecondsTime);
-
-                         
-                            EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreatePointRegion(new System.Windows.Point(p.x * m_dImagePixelsize, p.y * m_dImagePixelsize));
-                            NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
-
-                            
-                            try
-                            {
-                                m_bXrayDone = false;
-                                var time1 = Environment.TickCount;
-
-                                IEdSpectrum edSpectrum = EdSpectrumAcquisitionController.StartAcquisition(EdSpectrumSettings);
-                             
-
-                                while (true)
-                                {
-                                   
-                                    if (m_bXrayDone)
-                                    {
-
-                                        currentCommand.returnType = true;
-                                        break;
-                                    }
-                                    Application.DoEvents();
-
-                                    var time2 = Environment.TickCount;
-                                    if (time2 - time1 > EDSColletionTimeOut * 2)
-                                    {
-                                        EdSpectrumAcquisitionController.EndMultipleAcquisition();
-                                        log.Warn("XrayStartAcquisition 超时!");
-
-                                        currentCommand.returnType = false;
-                                    }
-
-
-
-                                }
-
-
-                            }
-                            catch (InvalidSettingsException invalidSettingsException)
-                            {
-
-                                string msg = string.Format(@"Invalid Settings Exception:{0}, {1}",
-                                    invalidSettingsException.Message,
-                                    invalidSettingsException.ValidationResults.ValidationErrors);
-                                log.Error(msg);
-                            }
-                            catch (AcquisitionStartException acquisitionStartException)
-                            {
-
-                                string msg = string.Format(@"Acquisition Start Exception:{0}", acquisitionStartException.Message);
-                                log.Error(msg);
-                            }
-                           
-                            endEvent.Set();
-                        }
-                        break;
-                    case OxfordCommandType.COLLECT_XRAYPOINTS:
-                        {
-                            var p = currentCommand.XrayPrmForPoints;
-
-                           
-                            var PointXrayDatas = currentCommand.XrayPrmForPoints;
-                            currentCommand.PointXrayDataReceived = 0;
-                         
-                            m_bXrayDone = false;
-                       
-
-                            var dMilliSecondsTime = PointXrayDatas[0].dMilliSecondsTime;
-                            SetXrayAcquisitionParam(dMilliSecondsTime);
-                            foreach (var prm in PointXrayDatas)
-                            {
-
-                              
-                                EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreatePointRegion(new System.Windows.Point(prm.x * m_dImagePixelsize, prm.y * m_dImagePixelsize));
-
-                                //log.Info("开始XrayStartAcquisition:t=" + dMilliSecondsTime.ToString() + "pos=" + "(" + prm.x.ToString() + "," + prm.y.ToString() + ")");
-
-                                try
-                                {
-                                    m_bXrayDone = false;
-
-
-                                    IEdSpectrum edSpectrum = EdSpectrumAcquisitionController.StartAcquisition(EdSpectrumSettings);
-            
-
-                                }
-                                catch (InvalidSettingsException invalidSettingsException)
-                                {
-
-                                    string msg = string.Format(@"Invalid Settings Exception:{0}, {1}",
-                                        invalidSettingsException.Message,
-                                        invalidSettingsException.ValidationResults.ValidationErrors);
-                                    log.Error(msg);
-                                }
-                                catch (AcquisitionStartException acquisitionStartException)
-                                {
-
-                                    string msg = string.Format(@"Acquisition Start Exception:{0}", acquisitionStartException.Message);
-                                    log.Error(msg);
-                                }
-
-
-
-                            }
-
-                            var time1 = Environment.TickCount;
-                            while (true)
-                            {
-                                if (m_bXrayDone)
-                                {
-                                    currentCommand.returnType = true;
-                                    break;
-                                }
-                                Application.DoEvents();
-
-                              
-                                var time2 = Environment.TickCount;
-                                if (time2 - time1 > PointXrayDatas[0].dMilliSecondsTime * 5* PointXrayDatas.Count)
-                                {
-                                    EdSpectrumAcquisitionController.EndMultipleAcquisition();
-                                    log.Warn("XrayStartAcquisition 超时!");
-                                    currentCommand.returnType = false;
-                                }
-                            }
-
-                            endEvent.Set();
-                        }
-                        break;
-                    case OxfordCommandType.XrayAreaCollection:
-                        {
-                            AreaXrayParam p = currentCommand.areaXrayPrm;
-                          
-                            
-                            m_bXrayDone = false;
-
-                            SetXrayAcquisitionParam(p.dMilliSecondsTime);
-                            List<Chord> Chords = new List<Chord>();
-
-                            foreach (Segment seg in p.a_listChord)
-                            {
-                                Chord chord = new Chord(seg.X, seg.Y, seg.Length);
-                                Chords.Add(chord);
-                            }
-                            SetAreaAcquistionRegion(Chords);
-
-                            try
-                            {
-                                int lastingTime = 0;
-                                IEdSpectrum edSpectrum = EdSpectrumAcquisitionController.StartAcquisition(EdSpectrumSettings);
-
-                                var time1 = Environment.TickCount;
-                                while (true)
-                                {
-                                    if (m_bXrayDone)
-                                    {
-                                       
-                                        currentCommand.returnType = true;
-                                        break;
-                                    }
-
-                                   
-                                    Application.DoEvents();
-                                    var time2 = Environment.TickCount;
-                                    if (time2 - time1 > p.dMilliSecondsTime * 10)
-                                    {
-                                        currentCommand.returnType = false;
-                                       
-                                    }
-                                }
-                            }
-                            catch (InvalidSettingsException invalidSettingsException)
-                            {
-                                string msg = string.Format(@"Invalid Settings Exception:{0}, {1}",
-                                    invalidSettingsException.Message,
-                                    invalidSettingsException.ValidationResults.ValidationErrors);
-                                log.Error(msg);
-                            }
-                            catch (AcquisitionStartException acquisitionStartException)
-                            {
-                                string msg = string.Format(@"Acquisition Start Exception:{0}", acquisitionStartException.Message);
-                                log.Error(msg);
-                            }
-                            
-                            endEvent.Set();
-                        }
-                        break;
-                    case OxfordCommandType.COLLECT_XRAYFEATURES:
-                        {
-                            var p = currentCommand.XrayPrmForFeatures;
-                            currentCommand.AreaXrayDataReceived = 0;                      
-                          
-                            m_bXrayDone = false;
-                            int lastingTime = 0;
-
-                            var dMilliSecondsTime = p[0].dMilliSecondsTime;
-                            SetXrayAcquisitionParam(p[0].dMilliSecondsTime);
-                            foreach (var prm in p)
-                            {
-                                List<Chord> Chords = new List<Chord>();
-
-                                foreach (Segment seg in prm.a_listChord)
-                                {
-                                    Chord chord = new Chord(seg.X, seg.Y, seg.Length);
-                                    Chords.Add(chord);
-                                }
-                                SetAreaAcquistionRegion(Chords);
-
-                                try
-                                {
-                                    m_bXrayDone = false;
-
-
-                                    IEdSpectrum edSpectrum = EdSpectrumAcquisitionController.StartAcquisition(EdSpectrumSettings);
-
-                                }
-                                catch (InvalidSettingsException invalidSettingsException)
-                                {
-
-                                    string msg = string.Format(@"Invalid Settings Exception:{0}, {1}",
-                                        invalidSettingsException.Message,
-                                        invalidSettingsException.ValidationResults.ValidationErrors);
-                                    log.Error(msg);
-                                }
-                                catch (AcquisitionStartException acquisitionStartException)
-                                {
-
-                                    string msg = string.Format(@"Acquisition Start Exception:{0}", acquisitionStartException.Message);
-                                    log.Error(msg);
-                                }
-
-
-
-                            }
-
-                            var time1 = Environment.TickCount;
-                            while (true)
-                            {
-                                if (m_bXrayDone)
-                                {
-                                    currentCommand.returnType = true;
-
-                                    break;
-                                }
-                                Application.DoEvents();                              
-                                var time2 = Environment.TickCount;
-                                if (time2 - time1 > p[0].dMilliSecondsTime * 5* p.Count)
-                                {
-                                    EdSpectrumAcquisitionController.EndMultipleAcquisition();
-                                    log.Warn("XrayStartAcquisition 超时!");
-                                    //return false;
-                                    currentCommand.returnType = false;
-                                }
-                            }
-
-
-                            endEvent.Set();
-                        }
-                        break;
-                   
-                    case OxfordCommandType.Exit:
-                        {
-                            endEvent.Set();
-                            log.Info("receive exit command");
-                        }
-                        break;
-
-                }
-                if (currentCommand.commandType == OxfordCommandType.Exit)
-                {
-                    log.Info("exiting the thread");
-                    break;
-                }
-            }
-
-
-        }
-        public bool AquisitionImage(ref ImageAquistionParam p)
-        {
-            currentCommand.grabImgParam = p;
-            currentCommand.commandType = OxfordCommandType.ImageAquisition;
-
-            SetImageAcquistionSetting(p.DwellTime, p.sourceType, p.width);
-
-
-            try
-            {
-                int lastingTime = 0;
-                m_bAcquistionDone = false;
-                imageAcquisitionController.BeginMultipleAcquisition();
-                IEnumerable<IElectronImage> images = imageAcquisitionController.StartAcquisition(imageAcquisitionSettings);
-
-
-                var time1 = Environment.TickCount;
-                while (true)
-                {
-                    if (m_bAcquistionDone)
-                    {
-                        p.ImageData = m_ImageBit;
-                        currentCommand.returnType = true;
-
-                        break;
-                    }
-                    Application.DoEvents();
-
-                    //Thread.Sleep(100);
-                    var time2 = Environment.TickCount;
-                    if (time2 - time1 > EDSColletionTimeOut * 6)
-                    {
-                        currentCommand.returnType = false;
-                        break;
-                    }
-                }
-            }
-            catch (InvalidSettingsException settingsException)
-            {
-                var sb = new StringBuilder(@"Invalid settings have been supplied: ");
-                sb.AppendLine();
-                settingsException.ValidationResults.ValidationErrors.ToList().ForEach(ve => sb.AppendFormat("{0}{1}", Environment.NewLine, ve));
-
-                NLog.LogManager.GetCurrentClassLogger().Error(sb.ToString());
-            }
-            catch (AcquisitionStartException startException)
-            {
-                string msg = string.Format(@"AcquisitionStartException: {0}", startException.Message);
-                NLog.LogManager.GetCurrentClassLogger().Error(msg);
-            }
-            imageAcquisitionController.EndMultipleAcquisition();
-            if (currentCommand.returnType == true)
-            {
-
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-
-
-        }
-        public bool MoveStageXY(float x, float y)
-        {
-            currentCommand.moveStagePrm = new MoveStageParam();
-            currentCommand.moveStagePrm.x = x;
-            currentCommand.moveStagePrm.y = y;
-            currentCommand.commandType = OxfordCommandType.MoveStageXY;
-            startEvent.Set();
-            while (true)
-            {
-                if (endEvent.WaitOne(0, false))
-                {
-                    break;
-                }
-            }
-            if (currentCommand.returnType == true)
-            {
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-
-        }
-        public bool XrayAreaCollecting(ref AreaXrayParam p)
-        {
-           
-            currentCommand.areaXrayPrm = p;
-            currentCommand.commandType = OxfordCommandType.XrayAreaCollection;
-            startEvent.Set();
-            while (true)
-            {
-                if (endEvent.WaitOne(0, false))
-                {
-                    break;
-                }
-            }
-            if (currentCommand.returnType == true)
-            {
-
-                return true;
-            }
-            else
-            {
-
-                return false;
-            }
-        }
-        public bool XrayPointCollecting(ref PointXrayParam p)
-        {
-
-            currentCommand.pointXrayPrm = p;
-            currentCommand.commandType = OxfordCommandType.XrayPointCollection;
-            startEvent.Set();
-            while (true)
-            {
-                if (endEvent.WaitOne(0, false))
-                {
-                    break;
-                }
-                Application.DoEvents();
-            }
-            if (currentCommand.returnType == true)
-            {
-
-                return true;
-            }
-            else
-            {
-
-                return false;
-            }
-        }
-        public bool CollectXrayByPoints(ref List<PointXrayParam> a_listPoints, uint a_nXRayAQTime, bool a_bElementInfo)
-        {
-            foreach (var prm in a_listPoints)
-            {
-
-                prm.b_quant = a_bElementInfo;
-                prm.dMilliSecondsTime = a_nXRayAQTime;
-            }
-
-            currentCommand.XrayPrmForPoints = a_listPoints;
-            
-
-
-
-                currentCommand.commandType = OxfordCommandType.COLLECT_XRAYPOINTS;
-            startEvent.Set();
-
-            while (true)
-            {
-                if (endEvent.WaitOne(0, false))
-                {
-                    break;
-                }
-                Application.DoEvents();
-            }
-            if (currentCommand.returnType == true)
-            {
-               
-                return true;
-            }
-            else
-            {
-
-                return false;
-            }
-        }
-        public bool CollectXrayByFeatures(ref List<AreaXrayParam> a_listFeatures, double a_nXRayAQTime, bool a_bElementInfo)
-        {
-
-            foreach (var prm in a_listFeatures)
-            {
-
-                prm.b_quant = a_bElementInfo;
-                prm.dMilliSecondsTime = a_nXRayAQTime;
-            }
-            currentCommand.XrayPrmForFeatures = a_listFeatures;
-
-
-            currentCommand.commandType = OxfordCommandType.COLLECT_XRAYFEATURES;
-            startEvent.Set();
-
-            while (true)
-            {
-                if (endEvent.WaitOne(0, false))
-                {
-                    break;
-                }
-
-            }
-            if (currentCommand.returnType == true)
-            {
-                a_listFeatures = currentCommand.XrayPrmForFeatures;
-                return true;
-            }
-            else
-            {
-
-                return false;
-            }
-
-
-        }
-       
-       
-
-        internal oxfordCommandData GetCurrentCommand()
-        {
-            return currentCommand;
-        }
-
-        internal void SetCurrentCommand(oxfordCommandData value)
-        {
-            currentCommand = value;
-        }
-
-        //控制电镜初始化
-        void InitMicroscopeController()
-        {
-            this.microscopeController = AcquireFactory.CreateMicroscopeControl();
-            //this.microscopeController.ColumnChange += this.OnMicroscopeColumnChange;
-            //this.microscopeController.StageChange += this.OnMicroscopeStageChange;
-            this.microscopeController.ColumnConnected += this.OnMicroscopeColumnConnected;
-            this.microscopeController.StageConnected += this.OnMicroscopeStageConnected;
-            this.microscopeController.ChangeCompleted += this.OnMicroscopeChangeCompleted;
-
-            ReadMicroscopeColumn();
-            ReadStage();
-
-        }
-
-        //控制电镜释放
-        void CloseMicroscopeController()
-        {
-            if (microscopeController != null)
-            {
-              
-                //this.microscopeController.ColumnChange -= this.OnMicroscopeColumnChange;
-                //this.microscopeController.StageChange -= this.OnMicroscopeStageChange;
-                this.microscopeController.ColumnConnected -= this.OnMicroscopeColumnConnected;
-                this.microscopeController.StageConnected -= this.OnMicroscopeStageConnected;
-                this.microscopeController.ChangeCompleted -= this.OnMicroscopeChangeCompleted;
-                microscopeController = null;
-            }
-           
-        }
-
-        //读取当前的电镜控制值
-        private void ReadMicroscopeColumn()
-        {
-            var columnCapabilities = this.microscopeController.ColumnCapabilities;
-            var columnConditions = this.microscopeController.ColumnConditions;
-
-            if (columnCapabilities.Magnification.CanRead)
-            {
-                m_dMagnification = columnConditions.Magnification;
-            }
-
-            if (columnCapabilities.WorkingDistance.CanRead)
-            {
-                m_dWorkingDistance = columnConditions.WorkingDistance;
-            }
-
-            if (columnCapabilities.HighVoltage.CanRead)
-            {
-                m_dHighVoltage = columnConditions.HighVoltage;
-            }
-
-            if (columnCapabilities.Brightness.CanRead)
-            {
-                m_dBirghtness = columnConditions.Brightness;
-            }
-
-            if (columnCapabilities.Contrast.CanRead)
-            {
-                m_dContrast = columnConditions.Contrast;
-            }
-
-            if (columnCapabilities.BeamOn.CanRead)
-            {
-                m_bBeamOn = Convert.ToBoolean(columnConditions.BeamOn);
-            }
-
-            if (columnCapabilities.FilamentOn.CanRead)
-            {
-                m_bFilamentOn = Convert.ToBoolean(columnConditions.FilamentOn);
-            }
-        }
-
-        //读取样品台位置
-        private void ReadStage()
-        {
-            var stageCapabilities = this.microscopeController.StageCapabilities;
-            var stageConditions = this.microscopeController.StageConditions;
-
-            if (stageCapabilities.StageX.CanRead)
-            {
-                this.m_dStageX = stageConditions.StageX*1000.0;
-            }
-
-            if (stageCapabilities.StageY.CanRead)
-            {
-                this.m_dStageY = stageConditions.StageY*1000.0;
-            }
-
-            if (stageCapabilities.StageZ.CanRead)
-            {
-                this.m_dStageZ = stageConditions.StageZ;
-            }
-
-            if (stageCapabilities.StageT.CanRead)
-            {
-                this.m_dStageT = stageConditions.StageT;
-            }
-
-            if (stageCapabilities.StageR.CanRead)
-            {
-                this.m_dStageR = stageConditions.StageR;
-            }
-        }
-
-        //电镜控制改变事件
-        private void OnMicroscopeColumnChange(object sender, EventArgs e)
-        {
-          
-            //ReadMicroscopeColumn();
-        }
-
-        //样品台控制改变事件
-        private void OnMicroscopeStageChange(object sender, EventArgs e)
-        {
-
-            //ReadStage();
-        }
-
-        //列控制连接或断开时的事件
-        private void OnMicroscopeColumnConnected(object sender, EventArgs e)
-        {
-            ReadMicroscopeColumn();
-        }
-
-        //样品台控制连接或断开时的事件
-        private void OnMicroscopeStageConnected(object sender, EventArgs e)
-        {
-          
-            ReadStage();
-        }
-
-        //样品台控制、电镜控制、外围控制的事件改变完成
-        private void OnMicroscopeChangeCompleted(object sender, CompletedEventArgs e)
-        {
-            if (e.Control == MicroscopeControlType.Stage)
-            {
-                if (e.Success)
-                {
-
-                    m_StageUpdated = true;
-
-                }
-
-            }
-            else if (e.Control == MicroscopeControlType.Column)
-            {
-                if (e.Success)
-                {
-                    m_CollumnUpdated = true;
-                }
-
-            }
-            else if (e.Control == MicroscopeControlType.ExternalScan)
-            {
-                if (e.Success)
-                {
-                    m_ExternalScanUpdated = true;
-                }
-
-            }
-            ReadMicroscopeColumn();
-            ReadStage();
-        }
-
-        public float GetMagnification()
-        {
-            return (float)m_dMagnification;
-        }
-        public Boolean SetMagnification(float set)
-        {
-            Dictionary<Column, double> columnDictionary = new Dictionary<Column, double>
-            {
-                { Column.Magnification, (double)set }
-
-            };
-
-            this.microscopeController.SetColumnConditions(columnDictionary);
-            return true;
-        }
-
-        //焦距
-        public float GetWorkingDistance()
-        {
-            return (float)m_dWorkingDistance;
-        }
-        public Boolean SetWorkingDistance(float set)
-        {
-            Dictionary<Column, double> columnDictionary = new Dictionary<Column, double>
-            {
-                { Column.WorkingDistance, (double)set }
-
-            };
-
-            this.microscopeController.SetColumnConditions(columnDictionary);
-            return true;
-        }
-
-        //亮度
-        public float GetBrightness()
-        {
-
-            return (float)m_dBirghtness;
-        }
-        public Boolean SetBrightness(float set)
-        {
-            Dictionary<Column, double> columnDictionary = new Dictionary<Column, double>
-            {
-                { Column.Brightness, (double)set }
-
-            };
-
-            this.microscopeController.SetColumnConditions(columnDictionary);
-            return true;
-        }
-
-        //对比度
-        public float GetContrast()
-        {
-            return (float)m_dContrast;
-        }
-        public Boolean SetContrast(float set)
-        {
-            Dictionary<Column, double> columnDictionary = new Dictionary<Column, double>
-            {
-                { Column.Contrast, (double)set }
-
-            };
-
-            this.microscopeController.SetColumnConditions(columnDictionary);
-
-            return true;
-        }
-
-        //SEM电压
-        public float GetSEMVoltage()
-        {
-            return (float)m_dHighVoltage;
-        }
-        public Boolean SetSEMVoltage(float set)
-        {
-            Dictionary<Column, double> columnDictionary = new Dictionary<Column, double>
-            {
-                { Column.HighVoltage, (double)set }
-
-            };
-
-            this.microscopeController.SetColumnConditions(columnDictionary);
-            return true;
-        }
-        public bool SetSemScanExternal(bool b)
-        {
-            this.microscopeController.SetExternalScan(b);
-            return true;
-        }
-       
-        //样品台
-        public float[] GetStagePosition()
-        {
-            float[] ret = new float[5];
-
-            ret[0] = (float)m_dStageX;
-            ret[1] = (float)m_dStageY;
-            ret[2] = (float)m_dStageZ;
-            ret[3] = (float)m_dStageT;
-            ret[4] = (float)m_dStageR;
-
-            return ret;
-        }
-        public Boolean SetStagePosition(float[] set)
-        {
-            double stageX = (double)set[0];
-            double stageY = (double)set[1];
-            double stageZ = (double)set[2];
-            double stageT = (double)set[3];
-            double stageR = (double)set[4];
-            
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageX, (double)stageX/1000.0 },
-                { Stage.StageY, (double)stageY/1000.0 },
-                { Stage.StageZ, (double)stageZ },
-                { Stage.StageT, (double)stageT },
-                { Stage.StageR, (double)stageR }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        public float GetStageAtX()
-        {
-            return (float)m_dStageX;
-        }
-        public float GetStageAtY()
-        {
-            return (float)m_dStageY;
-        }
-        public float GetStageAtZ()
-        {
-            return (float)m_dStageZ;
-        }
-        public float GetStageAtT()
-        {
-            return (float)m_dStageT;
-        }
-        public float GetStageAtR()
-        {
-            return (float)m_dStageR;
-        }
-
-        public Boolean SetStageGotoX(float set)
-        {
-            double stageX = (double)set;
-
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageX, (double)stageX/1000.0 }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        public Boolean SetStageGotoY(float set)
-        {
-
-            double stageY = (double)set;
-   
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageY, (double)stageY/1000.0 }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        public Boolean SetStageGotoZ(float set)
-        {
-            double stageZ = (double)set;
-       
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageZ, (double)stageZ }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        public Boolean SetStageGotoT(float set)
-        {
-            double stageT = (double)set;
-      
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageT, (double)stageT }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        public Boolean SetStageGotoR(float set)
-        {
-            double stageR = (double)set;
-         
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageR, (double)stageR }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        private Boolean MoveStage(float x, float y)
-        {
-            double stageX = (double)x;
-        
-            double stageY = (double)y;
-           
-
-            var stageDictionary = new Dictionary<Stage, double>
-            {
-                { Stage.StageX, (double)stageX },
-                { Stage.StageY, (double)stageY }
-            };
-
-            this.microscopeController.SetStageConditions(stageDictionary);
-            return true;
-        }
-        #endregion
-
-        #region 拍图
-       
-
-        //图像扫描尺寸
-        public double[] ImageScanSize =
-        {
-            32,
-            64,
-            128,
-            256,
-            512,
-            704,
-            768,
-            1024,
-            4096,
-            8192
-        };
-
-        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 bool m_StageUpdated;
-        private bool m_CollumnUpdated;
-        private bool m_ExternalScanUpdated;
-        private double dImagePixelsize;
-
-        public double GetDImagePixelsize()
-        {
-            return m_dImagePixelsize;
-        }
-
-        internal void SetDImagePixelsize(double value)
-        {
-            m_dImagePixelsize = value;
-        }
-
-        //private Bitmap m_Bitmap = null;
-
-
-        void InitImageAcquisition()
-        {
-
-            imageAcquisitionController = AcquireFactory.CreateImageServer();
-            imageAcquisitionSettings = AcquireFactory.CreateImageSettings();
-            //imageAcquisitionSettings.
-            //imageAcquisitionController.ExperimentStarted += this.OnImageExperimentStarted;
-            imageAcquisitionController.ExperimentFinished += this.OnImageExperimentFinished;
-
-        }
-        void InitXrayAcquistion()
-        {
-            EdSpectrumSettings = AcquireFactory.CreateEdSpectrumSettings();
-            EdSpectrumAcquisitionController = AcquireFactory.CreateEdSpectrumServer();
-            EdSpectrumProcessing = ProcessingFactory.CreateSpectrumProcessing();
-            // Use the autoIdSettings to define elements that are known or elements that you want to exclude. They also list elements that cannot be identified
-            autoIdSettings = ProcessingFactory.CreateAutoIdSettings();
-            quantSettings = ProcessingFactory.CreateSEMQuantSettings();
-
-            EdSpectrumAcquisitionController.ExperimentFinished += this.OnEdSpectrumExperimentFinished;
-            //EdSpectrumAcquisitionController.ExperimentStarted += this.OnEdSpectrumExperimentStarted;
-        }
-        //控制电镜释放
-        void CloseImageAcquisition()
-        {
-            if (imageAcquisitionController != null)
-            {
-                //imageAcquisitionController.ExperimentStarted -= this.OnImageExperimentStarted;
-                imageAcquisitionController.ExperimentFinished -= this.OnImageExperimentFinished;
-                imageAcquisitionController = null;
-            }
-            
-        }
-        void CloaseXrayAcquistion()
-        {
-            if (EdSpectrumAcquisitionController != null)
-            {
-                EdSpectrumAcquisitionController.ExperimentFinished -= this.OnEdSpectrumExperimentFinished;
-                //EdSpectrumAcquisitionController.ExperimentStarted -= this.OnEdSpectrumExperimentStarted;
-                EdSpectrumAcquisitionController = null;
-            }
-
-        }
-
-        /// <summary>
-        /// OnImageExperimentStarted
-        /// </summary>
-        private void OnImageExperimentStarted(object sender, AcquisitionStartedEventArgs<IElectronImage[]> e)
-        {
-            NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
-            log.Info("拍图开始事件!");
-        }
-
-        //int m_nState;
-        /// <summary>
-        /// OnImageExperimentFinished
-        /// </summary>
-        private void OnImageExperimentFinished(object sender, AcquisitionFinishedEventArgs<IElectronImage[]> e)
-        {
-            IElectronImage electronImage = e.Value[0];
-
-            if (!ReadImageData(electronImage, out m_ImageBit, out m_nImageWidth, out m_nImageHeight, out m_dImagePixelsize))
-            {
-
-                NLog.LogManager.GetCurrentClassLogger().Error("图像采集完成,获取图像像素失败!");
-            }
-
-            if (m_ImageBit != null && m_ImageBit.Length == m_nImageWidth * m_nImageHeight)
-            {
-                m_bAcquistionDone = true;
-            }
-        }
-
-
-        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)
-            {
-                return false;
-            }
-
-            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;
-            long nBufferSize = nImageSize * nBytesPerPixel;
-
-            Byte[] imageData = new Byte[nBufferSize];
-            a_electronImage.GetData(imageData);
-
-            a_pImageBits = new Byte[nImageSize];
-            // default, oxford will return short image, we need to convert to byte
-            if (nBytesPerPixel == 2)
-            {
-                int nBSEValue = 0;
-                for (int i = 0; i < nImageSize; ++i)
-                {
-                    nBSEValue = imageData[0 + i * nBytesPerPixel] + imageData[1 + i * nBytesPerPixel] * 255;
-                    a_pImageBits[i] = (Byte)(nBSEValue / 128.0 + 0.5);
-                }
-            }
-            else
-            {
-                string msg = string.Format("image byte per pixel other than 2({0}), image convert may wrong", nBytesPerPixel);
-                NLog.LogManager.GetCurrentClassLogger().Error(msg);
-
-                int nOffset = nBytesPerPixel - 1;
-                for (int i = 0; i < nImageSize; ++i)
-                {
-                    a_pImageBits[i] = imageData[nOffset + i * nBytesPerPixel];
-                }
-            }
-
-            return true;
-        }
-
-     
-
-        //a_dDwellTime : 1~100000之间的数 
-        //a_sImageType : 1: SE, 2: Bse
-        //a_dImageScanSize : 图像分辨率,图像的高
-        public bool SetImageAcquistionSetting(double a_dDwellTime, ImageInputSources a_nImageType, double a_dImageScanSize)
-        {
-
-
-            IImageSettings imageSettings = imageAcquisitionSettings.ImageSettings;
-            IImageCapabilities imageCapabilities = imageAcquisitionSettings.ImageCapabilities;
-            IImageScanSettings scanSettings = imageAcquisitionSettings.ScanSettings;
-
-
-
-            if (a_dDwellTime > imageCapabilities.MaximumImageDwellMicroseconds)
-            {
-                imageSettings.DwellTimeMicroSeconds = imageCapabilities.MaximumImageDwellMicroseconds;
-            }
-
-            if (a_dDwellTime < imageCapabilities.MinimumImageDwellMicroseconds)
-            {
-                imageSettings.DwellTimeMicroSeconds = imageCapabilities.MinimumImageDwellMicroseconds;
-            }
-            else
-            {
-                imageSettings.DwellTimeMicroSeconds = a_dDwellTime;
-            }
-
-            imageSettings.InputSources.ToList().ForEach(i => imageSettings.EnableInputSource(i.Key, false));
-            imageSettings.EnableInputSource((ImageInputSources)a_nImageType, true);
-
-            if (!ImageScanSize.Contains(a_dImageScanSize))
-            {
-                NLog.LogManager.GetCurrentClassLogger().Error("图像尺寸输入无效");
-                return false;
-            }
-
-            var pixelSize = 1d / a_dImageScanSize;
-
-
-            scanSettings.AcquisitionRegion.CreateFullFieldRegion(pixelSize);
-            
-            return true;
-        }
-
-       
-        #endregion
-
-        #region X-ray
-      
- 
-
-     
-
-        void SetXrayAcquisitionParam(double a_dMilliSecondsTime)
-        {
-            EdSpectrumSettings.EdSettings.AcquisitionMode = EdAcquireMode.LiveTime; // RealTime or LiveTime
-
-            EdSpectrumSettings.EdSettings.AcquisitionTime = TimeSpan.FromMilliseconds(a_dMilliSecondsTime);
-
-            EdSpectrumSettings.EdSettings.ProcessTime = 4;
-            EdSpectrumSettings.EdSettings.EnergyRange = 20;
-            EdSpectrumSettings.EdSettings.NumberOfChannels = 4096;
-
-            // EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreateFullFieldRegion(1.0 / 1024.0);
-        }
-       
-     
-
-        void SetAreaAcquistionRegion(List<Chord> a_nChords)
-        {
-            ChordList chordsList = null;
-            chordsList = new ChordList(a_nChords, m_dImagePixelsize);
-            EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreateChordListRegion(chordsList);
-        }
-
-
-       
-
-
-        /// <summary>
-        /// Called when IEdSpectrumAcquisitionController Experiment Starting.
-        /// </summary>
-        /// <param name="sender">The sender.</param>
-        /// <param name="e">The <see cref="AcquisitionFinishedEventArgs{IEdSpectrum}"/> instance containing the event data.</param>
-        private void OnEdSpectrumExperimentStarting(object sender, AcquisitionStartingEventArgs<IEdSpectrum> e)
-        {
-
-        }
-
-        /// <summary>
-        /// Called when IEdSpectrumAcquisitionController Experiment Started.
-        /// </summary>
-        /// <param name="sender">The sender.</param>
-        /// <param name="e">The <see cref="AcquisitionFinishedEventArgs{IEdSpectrum}"/> instance containing the event data.</param>
-        private void OnEdSpectrumExperimentStarted(object sender, AcquisitionStartedEventArgs<IEdSpectrum> e)
-        {
-        }
-        private IEdChordListSettings GetChordlistSettings()
-        {
-            if (_edsChordListSetting == null)
-            {
-                _edsChordListSetting = AcquireFactory.CreateEdChordListSettings();
-                if (_edsChordListSetting != null)
-                {
-                    _edsChordListSetting.EdSettings.AcquisitionMode = EdAcquireMode.LiveTime;
-                    _edsChordListSetting.EdSettings.NumberOfChannels = 1024;
-                    _edsChordListSetting.EdSettings.ProcessTime = g_nOxfordControllerProcessTime;
-                    _edsChordListSetting.EdSettings.EnergyRange = g_nOxfordControllerEnergyRange;
-
-                    _edsChordListSetting.AutoIdSettings.SetKnownElement(79, true);
-                    _edsChordListSetting.NumberOfProcessingThreads = 1;
-                }
-                else
-                {
-                    NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
-                    log.Error("Create EDS chordlist setting failed.");
-                }
-            }
-            return _edsChordListSetting;
-        }
-       
-        struct Element
-        {
-            public int m_nAotomaticNo;
-            public double m_dWeight;
-        }
-      
-       
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-      
-
-        /// <summary>
-        /// Called when IEdSpectrumAcquisitionController Experiment Finished
-        /// </summary>
-        /// <param name="sender">sender object</param>
-        /// <param name="e">The instance containing the event data.</param>
-        private void OnEdSpectrumExperimentFinished(object sender, AcquisitionFinishedEventArgs<IEdSpectrum> e)
-        {
-
-            IEdSpectrumAcquisitionController edSpectrumAcquisitionController = sender as IEdSpectrumAcquisitionController;
-
-            uint[] m_XrayData;
-
-            NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
-            IEdSpectrum edSpectrum = e.Value;
-
-            if (!ReadXrayData(edSpectrum, out m_XrayData, XRayChannelLength))
-            {
-                NLog.LogManager.GetCurrentClassLogger().Error("Xray采集完成,获取xray失败!");
-            }
-            long nXraycount = 0;
-            for (int i = 0; i < 2000; i++)
-            {
-                nXraycount += m_XrayData[i];
-            }
-
-            //Quantify processing
-            bool bquant = false;
-            if (currentCommand.commandType == OxfordCommandType.XrayPointCollection)
-            {
-                bquant = currentCommand.pointXrayPrm.b_quant;
-            }
-            else if (currentCommand.commandType == OxfordCommandType.XrayAreaCollection)
-            {
-                bquant = currentCommand.areaXrayPrm.b_quant;
-            }
-            else if (currentCommand.commandType == OxfordCommandType.COLLECT_XRAYPOINTS)
-            {
-                var curXrayData = currentCommand.XrayPrmForPoints[currentCommand.PointXrayDataReceived];
-                bquant = curXrayData.b_quant;
-
-
-            }
-            else if (currentCommand.commandType == OxfordCommandType.COLLECT_XRAYFEATURES)
-            {
-                var curXrayData = currentCommand.XrayPrmForFeatures[currentCommand.AreaXrayDataReceived];
-                bquant = curXrayData.b_quant;
-            }
-            var m_listElement = new Dictionary<string, double>();
-            if (bquant)
-            {
-                EdSpectrumProcessing.IdentifyElements(e.Value, autoIdSettings);
-                // While it is possible to choose other elements, Oxygen is the only supported element by stoichiometry.
-                quantSettings.CombinedElement = 8;
-                quantSettings.Normalised = true;
-                ISEMQuantStatus quantStatus = EdSpectrumProcessing.SEMQuantifySpectrum(e.Value, quantSettings);//(a_nChannelData, OIHelper::SEMQuantSettings);
-                IEnumerable<ISEMQuantResult> Results = quantStatus.Results;
-
-
-                var ie = Results.GetEnumerator();
-
-
-
-                while (ie.MoveNext())
-                {
-                    ISEMQuantResult result = ie.Current;
-
-                    if (result.WeightPercent != 0)
-                    {
-                        m_listElement.Add(ElementProperties.GetElementSymbol(result.AtomicNumber), result.WeightPercent);
-                    }
-
-                }
-            }
-            //------------------------
-
-            if (m_XrayData != null && m_XrayData.Length == XRayChannelLength)
-            {
-
-                if (currentCommand.commandType == OxfordCommandType.XrayPointCollection)
-                {
-                    currentCommand.pointXrayPrm.XrayData = m_XrayData;
-                    currentCommand.pointXrayPrm.listElement = m_listElement;
-                    m_bXrayDone = true;
-                }
-                else if (currentCommand.commandType == OxfordCommandType.XrayAreaCollection)
-                {
-                    currentCommand.areaXrayPrm.XrayData = m_XrayData;
-                    currentCommand.areaXrayPrm.listElement = m_listElement;
-                    m_bXrayDone = true;
-                }
-                else if (currentCommand.commandType == OxfordCommandType.COLLECT_XRAYPOINTS)
-                {
-                    var curXrayData = currentCommand.XrayPrmForPoints[currentCommand.PointXrayDataReceived];
-                    curXrayData.XrayData = m_XrayData;
-                    curXrayData.listElement = m_listElement;
-                    currentCommand.PointXrayDataReceived += 1;
-
-                    if (currentCommand.PointXrayDataReceived == currentCommand.XrayPrmForPoints.Count)
-                    {
-                        m_bXrayDone = true;
-                    }
-
-
-                }
-                else if (currentCommand.commandType == OxfordCommandType.COLLECT_XRAYFEATURES)
-                {
-                    var curXrayData = currentCommand.XrayPrmForFeatures[currentCommand.AreaXrayDataReceived];
-                    curXrayData.XrayData = m_XrayData;
-                    curXrayData.listElement = m_listElement;
-                    currentCommand.AreaXrayDataReceived += 1;
-                    if (currentCommand.AreaXrayDataReceived == currentCommand.XrayPrmForFeatures.Count)
-                    {
-                        m_bXrayDone = true;
-                    }
-                }
-
-
-            }
-
-
-        }
-
-        bool ReadXrayData(IEdSpectrum a_spectrum, out uint[] a_pSpectrumData, int a_nBufferSize)
-        {
-            a_pSpectrumData = new uint[a_nBufferSize];
-
-            int[] xrayData = new int[a_spectrum.NumberOfChannels];
-            a_spectrum.GetChannelData(xrayData);
-
-            double dZeroChannelValue = a_spectrum.ZeroChannelValue;
-
-            int nChannelStart = 0;
-            if (dZeroChannelValue < 0)  // zero channel value should less than zero
-            {
-                nChannelStart = (int)(-dZeroChannelValue / a_spectrum.ChannelWidth + 0.5);
-            }
-
-            int nDataLength = (int)(a_spectrum.EnergyRange * 1000 / a_spectrum.ChannelWidth + 0.5);
-
-            double dStep1 = 1.0 / nDataLength;
-            double dStep2 = 1.0 / a_nBufferSize;
-
-            for (int i = 0; i < nDataLength; ++i)
-            {
-                uint nValue = (uint)(xrayData[i + nChannelStart] > 0 ? xrayData[i + nChannelStart] : 0);
-
-                double dBinPos = i * dStep1;
-
-                long nLeftBin = (long)(dBinPos / dStep2);
-
-                // calculate % into left bin
-                double dLeft_Percent = (double)(nLeftBin + 1) - dBinPos / dStep2; // ((nLeftBin + 1)*dStep2 - dBinPos)/dStep2
-
-                // calculate data into the left bin
-                uint nValueToLeftBin = (uint)((double)nValue * dLeft_Percent + 0.5);
-
-                // put data into bins
-                a_pSpectrumData[nLeftBin] += nValueToLeftBin;
-                if ((nLeftBin + 1) < a_nBufferSize)
-                {
-                    a_pSpectrumData[nLeftBin + 1] += (nValue - nValueToLeftBin);
-                }
-            }
-
-            return true;
-        }
-        /// <summary>
-        /// Called when IEdSpectrum DataChanged
-        /// </summary>
-        /// <param name="sender">Event source</param>
-        /// <param name="e">Event arguments</param>
-        private void OnDataChanged(object sender, EventArgs e)
-        {
-        }
-
-        public bool IsAcquiringSpectrum()
-        {
-            return EdSpectrumAcquisitionController.IsAcquiring;
-        }
-
-      
-
-
-        public void BeginMultipleAquisition()
-        {
-
-            EdSpectrumAcquisitionController.BeginMultipleAcquisition();
-        }
-
-        public void EndMultipleAquisition()
-        {
-            EdSpectrumAcquisitionController.EndMultipleAcquisition();
-        }
-
-        //public void BeginAreaModeMultipleAquisition()
-        //{
-        //    var controller = CreateChordlistController();
-        //    controller.BeginMultipleAcquisition();
-        //}
-
-        //public void EndAreaModeMultipleAquisition()
-        //{
-        //    var controller = CreateChordlistController();
-        //    controller.EndMultipleAcquisition();
-        //}
-
-       
-        public bool GetSemBeamOn()
-        {
-            var beamon = microscopeController.ColumnConditions.BeamOn;
-            if (beamon == 1)
-            {
-                return true;
-            }
-            else 
-            {
-                return false;
-            
-            }
-           
-        }
-        public void StopXrayAquisition()
-        {
-
-            EdSpectrumAcquisitionController.StopAcquisition();
-
-
-        }
-
-
-        #endregion
-
-    }
-}

+ 0 - 1
OxfordExtenderWrapper/OxfordExtenderWrapper.csproj

@@ -62,7 +62,6 @@
     <Compile Include="ExtenderIpcUI.cs" />
     <Compile Include="ExtenderIpcUI1.cs" />
     <Compile Include="ExtenderWrapper.cs" />
-    <Compile Include="ExtenderWrapper1.cs" />
     <Compile Include="Form1.cs">
       <SubType>Form</SubType>
     </Compile>