| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165 | using System;/* --创建人:韩维柏 --创建日期:2017-06-20 --修改人: --修改日期: --说明:Xray设置 */using System.Drawing;using System.Windows.Forms;using System.Xml;using System.IO;using System.Windows.Forms.DataVisualization.Charting;using System.Threading;using System.Collections;using System.Collections.Generic;using OTSCLRINTERFACE;using OTSModelSharp.ServiceInterface;namespace OTSSysMgrApp{    public partial class ControllerSettingForm : Form    {        #region 全部变量声明        //连接状态        bool ConnectionState = false;        static string xmlFilePath = System.Configuration.ConfigurationManager.ConnectionStrings["XMLFilePath"].ConnectionString;        //日志路径        static string LogPath = System.Configuration.ConfigurationManager.ConnectionStrings["LogPath"].ConnectionString;        static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();        //电镜设置对象        //COTSControlFunExport cfun = null;        EDSController m_EDSHardwareMgr = null;        //图片        Bitmap bitmap = null;        //国际化        Language lan;        //国际化存储信息        Hashtable table;        #endregion        public enum connectionEnumType        {            EDSOnlyPointXRay = 0,            EDSMultiPointXRay = 1,            EDSAreaXRay = 2,            ScanImage = 3        }        #region 构造函数        public ControllerSettingForm()        {            InitializeComponent();            //控制类对象初始化            //if (cfun == null)            //{            //    cfun = COTSControlFunExport.GetControllerInstance();            //}            m_EDSHardwareMgr = EDSController.GetEDSController();            lan = new Language(this);            table = lan.GetNameTable(this.Name);        }        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>        /// 连接电镜        /// </summary>        /// <param name="connectionType"></param>        public bool ConnectionSem(connectionEnumType connectionType)        {            //获取连接电镜类型            string connTypeStr = GetConnectionType(connectionType);            //连接电镜标识            bool DisConnResult = false;            //判断连接状态            if (!ConnectionState)            {                //连接电镜设置                DisConnResult = m_EDSHardwareMgr.Connect();            }            if (DisConnResult)            {                ConnectionState = true;            }            else            {                ConnectionState = false;            }            return DisConnResult;        }        /// <summary>        /// 关闭电镜        /// </summary>        /// <param name="disConnectType"></param>        public bool DisConnectSem(connectionEnumType disConnectType)        {            //获取关闭电镜类型            string connTypeStr = GetConnectionType(disConnectType);            bool DisConnResult = false;           //if (ConnectionState)           // {           //     DisConnResult = cfun.DisConnectSem();           // }           // if (DisConnResult)           // {           //     ConnectionState = false;           // }           // else           // {           //     ConnectionState = true;           // }            return DisConnResult;        }        /// <summary>        /// EDS初始化        /// </summary>        public bool EDSInit()        {            bool initResult = false;            //线程调用 加载            initResult = m_EDSHardwareMgr.Init();            return initResult;        }        /// <summary>        /// Scan初始化        /// </summary>        public bool ScanInit()        {            bool initResult = false;            //线程调用 加载            initResult = m_EDSHardwareMgr.ScanInit();            return initResult;        }        #endregion        #region 窗体中控件事件汇总        private void btnClearXRay_Click(object sender, EventArgs e)        {            chartXRay.Series.RemoveAt(0);        }        private void btnCollectionTime_Click(object sender, EventArgs e)        {            try            {                int CollectionTime = 0;                //判断是否为空与类型                if (!IsNull(tbCollectionTime))                {                    tbCollectionTime.Focus();                    return;                }                if (!IsType(tbCollectionTime.Text, 1))                {                    tbCollectionTime.Focus();                    return;                }                //获取参数与设置参数                CollectionTime = Convert.ToInt32(tbCollectionTime.Text);                bool result = false;                if (result)                {                    //配置结果提示                    ShowMessage(3);                }                else                {                    ShowMessage(4);                }            }            catch (Exception ex)            {                //记录日志信息(异常日志)                log.Error(ex.Message.ToString());            }        }        private void ControllerSettingForm_Load(object sender, EventArgs e)        {            //设置窗体图表            Control.CheckForIllegalCrossThreadCalls = false;            ddlDwellTime.SelectedIndex = 2;            InitXRayData();            m_EDSHardwareMgr = EDSController.GetEDSController();        }        Thread ScanThread = null;        private void btnDisplay_Click(object sender, EventArgs e)        {            GetBSEDisplay();        }        protected void GetBSEDisplay()        {            try            {                string str1 = table["str1"].ToString();                btnDisplay.Text = str1;                btnDisplay.Enabled = false;                btnDisplay.Refresh();                if (pbImage.Image != null)                {                    pbImage.Image = null;                    pbImage.Refresh();                }                Thread.Sleep(100);                try                {                    //设置图像分辨率                    int width = 0;                    int height = 0;                    //获取宽度                    width = Convert.ToInt32(tbRWidth.Text);                    height = Convert.ToInt32(tbRHeight.Text);                    byte[] ImageByte = new byte[width * height];                    Bitmap bitmap = null;                    int iWidth = Convert.ToInt32(tbRWidth.Text);                    int iHeight = Convert.ToInt32(tbRHeight.Text);                    int resultValue = ScanController.GetScanImage(iWidth, iHeight, ddlDwellTime.Text, ref ImageByte);                    string str2 = table["str2"].ToString();                    if (resultValue > 0)                    {                        if (ImageByte != null)                        {                            bitmap = CImageHandler.ToGrayBitmap(ImageByte, width, height);                            pbImage.Image = bitmap;                            btnSaveImage.Enabled = true;                            log.Info("Image capture success!\nImage resolution:" + bitmap.Width + "X" + bitmap.Height + ";");                        }                        else                        {                            MessageBox.Show(str2, "Tip");                        }                    }                    else                    {                        MessageBox.Show(str2, "Tip");                    }                                    }                catch (Exception ex)                {                    log.Error("ControllerSettingForm_GetScanImage()_Exception:-----" + ex.ToString() + "------");                }            }            catch (Exception ex)            {                log.Error("ControllerSettingForm_btnDisplay_Click--错误信息:" + ex.ToString());            }            finally            {                string str = table["btndisplay"].ToString();                btnDisplay.Text = str;                btnDisplay.Enabled = true;                btnDisplay.Refresh();            }        }        private void btnClear_Click(object sender, EventArgs e)        {            pbImage.BackgroundImage = null;        }        Thread EDSThread = null;        private void btnDisplayXRay_Click(object sender, EventArgs e)        {            GetDisplayXRay();        }        protected void GetDisplayXRay()        {            try            {                string str1 = table["str1"].ToString();                btnDisplayXRay.Text = str1;                btnDisplayXRay.Enabled = false;                btnDisplayXRay.Refresh();                btnPointXRay.Enabled = false;                btnPointXRay.Refresh();                btnAreaRay.Enabled = false;                btnAreaRay.Refresh();                btnClearData.Enabled = false;                btnClearData.Refresh();                InitXRayData();                if (ConnectionSem(connectionEnumType.EDSOnlyPointXRay))                {                    if (EDSInit())                    {                        //图像数据                        uint[] a_XrayData = new uint[2000];                        uint a_Milliseconds = 0;                        //采集时间                        a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);                        //采集XRay数据                        bool result=m_EDSHardwareMgr.CollectSpectrum(a_Milliseconds, ref a_XrayData);                        if(!result)                        {                            log.Error("m_EDSHardwareMgr.CollectSpectrum failed!");                        }                        int[] XData = new int[2000];                        uint nXrayCount = 0;                        for (int i = 1; i <= 2000; i++)                        {                            XData[i - 1] = i;                            nXrayCount += a_XrayData[i - 1];                        }                        //绑定数据源                        chartData(XData, a_XrayData);                        //显示Xray计数                        lbXrayCount.Text = nXrayCount.ToString();                    }                }                log.Info("Single point collection succeeded!");            }            catch (Exception ex)            {                //记录日志                log.Error(ex.Message.ToString());            }            finally            {                string str = table["btndisplayxray"].ToString();                btnDisplayXRay.Text = str;                btnDisplayXRay.Enabled = true;                btnDisplayXRay.Refresh();                btnPointXRay.Enabled = true;                btnPointXRay.Refresh();                btnAreaRay.Enabled = true;                btnAreaRay.Refresh();                btnClearData.Enabled = true;                btnClearData.Refresh();                //EDS过程结束                //cfun.EDSFinishedInstance();                //关闭连接                DisConnectSem(connectionEnumType.EDSOnlyPointXRay);            }        }        public void RunEDSThread()        {            try            {                //图像数据                uint[] a_XrayData = new uint[2000];                uint a_Milliseconds = 0;                //采集时间                a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);                //采集XRay数据                m_EDSHardwareMgr.CollectSpectrum(a_Milliseconds, ref a_XrayData);                int[] XData = new int[2000];                for (int i = 1; i <= 2000; i++)                {                    XData[i - 1] = i;                }                //绑定数据源                chartData(XData, a_XrayData);                //EDS过程结束                //cfun.EDSFinishedInstance();            }            catch (Exception ex)            {                //记录日志               log.Error(ex.Message.ToString());            }        }        public void chartData(int[] XData, uint[] YData)        {            //chartXRay = new Chart();            //背景            if (chartXRay.ChartAreas.Count == 0)            {                chartXRay.ChartAreas.Add(new ChartArea() { Name = "" });     //背景框            }            chartXRay.ChartAreas[0].Axes[0].MajorGrid.Enabled = false;       //X轴上网格            chartXRay.ChartAreas[0].Axes[1].MajorGrid.Enabled = false;      //y轴上网格            chartXRay.ChartAreas[0].Axes[0].MajorGrid.LineDashStyle = ChartDashStyle.Dash;   //网格类型 短横线            chartXRay.ChartAreas[0].Axes[0].MajorGrid.LineColor = Color.Gray;            chartXRay.ChartAreas[0].Axes[0].MajorTickMark.Enabled = false;                   //  x轴上突出的小点            chartXRay.ChartAreas[0].Axes[1].MajorTickMark.Enabled = false;                  //            chartXRay.ChartAreas[0].Axes[1].MajorGrid.LineWidth = 1;            //图表数据区,有多个重叠则循环添加            if (chartXRay.Series.Count == 0)            {                chartXRay.Series.Add(new Series() { Name = "" });            }            chartXRay.Series[0].ChartType = SeriesChartType.Line;    //图类型(折线)            chartXRay.Series[0].Points.DataBindXY(XData, YData); //添加数据            chartXRay.Series[0].Label = "";            chartXRay.Series[0].LegendText = "";            //折线段配置            chartXRay.Series[0].Color = Color.Blue;               //线条颜色            chartXRay.Series[0].BorderWidth = 1;                 //线条粗细            chartXRay.Series[0].MarkerBorderColor = Color.Red;   //标记点边框颜色            chartXRay.Series[0].MarkerBorderWidth = 1;             //标记点边框大小            chartXRay.Series[0].MarkerColor = Color.Red;       //标记点中心颜色            chartXRay.Series[0].MarkerSize = 0;                 //标记点大小            //chartXRay.Series[0].BorderWidth = 500;            //另外            //饼图说明设置,这用来设置饼图每一块的信息显示在什么地方            chartXRay.Series[0]["PieLabelStyle"] = "Outside";//将文字移到外侧            chartXRay.Series[0]["PieLineColor"] = "Black";//绘制黑色的连线。                                                          //柱状图其他设置            chartXRay.Series[0]["DrawingStyle"] = "Emboss";   //设置柱状平面形状            chartXRay.Series[0]["PointWidth"] = "0.1"; //设置柱状大小        }        #endregion        #region 设置按钮事件        private void btnSetInfo_Click(object sender, EventArgs e)        {            if (!IsConnection())            {                //return;            }            //获取响应按钮            Button btnTest = (Button)sender;            try            {                //节点名称与节点参数值                string Name = string.Empty;                string Value = string.Empty;                //判断本地中是否存在文件路径                if (ExistsFile(xmlFilePath))                {                    //遍历tabHardwareSet标签中所有的TextBox控件                     foreach (Control control in this.tabXRay.Controls)                    {                        //判断类型名称                        if (control is TextBox)                        {                            Name = (control as TextBox).Name.Substring(2);                            if (btnTest.Name.Contains(Name))                            {                                //判断是否为空与类型                                if (!IsNull(((TextBox)control)))                                {                                    ((TextBox)control).Focus();                                    return;                                }                                if (!IsType(((TextBox)control).Text, 1))                                {                                    ((TextBox)control).Focus();                                    return;                                }                                //获取节点名称与节点参数值                                Value = (control as TextBox).Text;                                SaveSetting(Name, Value);                            }                        }                    }                    //遍历tabHardwareSet标签中所有的TextBox控件                     foreach (Control control in this.tabImage.Controls)                    {                        //判断类型名称                        if (control is TextBox)                        {                            Name = (control as TextBox).Name.Substring(2);                            if (btnTest.Name.Contains(Name))                            {                                //判断是否为空与类型                                if (!IsNull(((TextBox)control)))                                {                                    ((TextBox)control).Focus();                                    return;                                }                                if (!IsType(((TextBox)control).Text, 1))                                {                                    ((TextBox)control).Focus();                                    return;                                }                                //获取节点名称与节点参数值                                Value = (control as TextBox).Text;                                SaveSetting(Name, Value);                            }                        }                    }                }                else                {                    //如果文件不存在,则创建文件                    CreateFile(xmlFilePath);                }            }            catch (Exception ex)            {                //记录日志信息                log.Error(ex.Message.ToString());            }        }        #endregion        #region 保存设置        /// <summary>        /// 保存设置        /// </summary>        /// <param name="Name">节点名称</param>        /// <param name="Value">节点参数值</param>        public void SaveSetting(string Name, string Value)        {            try            {                //判断XML文件中是否存在                if (!XMLOperationClass.ExistsXmlInfo(Name))                {                    //调用添加XML节点功能                    XMLOperationClass.AddXmlInfo(Name, Value);                }                else                {                    //调用修改XML节点功能                    XMLOperationClass.EditXmlInfo(Name, Value);                }            }            catch (Exception ex)            {                //记录日志信息                log.Error(ex.Message.ToString());            }        }        #endregion        #region 修改设置        public void EditSetting(string Name, string Value)        {            try            {                //调用修改XML节点功能                XMLOperationClass.EditXmlInfo(Name, Value);            }            catch (Exception ex)            {                //记录日志信息                log.Error(ex.Message.ToString());            }        }        #endregion        #region 判断文件路径        /// <summary>        /// 判断文件路径        /// </summary>        /// <param name="path"></param>        /// <returns></returns>        public bool CreateFile(string path)        {            Directory.CreateDirectory(path);            return false;        }        #endregion        #region 判断文件是否存在        /// <summary>        /// 判断文件是否存在        /// </summary>        /// <param name="path">文件路径</param>        /// <returns></returns>        public bool ExistsFile(string path)        {            try            {                if (File.Exists(path))                {                    return true;                }                return false;            }            catch (Exception ex)            {                //记录日志信息                log.Error(ex.Message.ToString());                return false;            }        }        #endregion        #region 获取窗体中所有参数        /// <summary>        /// 获取窗体中控件的所有参数        /// </summary>        public void GetWindowsControlValue()        {            try            {                XmlDocument doc = new XmlDocument();                //加载Xml文件                doc.Load(xmlFilePath);                //获取根节点                XmlElement root = doc.DocumentElement;                //获取子节点集合                  XmlNodeList mainNodes = root.GetElementsByTagName("parameter");                foreach (XmlNode node in mainNodes)                {                    //获取Name属性值                    string text = ((XmlElement)node).GetAttribute("Name");                    string value = ((XmlElement)node).GetAttribute("Value");                    foreach (Control control in this.tabXRay.Controls)                    {                        //判断类型名称                         if (control.Name.Contains(text))                        {                            if (control is TextBox)                            {                                ((TextBox)control).Text = value;                            }                            else if (control is ComboBox)                            {                                ((ComboBox)control).SelectedValue = value;                            }                            else if (control is CheckBox)                            {                                ((CheckBox)control).Checked = text.Equals("1") ? true : false;                            }                        }                    }                    foreach (Control control in this.tabImage.Controls)                    {                        //判断类型名称                         if (control.Name.Contains(text))                        {                            if (control is TextBox)                            {                                ((TextBox)control).Text = value;                            }                            else if (control is ComboBox)                            {                                ((ComboBox)control).SelectedValue = value;                            }                            else if (control is CheckBox)                            {                                ((CheckBox)control).Checked = text.Equals("1") ? true : false;                            }                        }                    }                }            }            catch (Exception ex)            {                //记录日志信息                log.Error(ex.Message.ToString());            }        }        #endregion        #region 用户信息提示        /// <summary>        /// 提示        /// </summary>        /// <param name="Message"></param>        private void ShowMessage(int MessageType)        {            string message1 = table["message1"].ToString();            string message2 = table["message2"].ToString();            string message3 = table["message3"].ToString();            string message4 = table["message4"].ToString();            string message5 = table["message5"].ToString();            string message6 = table["message6"].ToString();            string message7 = table["message7"].ToString();            string message8 = table["message8"].ToString();            string message9 = table["message9"].ToString();            string message10 = table["message10"].ToString();            string MessageInfo = string.Empty;            switch (MessageType)            {                case 0:                    MessageInfo = message1;                    break;                case 1:                    MessageInfo = message2;                    break;                case 2:                    MessageInfo = message3;                    break;                case 3:                    MessageInfo = message4;                    break;                case 4:                    MessageInfo = message5;                    break;                case 5:                    MessageInfo = message6;                    break;                case 6:                    MessageInfo = message7;                    break;                case 7:                    MessageInfo = message8;                    break;                case 8:                    MessageInfo = message9;                    break;                case 9:                    MessageInfo = message10;                    break;            }            MessageBox.Show(MessageInfo, "Tip");        }        #endregion        #region 判断控制内容是否为空 与 判断输入的格式是否正确        /// <summary>        /// 判断控制内容是否为空        /// </summary>        /// <param name="tbContent"></param>        /// <returns></returns>        public bool IsNull(TextBox tbContent)        {            if (tbContent.Text.Trim().Equals(""))            {                //为空提示                ShowMessage(0);                //获取焦点                tbContent.Focus();                return false;            }            return true;        }        /// <summary>        ///         /// </summary>        /// <param name="objValue"></param>        /// <param name="objType"></param>        /// <returns></returns>        public bool IsType(object ObjValue, int ObjType)        {            try            {                switch (ObjType)                {                    case 1:                        int intValue = Convert.ToInt32(ObjValue);                        break;                    case 2:                        double douValue = Convert.ToDouble(ObjValue);                        break;                    case 3:                        float floValue = Convert.ToSingle(ObjValue);                        break;                }                return true;            }            catch (Exception)            {                //为空提示                ShowMessage(7);                return false;            }        }        /// <summary>        /// 判断是否连接        /// </summary>        /// <returns></returns>        public bool IsConnection()        {            try            {                if (ConnectionState)                {                    return true;                }                return false;            }            catch (Exception)            {                //为空提示                ShowMessage(7);                return false;            }        }        #endregion        private void ControllerSettingForm_FormClosing(object sender, FormClosingEventArgs e)        {            try            {                m_EDSHardwareMgr.DisConnect();                      }            catch (Exception ex)            {                //记录日志信息                log.Error(ex.ToString());            }        }        private void tabSetting_SelectedIndexChanged(object sender, EventArgs e)        {            try            {                if (ScanThread != null)                {                    ScanThread.Abort();                }                if (EDSThread != null)                {                    EDSThread.Abort();                }                if (tabSetting.SelectedIndex == 0)                {                    //线程调用 关闭Scan EDSInit初始化                    //cfun.ScanFinishedInstance();                    EDSInit();                }                else if (tabSetting.SelectedIndex == 1)                {                    //线程调用 关闭EDS  ScanInit初始化                    //cfun.EDSFinishedInstance();                    ScanInit();                }            }            catch (Exception)            {            }        }        private void btnSaveImage_Click(object sender, EventArgs e)        {            if (bitmap != null)            {                string fileName = LogPath + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpeg";                bitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);            }        }        private void btnPointXRay_Click(object sender, EventArgs e)        {            GetPointXRay();            //var act = new Action(GetPointXRay);            //act.BeginInvoke(ar => act.EndInvoke(ar), null);        }        protected void GetPointXRay()        {            try            {                string str = table["str1"].ToString();                btnDisplayXRay.Enabled = false;                btnDisplayXRay.Refresh();                btnPointXRay.Text = str;                btnPointXRay.Enabled = false;                btnPointXRay.Refresh();                btnAreaRay.Enabled = false;                btnAreaRay.Refresh();                btnClearData.Enabled = false;                btnClearData.Refresh();                InitXRayData();                                if (ConnectionSem(connectionEnumType.EDSMultiPointXRay))                {                    if (EDSInit())                    {                                                //图像数据                        uint[] a_XrayData = new uint[2000];                        uint a_Milliseconds = 0;                        //采集时间                        a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);                        //采集XRay数据                        List<COTSParticleClr> cOTSParticleClrs = new List<COTSParticleClr>();                        for (int i = 0; i < 5; i++)                        {                            COTSParticleClr cOTSParticle = new COTSParticleClr();                            CPosXrayClr cPosXray = new CPosXrayClr();                            cOTSParticle.SetXray(cPosXray);                            cOTSParticle.SetXRayPos(new Point(100 + i, 100 + i));                            cOTSParticleClrs.Add(cOTSParticle);                        }                        m_EDSHardwareMgr.SetResolution(int.Parse(tbRWidth.Text), int.Parse(tbRHeight.Text));                        bool result=m_EDSHardwareMgr.GetXRayByPoints(cOTSParticleClrs, a_Milliseconds, false);                        if(!result)                        {                            log.Error("m_EDSHardwareMgr.GetXRayByPoints failed!");                        }                        int[] XData = new int[2000];                        uint nXrayCount = 0;                        for (int j = 0; j < 5; j++)                        {                            a_XrayData = cOTSParticleClrs[j].GetXray().GetXrayData();                            for (int i = 1; i <= 2000; i++)                            {                                XData[i - 1] = i;                                nXrayCount += a_XrayData[i - 1];                            }                        }                        //绑定数据源                        chartData(XData, a_XrayData);                        //显示Xray计数                        lbXrayCount.Text = nXrayCount.ToString();                    }                }                log.Info("Multipoint collection succeeded!");            }            catch (Exception ex)            {                //记录日志                log.Error(ex.Message.ToString());            }            finally            {                string str = table["btnpointxray"].ToString();                btnPointXRay.Text = str;                btnPointXRay.Enabled = true;                btnPointXRay.Refresh();                btnDisplayXRay.Enabled = true;                btnDisplayXRay.Refresh();                btnAreaRay.Enabled = true;                btnAreaRay.Refresh();                btnClearData.Enabled = true;                btnClearData.Refresh();                //EDS过程结束                //cfun.EDSFinishedInstance();                //关闭连接                DisConnectSem(connectionEnumType.EDSMultiPointXRay);            }        }        private void btnAreaRay_Click(object sender, EventArgs e)        {            GetAreaRay();        }        protected void GetAreaRay()        {            try            {                string str = table["str1"].ToString();                btnDisplayXRay.Enabled = false;                btnDisplayXRay.Refresh();                btnPointXRay.Enabled = false;                btnPointXRay.Refresh();                btnAreaRay.Text = str;                btnAreaRay.Enabled = false;                btnAreaRay.Refresh();                btnClearData.Enabled = false;                btnClearData.Refresh();                InitXRayData();                if (ConnectionSem(connectionEnumType.EDSAreaXRay))                {                    if (EDSInit())                    {                        //图像数据                        uint[] a_XrayData = new uint[2000];                        uint a_Milliseconds = 0;                        //采集时间                        a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);                        //采集XRay数据                        var fea = new COTSFeatureClr();                        var segs = new List<COTSSegmentClr>();                        segs.Add(new COTSSegmentClr(5, 10, 12));                        segs.Add(new COTSSegmentClr(6, 10, 12));                        segs.Add(new COTSSegmentClr(7, 10, 12));                        fea.SetSegmentsList(segs,false);                        string ele = "";                        bool isTrue = m_EDSHardwareMgr.GetXRayBySingleFeature(a_Milliseconds, fea, ref a_XrayData,ref ele, false);                        if (!isTrue)                        {                            log.Error("GetAreaRay() failed!");                        }                        int[] XData = new int[2000];                        uint nXrayCount = 0;                        for (int i = 1; i <= 2000; i++)                        {                            XData[i - 1] = i;                            nXrayCount += a_XrayData[i - 1];                        }                        //绑定数据源                        chartData(XData, a_XrayData);                        //显示Xray计数                        lbXrayCount.Text = nXrayCount.ToString();                    }                }            }            catch (Exception ex)            {                //记录日志                log.Error(ex.Message.ToString());            }            finally            {                string str = table["btnarearay"].ToString();                btnPointXRay.Enabled = true;                btnPointXRay.Refresh();                btnDisplayXRay.Enabled = true;                btnDisplayXRay.Refresh();                btnAreaRay.Text = str;                btnAreaRay.Enabled = true;                btnAreaRay.Refresh();                btnClearData.Enabled = true;                btnClearData.Refresh();                //EDS过程结束                //cfun.EDSFinishedInstance();                //关闭连接                DisConnectSem(connectionEnumType.EDSAreaXRay);            }        }        private void btnClearData_Click(object sender, EventArgs e)        {            try            {                InitXRayData();            }            catch (Exception ex)            {                //记录日志                log.Error(ex.Message.ToString());            }        }        public void InitXRayData()        {            try            {                //图像数据                uint[] a_XrayData = new uint[2000];                uint a_Milliseconds = 0;                //采集时间                a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);                //采集XRay数据                int[] XData = new int[2000];                uint nXrayCount = 0;                for (int i = 1; i <= 2000; i++)                {                    XData[i - 1] = i;                    nXrayCount += a_XrayData[i - 1];                }                //绑定数据源                chartData(XData, a_XrayData);                //显示Xray计数                lbXrayCount.Text = nXrayCount.ToString();                chartXRay.Refresh();                //EDS过程结束                //cfun.EDSFinishedInstance();                ConnectionState = false;                log.Info("Cleared successfully!");            }            catch (Exception ex)            {                //记录日志                log.Error(ex.Message.ToString());            }        }        #region 获取元素分析        private void btnEanalysis_Click(object sender, EventArgs e)        {            GetEanalysis();        }        protected void GetEanalysis()        {            try            {                string str = table["str1"].ToString();                btnDisplayXRay.Enabled = false;                btnDisplayXRay.Refresh();                btnPointXRay.Enabled = false;                btnPointXRay.Refresh();                btnAreaRay.Enabled = false;                btnAreaRay.Refresh();                btnEanalysis.Text = str;                btnEanalysis.Enabled = false;                btnEanalysis.Refresh();                btnClearData.Enabled = false;                btnClearData.Refresh();                InitXRayData();                if (ConnectionSem(connectionEnumType.EDSAreaXRay))                {                    if (EDSInit())                    {                        //图像数据                        uint[] a_XrayData = new uint[2000];                        uint a_Milliseconds = 0;                        //采集时间                        a_Milliseconds = Convert.ToUInt32(tbCollectionTime.Text);                        //采集元素分析数据                        ValueType a_nElementNum = 0;                        string a_strResult = string.Empty;                        try                        {                            m_EDSHardwareMgr.GetXRayElements(a_Milliseconds, ref a_XrayData, ref a_nElementNum, ref a_strResult);                        }                        catch (Exception ex)                        {                            log.Error("ControllerSettingForm_btnEanalysis_Click:--GetXRayElements()_Exception" + ex.Message.ToString());                        }                        int[] XData = new int[2000];                        uint nXrayCount = 0;                        for (int i = 1; i <= 2000; i++)                        {                            XData[i - 1] = i;                            nXrayCount += a_XrayData[i - 1];                        }                        //绑定数据源                        chartData(XData, a_XrayData);                        //显示Xray计数                        lbXrayCount.Text = nXrayCount.ToString();                        //显示元素分析结果内容                        ShowXRayElementResultForm showXRayElementResultForm = new ShowXRayElementResultForm((int)a_nElementNum, a_strResult);                        showXRayElementResultForm.ShowDialog();                    }                }                log.Info("Element analysis success!");            }            catch (Exception ex)            {                //记录日志                log.Error(ex.Message.ToString());            }            finally            {                string str = table["btneanalysis"].ToString();                btnPointXRay.Enabled = true;                btnPointXRay.Refresh();                btnDisplayXRay.Enabled = true;                btnDisplayXRay.Refresh();                btnAreaRay.Enabled = true;                btnAreaRay.Refresh();                btnEanalysis.Text = str;                btnEanalysis.Enabled = true;                btnEanalysis.Refresh();                btnClearData.Enabled = true;                btnClearData.Refresh();                //EDS过程结束                //cfun.EDSFinishedInstance();                //关闭连接                DisConnectSem(connectionEnumType.EDSAreaXRay);            }        }        #endregion    }}
 |