//using CodeProvider; using DevExpress.Utils.Extensions; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraLayout; using Yw; using Yw.WinFrmUI; namespace IBox.WinFrmUI { public partial class IBoxFormProtocol : DocumentPage { public IBoxFormProtocol() { this.PageTitle.Caption = "协议配置"; InitializeComponent(); SetData(); } public event EventHandler SendData; private void SendText(string content) { if (SendData != null) { SendData?.Invoke(null, content); } else { if (IBoxHelper.Ping()) { var smsg = content.Split(new string[] { IBoxHelper.paramCode, IBoxHelper.startCode }, StringSplitOptions.RemoveEmptyEntries); if (smsg.Length < 2) { return; } switch (smsg[0].Trim()) { case IBoxHelper.getprotocolCode: { var order = IBoxHelper.HttpGet(content); var result = IBoxHelper.GetContent(order); if (!string.IsNullOrEmpty(result)) { var model = JsonHelper.Json2Object(result); BindData(model, false); } break; } case IBoxHelper.saveprotocolCode: { IBoxHelper.HttpPost(content); break; } default: IBoxHelper.HttpGet(content); break; } } else { MessageBoxHelper.ShowWarning("网络连接失败,请检查网络"); } } } public void HideButton() { //simpleButton1.Visible = false; layoutControlItem4.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; } private void simpleButton1_Click(object sender, EventArgs e) { Save(); } /// /// 保存数据 /// public void Save() { SendText(IBoxHelper.startCode + IBoxHelper.saveprotocolCode + IBoxHelper.paramCode + JsonHelper.Object2Json(GetData()) + IBoxHelper.endCode); MessageBoxHelper.ShowInfo("数据保存成功!"); } 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); } /// /// 绑定数据 /// /// /// 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); } } } }