| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Xml;using FEIApiControl;using OTSCLRINTERFACE;namespace OTSPartA_STDEditor{    class EDSController    {        private COTSControlFunExport eds;        static EDSController edsctrl = null;        public static APIClass ApiClass = null;        private static bool isFEI = false;        private EDSController()        {            if (isFEI)            {                ApiClass = new APIClass();                Connect();            }            else            {                eds = OTSCLRINTERFACE.COTSControlFunExport.GetControllerInstance();            }        }        public static EDSController GetEDSController()        {            if (GetXMLInformations("EDSName") == "FEI")            {                isFEI = true;            }            if (edsctrl == null)            {                edsctrl = new EDSController();            }            return edsctrl;        }        public bool Connect()        {            if (isFEI)            {                string FEIIP =GetXMLInformations("FEIIP");                string FEIPORT = GetXMLInformations("FEIPORT");                if (FEIIP == "" || FEIPORT == "")                {                    MessageBox.Show("FEI电镜端口配置为空!");                    return false;                }                if (ApiClass.isConnect())                {                    return true;                }                return ApiClass.Connect(FEIIP, FEIPORT);            }            else            {                if (!eds.Init())                {                    return false;                }                if (eds.IsConnected())                {                    return true;                }                return eds.ConncetSem();            }        }        /// <summary>        /// 获取XML节点参数        /// </summary>        /// <param name="Name">节点参数名称</param>        /// <returns>节点参数</returns>        public static string GetXMLInformations(string Name)        {            try            {                string xmlFilePath = "Config/ProData/HardwareConfig.xml";                string value = string.Empty;                XmlDocument doc = new XmlDocument();                doc.Load(xmlFilePath);    //加载Xml文件                  XmlElement root = doc.DocumentElement;   //获取根节点                  XmlNodeList mainNodes = root.GetElementsByTagName("Member"); //获取子节点集合                  foreach (XmlNode node in mainNodes)                {                    //获取Name属性值                    string name = ((XmlElement)node).GetAttribute("RegName");                    if (name.Equals(Name))                    {                        value = ((XmlElement)node).GetAttribute("Value");                        break;                    }                }                return value;            }            catch (Exception)            {                return "";            }        }        public bool Init()        {            if (isFEI)            {                return ApiClass.isConnect();            }            else            {                bool m_init = eds.EDSInit();                return m_init;            }        }        public bool CollectSpectrum(uint a_nXRayAQTime, ref uint[] a_XrayData)        {            if (isFEI)            {                Dictionary<string, double> eleItems = new Dictionary<string, double>();                return ApiClass.AcquireSpectrum(false, ref eleItems, ref a_XrayData);            }            else            {                if (!eds.IsConnected())                {                    return false;                }                return eds.CollectSpectrum(a_nXRayAQTime, ref a_XrayData);            }        }        public bool DisConnect()        {            if (isFEI)            {                return ApiClass.DisConnect();            }            else            {                if (eds.IsConnected())                {                    return eds.DisconnectSem();                }                return true;            }        }    }}
 |