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(); } } /// /// 获取XML节点参数 /// /// 节点参数名称 /// 节点参数 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 eleItems = new Dictionary(); 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; } } } }