using System;
/*
--创建人:韩维柏
--创建日期:2017-06-20
--修改人:
--修改日期:
--说明:Xray设置
*/
using System.Drawing;
using System.Windows.Forms;
using OTSSysMgrTools;
using System.Xml;
using System.IO;
using System.Windows.Forms.DataVisualization.Charting;
using System.Threading;
using System.Collections;
using NSOTSController;
using System.Collections.Generic;
using OTSCOMMONCLR;
namespace OTSSysMgrApp
{
public partial class ControllerSettingForm : Form
{
#region 全部变量声明
//连接状态
bool ConnectionState = false;
// 判断是否是模拟状态 FASE: 不是在模拟环境下 True: 在模拟环境下
//bool IsSimulationStatus = false;
//获取当前电镜的ID号
//int SemType = 0;
//获取XML 路径
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;
//图片
Bitmap bitmap = null;
//国际化
OTSSysMgrTools.Language lan;
//国际化存储信息
Hashtable table;
#endregion
public enum connectionEnumType
{
EDSOnlyPointXRay = 0,
EDSMultiPointXRay = 1,
EDSAreaXRay = 2,
ScanImage = 3
}
#region 构造函数
public ControllerSettingForm()
{
InitializeComponent();
//控制类对象初始化
if (cfun == null)
{
cfun = new COTSControlFunExport();
}
lan = new OTSSysMgrTools.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;
}
///
/// 连接电镜
///
///
public bool ConnectionSem(connectionEnumType connectionType)
{
//获取连接电镜类型
string connTypeStr = GetConnectionType(connectionType);
//连接电镜标识
bool DisConnResult = false;
//判断连接状态
if (!ConnectionState)
{
//连接电镜设置
DisConnResult = cfun.ConncetSem();
}
if (DisConnResult)
{
ConnectionState = true;
}
else
{
ConnectionState = false;
}
return DisConnResult;
}
///
/// 关闭电镜
///
///
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;
}
///
/// EDS初始化
///
public bool EDSInit()
{
bool initResult = false;
//线程调用 加载
initResult = cfun.EDSInit();
return initResult;
}
///
/// Scan初始化
///
public bool ScanInit()
{
bool initResult = false;
//线程调用 加载
initResult = cfun.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();
}
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 = ImageDispose.GetScanImage(iWidth, iHeight, ddlDwellTime.Text, ref ImageByte);
string str2 = table["str2"].ToString();
if (resultValue > 0)
{
if (ImageByte != null)
{
bitmap = ImageDispose.ToGrayBitmap(ImageByte, width, height);
pbImage.Image = bitmap;
btnSaveImage.Enabled = true;
}
else
{
MessageBox.Show(str2, "Tip");
}
}
else
{
MessageBox.Show(str2, "Tip");
}
log.Info("Image capture success!");
}
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(120);
//采集XRay数据
cfun.CollectSpectrum(a_Milliseconds, ref a_XrayData);
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数据
cfun.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 保存设置
///
/// 保存设置
///
/// 节点名称
/// 节点参数值
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 判断文件路径
///
/// 判断文件路径
///
///
///
public bool CreateFile(string path)
{
Directory.CreateDirectory(path);
return false;
}
#endregion
#region 判断文件是否存在
///
/// 判断文件是否存在
///
/// 文件路径
///
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 获取窗体中所有参数
///
/// 获取窗体中控件的所有参数
///
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 用户信息提示
///
/// 提示
///
///
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 判断控制内容是否为空 与 判断输入的格式是否正确
///
/// 判断控制内容是否为空
///
///
///
public bool IsNull(TextBox tbContent)
{
if (tbContent.Text.Trim().Equals(""))
{
//为空提示
ShowMessage(0);
//获取焦点
tbContent.Focus();
return false;
}
return true;
}
///
///
///
///
///
///
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;
}
}
///
/// 判断是否连接
///
///
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
{
//cfun.EDSFinishedInstance();
//cfun.ScanFinishedInstance();
//if (ConnectionState)
//{
// ConnectionState = cfun.DisConnectSem();
//}
//cfun.FreeDll();
}
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数据
Point p = new Point(10, 10);
string ele = "";
cfun.GetXRayBySinglePoint(a_Milliseconds,p, ref a_XrayData,ref ele,false);
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("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();
segs.Add(new COTSSegmentClr(5, 10, 5));
segs.Add(new COTSSegmentClr(6, 10, 5));
segs.Add(new COTSSegmentClr(7, 10, 5));
fea.SetSegmentsList(segs,false);
string ele = "";
cfun.GetXRayBySingleFeature(a_Milliseconds,fea, ref a_XrayData,ref ele, true);
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("Area collection successful!");
}
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();
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
{
cfun.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
}
}