瀏覽代碼

添加编辑器xray采集(FEI)

cxs 2 年之前
父節點
當前提交
c42dd96bb1

+ 1 - 1
OTSPartA_STDEditor/App.config

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <configuration>
     <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
     </startup>
 </configuration>

+ 167 - 0
OTSPartA_STDEditor/EDSController.cs

@@ -0,0 +1,167 @@
+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;
+            }
+        }
+    }
+}

+ 6 - 1
OTSPartA_STDEditor/OTSPartA_STDEditor.csproj

@@ -8,7 +8,7 @@
     <OutputType>WinExe</OutputType>
     <RootNamespace>OTSPartA_STDEditor</RootNamespace>
     <AssemblyName>OTSPartA_STDEditor</AssemblyName>
-    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
     <Deterministic>true</Deterministic>
@@ -113,6 +113,10 @@
     <Prefer32Bit>true</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="FEIApiControl, Version=1.0.0.1, Culture=neutral, processorArchitecture=AMD64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\OpenDll\FEIAPI\FEIApiControl.dll</HintPath>
+    </Reference>
     <Reference Include="OTS.WinFormsUI.Docking, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\OpenDll\WordApiDll\OTS.WinFormsUI.Docking.dll</HintPath>
@@ -154,6 +158,7 @@
       <DependentUpon>Attributes.cs</DependentUpon>
     </Compile>
     <Compile Include="CommonClass\SqlLiteClass.cs" />
+    <Compile Include="EDSController.cs" />
     <Compile Include="FormForWaiting.cs">
       <SubType>Form</SubType>
     </Compile>

+ 18 - 120
OTSPartA_STDEditor/STDEditor.cs

@@ -26,7 +26,7 @@ namespace OTSPartA_STDEditor
         //数据库操作对象
         public SqlLiteClass m_sc = null;
         // 电镜设置对象
-        COTSControlFunExport m_cfun = null;
+        EDSController m_EDSHardwareMgr = null;
         //Xray图谱用户控件
         UXrayControl XrayControl = null;
         //全局Xray 用于存储当前选择行的Xray信息
@@ -483,7 +483,7 @@ namespace OTSPartA_STDEditor
         }
 
 
-        #region 采集Xray 按钮事件
+        //采集Xray 按钮事件
         private void btnCollectXray_Click(object sender, EventArgs e)
         {
             m_SubMidWindow.m_MainForm.IsModified = true;
@@ -508,6 +508,7 @@ namespace OTSPartA_STDEditor
             }
             //显示Xray
             xrayByteData = IntArrToByteArr(GetCollectXray(strTime));
+            m_EDSHardwareMgr.DisConnect();
             int color = Convert.ToInt32(ParseRGB(colorHx16toRGB(m_SubMidWindow.m_MainForm.STDDictionary[STDId].Color)).ToString());
             //根据树节点修改对应的Xray信息
             UpdateSTDXray(STDId, xrayByteData);
@@ -519,39 +520,25 @@ namespace OTSPartA_STDEditor
         /// <returns></returns>
         protected uint[] GetCollectXray(string strTime)
         {
-            try
+            //控制类对象初始化
+            if (null == m_EDSHardwareMgr)
             {
-                if (null == m_cfun)
-                {
-                    m_cfun = COTSControlFunExport.GetControllerInstance();
-                }
-                if (ConnectionSem(connectionEnumType.EDSOnlyPointXRay))
-                {
-                    if (EDSInit())
-                    {
-                        int iSize = 2000;
-                        uint[] iXrayData = new uint[iSize];
-                        //采集XRay数据
-                        if (m_cfun.CollectSpectrum(uint.Parse(strTime), ref iXrayData))
-                        {
-                            return iXrayData;
-                        }
-                    }
-                }
-                return null;
+                m_EDSHardwareMgr = EDSController.GetEDSController();
             }
-            catch /*(Exception ex)*/
+
+            //1.连接电镜
+            if (m_EDSHardwareMgr.Connect())
             {
-                return null;
+                int iSize = 2000;
+                uint[] iXrayData = new uint[iSize];
+                //采集XRay数据
+                if (m_EDSHardwareMgr.CollectSpectrum(uint.Parse(strTime), ref iXrayData))
+                {
+                    return iXrayData;
+                }
             }
-            finally
-            {
-                //EDS过程结束
-                //m_cfun.EDSFinishedInstance();
 
-                //关闭连接
-                DisConnectSem(connectionEnumType.EDSOnlyPointXRay);
-            }
+            return null;
         }
         private void btnReadXray_Click(object sender, EventArgs e)
         {
@@ -691,93 +678,7 @@ namespace OTSPartA_STDEditor
         }
         #endregion
 
