You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
6.3 KiB
C#
215 lines
6.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Xml;
|
|
|
|
namespace Mesnac.Equips.Connection.GroupNet
|
|
{
|
|
public partial class SetConfigForm : Form, Mesnac.Equips.Connection.ConnConfig
|
|
{
|
|
private Dictionary<string, string> dicItem = new Dictionary<string, string>();
|
|
|
|
#region 单例模式
|
|
private static SetConfigForm _this;
|
|
public static SetConfigForm Instance
|
|
{
|
|
get
|
|
{
|
|
if (null == _this)
|
|
_this = new SetConfigForm();
|
|
return _this;
|
|
}
|
|
}
|
|
#endregion
|
|
public SetConfigForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
ConnType thisConnType = new ConnType();
|
|
|
|
#region SetConfig GetConfig
|
|
public Connection.ConnType SetConfig(Connection.ConnType connType)
|
|
{
|
|
ConnType Result = new ConnType();
|
|
if (connType != null)
|
|
{
|
|
Result = (ConnType)connType;
|
|
}
|
|
try
|
|
{
|
|
if (!String.IsNullOrEmpty(Result.IPList))
|
|
{
|
|
string[] strItems = Result.IPList.Split(new char[] { ';' });
|
|
if (null != strItems)
|
|
{
|
|
foreach (string strItem in strItems)
|
|
{
|
|
if (null != strItem)
|
|
{
|
|
string[] items = strItem.Split(new char[] { ':' });
|
|
this.dicItem.Add(items[0], items[1]);
|
|
ConnItem item = new ConnItem(items[0], items[1]);
|
|
this.lstIP.Items.Add(item);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
MessageBox.Show("nodeDevice.xml设备格式配置错误:" + ex.Message);
|
|
}
|
|
this.ShowDialog();
|
|
return thisConnType;
|
|
}
|
|
|
|
private bool GetFirstNodeValue(XmlNode node, string path, string attribute, bool throwException, out string value)
|
|
{
|
|
value = string.Empty;
|
|
try
|
|
{
|
|
value = node.SelectNodes(path)[0].Attributes[attribute.ToLower()].Value.ToString();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (throwException)
|
|
{
|
|
throw (ex);
|
|
}
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
private bool GetNodeAttributeValue(XmlNode node, string attribute, bool throwException, out string value)
|
|
{
|
|
value = string.Empty;
|
|
try
|
|
{
|
|
value = node.Attributes[attribute.ToLower()].Value.ToString();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (throwException)
|
|
{
|
|
throw (ex);
|
|
}
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
public Connection.ConnType GetConfig(XmlNode node)
|
|
{
|
|
ConnType Result = new ConnType();
|
|
try
|
|
{
|
|
string ss = string.Empty;
|
|
GetFirstNodeValue(node, ".//IPList[@value]", "value", true, out ss);
|
|
Result.IPList = ss;
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
MessageBox.Show("nodeDevice.xml中设备配置错误:" + ex.Message);
|
|
}
|
|
return Result;
|
|
}
|
|
#endregion
|
|
|
|
private void btnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
if (!this.dicItem.ContainsKey(this.txtEquipCode.Text))
|
|
{
|
|
this.dicItem.Add(this.txtEquipCode.Text, this.txtIP.Text);
|
|
ConnItem item = new ConnItem();
|
|
item.EquipCode = this.txtEquipCode.Text;
|
|
item.IP = this.txtIP.Text;
|
|
this.lstIP.Items.Add(item);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("列表中已存在此机台!");
|
|
}
|
|
}
|
|
|
|
private void btnRemove_Click(object sender, EventArgs e)
|
|
{
|
|
ConnItem item = this.lstIP.SelectedItem as ConnItem;
|
|
this.lstIP.Items.Remove(this.lstIP.SelectedItem);
|
|
if (this.dicItem.ContainsKey(item.EquipCode))
|
|
{
|
|
this.dicItem.Remove(item.EquipCode);
|
|
}
|
|
}
|
|
|
|
private void btnOk_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
foreach(ConnItem item in this.lstIP.Items)
|
|
{
|
|
if (String.IsNullOrEmpty(sb.ToString()))
|
|
{
|
|
sb.Append(String.Format("{0}:{1}", item.EquipCode, item.IP));
|
|
}
|
|
else
|
|
{
|
|
sb.Append(";").Append(String.Format("{0}:{1}", item.EquipCode, item.IP));
|
|
}
|
|
}
|
|
this.thisConnType.IPList = sb.ToString();
|
|
this.Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
}
|
|
}
|
|
public class ConnType : Mesnac.Equips.Connection.ConnType
|
|
{
|
|
public ConnType()
|
|
{
|
|
this.IPList = String.Empty;
|
|
}
|
|
|
|
public string IPList
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 连接类型项目类
|
|
/// </summary>
|
|
[Serializable]
|
|
public class ConnItem
|
|
{
|
|
public ConnItem() { }
|
|
|
|
public ConnItem(string equipCode, string ip)
|
|
{
|
|
this.EquipCode = equipCode;
|
|
this.IP = ip;
|
|
}
|
|
/// <summary>
|
|
/// 机台号
|
|
/// </summary>
|
|
public string EquipCode { get; set; }
|
|
/// <summary>
|
|
/// IP地址
|
|
/// </summary>
|
|
public string IP { get; set; }
|
|
|
|
public override string ToString()
|
|
{
|
|
return String.Format("{0}:{1}", this.EquipCode, this.IP);
|
|
}
|
|
}
|
|
}
|