//using CodeProvider;
|
using DevExpress.Utils.Extensions;
|
using DevExpress.XtraEditors.Controls;
|
using Yw;
|
using Yw.WinFrmUI;
|
|
namespace IBox.WinFrmUI
|
{
|
public partial class IBoxFormProtocol : DocumentPage
|
{
|
|
public IBoxFormProtocol()
|
{
|
this.PageTitle.Caption = "协议配置";
|
InitializeComponent();
|
SetData();
|
|
}
|
public event EventHandler<string> SendData;
|
private void SendText(string content)
|
{
|
SendData?.Invoke(null, content);
|
}
|
|
|
|
private void simpleButton1_Click(object sender, EventArgs e)
|
{
|
Save();
|
MessageBoxHelper.ShowInfo("数据保存成功!");
|
}
|
|
/// <summary>
|
/// 保存数据
|
/// </summary>
|
public void Save()
|
{
|
SendText(IBoxHelper.startCode + IBoxHelper.saveprotocolCode + IBoxHelper.paramCode + JsonHelper.Object2Json(GetData()) + IBoxHelper.endCode);
|
|
}
|
|
public void SetData()
|
{
|
|
var control = new ProtocolModbus();
|
control.Dock = DockStyle.Fill;
|
AddControl(control);
|
|
var protocolTypes = new dModbus().ProtocolType();
|
protocolTypes.ForEach((p) =>
|
{
|
imageComboBoxEditType.Properties.Items.Add(p.Key, p.Value, -1);
|
});
|
|
imageComboBoxEditType.SelectItemByDescription("ModbusRTU");
|
}
|
|
private void imageComboBoxEdit1_SelectedValueChanged(object sender, EventArgs e)
|
{
|
var cbItem = imageComboBoxEditType.SelectedItem as ImageComboBoxItem;
|
var v = cbItem.Value as string;
|
ChangeType(v, null);
|
}
|
|
private IBoxProtocolViewModel GetData()
|
{
|
IBoxProtocolViewModel model = new IBoxProtocolViewModel();
|
var cbItem = imageComboBoxEditType.SelectedItem as ImageComboBoxItem;
|
var v = cbItem.Value as string;
|
switch (v)
|
{
|
case "ModbusRTU":
|
case "ModbusAscii":
|
{
|
model = protocolModbus.GetData();
|
break;
|
}
|
case "ModbusTcp":
|
{
|
model = protocolModbusTcp.GetData();
|
break;
|
}
|
case "S7200":
|
case "S7200Smart":
|
case "S7300":
|
case "S7400":
|
case "S71200":
|
case "S71500":
|
{
|
model = protocolXMZ.GetData();
|
break;
|
}
|
case "MCQna3E":
|
case "MCA1E":
|
{
|
model = protocolSL.GetData();
|
break;
|
}
|
case "Fins":
|
{
|
model = protocolOML.GetData();
|
break;
|
}
|
case "CIP":
|
{
|
model = protocolLKWE.GetData();
|
break;
|
}
|
}
|
model.ProtocolType = v;
|
|
return model;
|
}
|
|
private ProtocolModbus protocolModbus;
|
private ProtocolModbusTcp protocolModbusTcp;
|
private ProtocolXMZ protocolXMZ;
|
private ProtocolSL protocolSL;
|
private ProtocolOML protocolOML;
|
private ProtocolLKWE protocolLKWE;
|
|
private void ChangeType(string v, IBoxProtocolViewModel model)
|
{
|
switch (v)
|
{
|
case "ModbusRTU":
|
case "ModbusAscii":
|
{
|
protocolModbus = new ProtocolModbus();
|
protocolModbus.Dock = DockStyle.Fill;
|
if (model != null)
|
protocolModbus.SetData(model);
|
AddControl(protocolModbus);
|
break;
|
}
|
case "ModbusTcp":
|
{
|
protocolModbusTcp = new ProtocolModbusTcp();
|
protocolModbusTcp.Dock = DockStyle.Fill;
|
if (model != null)
|
protocolModbusTcp.SetData(model);
|
AddControl(protocolModbusTcp);
|
break;
|
}
|
case "S7200":
|
case "S7200Smart":
|
case "S7300":
|
case "S7400":
|
case "S71200":
|
case "S71500":
|
{
|
protocolXMZ = new ProtocolXMZ();
|
protocolXMZ.Dock = DockStyle.Fill;
|
if (model != null)
|
protocolXMZ.SetData(model);
|
AddControl(protocolXMZ);
|
break;
|
}
|
case "MCQna3E":
|
case "MCA1E":
|
{
|
protocolSL = new ProtocolSL();
|
protocolSL.Dock = DockStyle.Fill;
|
if (model != null)
|
protocolSL.SetData(model);
|
AddControl(protocolSL);
|
break;
|
}
|
case "Fins":
|
{
|
protocolOML = new ProtocolOML();
|
protocolOML.Dock = DockStyle.Fill;
|
if (model != null)
|
protocolOML.SetData(model);
|
AddControl(protocolOML);
|
break;
|
}
|
case "CIP":
|
{
|
protocolLKWE = new ProtocolLKWE();
|
protocolLKWE.Dock = DockStyle.Fill;
|
if (model != null)
|
protocolLKWE.SetData(model);
|
AddControl(protocolLKWE);
|
break;
|
}
|
}
|
}
|
|
private void AddControl(Control control)
|
{
|
if (panelControl1.Controls.Count > 0)
|
{
|
panelControl1.Controls.RemoveAt(0);
|
}
|
panelControl1.Controls.Add(control);
|
}
|
|
private void EboxFormProtocol_Load(object sender, EventArgs e)
|
{
|
Thread.Sleep(500);
|
SendText(IBoxHelper.startCode + IBoxHelper.getprotocolCode + IBoxHelper.paramCode + IBoxHelper.endCode);
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
/// <param name="model"></param>
|
/// <param name="isBlue"></param>
|
public void BindData(IBoxProtocolViewModel model, bool isBlue = true)
|
{
|
if (model == null)
|
{
|
model = new IBoxProtocolViewModel()
|
{
|
ProtocolType = "ModbusRTU",
|
BaudRate = 9600,
|
dataBits = 8,
|
parity = System.IO.Ports.Parity.None,
|
StationNumber = 1,
|
stopBits = System.IO.Ports.StopBits.One
|
};
|
}
|
if (isBlue)
|
{
|
this.Invoke(new Action(() =>
|
{
|
var protocols = new dModbus().ProtocolType();
|
var des = protocols.FirstOrDefault(x => x.Value == model.ProtocolType).Key;
|
imageComboBoxEditType.SelectItemByDescription(des);
|
ChangeType(model.ProtocolType, model);
|
}));
|
}
|
else
|
{
|
var protocols = new dModbus().ProtocolType();
|
var des = protocols.FirstOrDefault(x => x.Value == model.ProtocolType).Key;
|
imageComboBoxEditType.SelectItemByDescription(des);
|
ChangeType(model.ProtocolType, model);
|
}
|
|
}
|
}
|
}
|