-        #region 连接与关闭设备
-        public bool ConnectionSem(connectionEnumType connectionType)
-        {
-            //获取连接电镜类型
-            string connTypeStr = GetConnectionType(connectionType);
-            //连接电镜标识
-            bool bDisConnResult = false;
-            //判断连接状态
-            if (!m_bConnectionState)
-            {
-                //连接电镜设置
-                bDisConnResult = m_cfun.ConncetSem();
-            }
-            if (bDisConnResult)
-            {
-                m_bConnectionState = true;
-            }
-            else
-            {
-                m_bConnectionState = false;
-            }
-            return bDisConnResult;
-        }
-
-        public bool DisConnectSem(connectionEnumType disConnectType)
-        {
-            //获取关闭电镜类型
-            string connTypeStr = GetConnectionType(disConnectType);
-            bool bDisConnResult = false;
-            if (m_bConnectionState)
-            {
-                bDisConnResult = m_cfun.DisconnectSem();
-            }
-            if (bDisConnResult)
-            {
-                m_bConnectionState = false;
-            }
-            else
-            {
-                m_bConnectionState = true;
-            }
-            return bDisConnResult;
-        }
-
-        private string GetConnectionType(connectionEnumType connectionType)
-        {
-            string connString = string.Empty;
-            switch (connectionType)
-            {
-                //设置单点采集文字内容
-                case connectionEnumType.EDSOnlyPointXRay:
-                    connString = "OnlyPointXRay";
-                    break;
-                //设置多点采集文字内容
-                case connectionEnumType.EDSMultiPointXRay:
-                    connString = "MultiPointXRay";
-                    break;
-                //设置面采集文字内容
-                case connectionEnumType.EDSAreaXRay:
-                    connString = "AreaXRay";
-                    break;
-                //设置图片
-                case connectionEnumType.ScanImage:
-                    connString = "Image";
-                    break;
-                default: break;
-            }
-            return connString;
-        }
-
-        /// <summary>
-        /// EDS初始化
-        /// </summary>
-        public bool EDSInit()
-        {
-            bool bResult = false;
-            //线程调用 加载
-            bResult = m_cfun.EDSInit();
-            return bResult;
-        }
-        public enum connectionEnumType
-        {
-            EDSOnlyPointXRay = 0,
-            EDSMultiPointXRay = 1,
-            EDSAreaXRay = 2,
-            ScanImage = 3
-        }
+        #region Xray 与 STDDB数据操作
         /// <summary>
         /// 标准Xray状态
         /// </summary>
@@ -787,7 +688,6 @@ namespace OTSPartA_STDEditor
             Modify = 1,
             Delete = 2
         }
-        #endregion
 
         /// <summary>
         /// 记录修改后的标准中的Xray信息
@@ -811,9 +711,7 @@ namespace OTSPartA_STDEditor
             public byte[] XrayData { get => xrayData; set => xrayData = value; }
             public int InfoState { get => infoState; set => infoState = value; }
         }
-        #endregion
 
-        #region Xray 与 STDDB数据操作
         /// <summary>
         /// 绑定数据库中已存在的Xray信息
         /// </summary>