//using CodeProvider; using DevExpress.Utils.Extensions; using DevExpress.XtraEditors.Controls; using System.Data; using Yw; using Yw.WinFrmUI; namespace IBox.WinFrmUI { public partial class IBoxFormProtocol : DocumentPage { private string startCode = "[&start&]"; private string endCode = "[&end&]"; private string paramCode = "[¶m&]"; private string getprotocolCode = "getprotocol"; private string saveprotocolCode = "saveprotocol"; public IBoxFormProtocol() { this.PageTitle.Caption = "协议配置"; InitializeComponent(); SetData(); } public event EventHandler SendData; private void SendText(string content) { //BluetoothHelper.GetInstance().SendData(content); SendData?.Invoke(null, content); } public void GetReceive(string msg) { if (!this.IsHandleCreated || this.IsDisposed || string.IsNullOrEmpty(msg)) return; if (msg.StartsWith("error:") && msg.Contains("目标主机坏了")) { MessageBoxHelper.ShowError("pr 蓝牙设备连接失败,请重试!"); return; } if (!string.IsNullOrEmpty(msg) && msg.Contains(startCode)) { var order = msg.Replace(endCode, "").Replace(startCode, "").Trim(); SetOrder(order); } else MessageBoxHelper.ShowError("pr 蓝牙设备连接失败!"); } private void simpleButton1_Click(object sender, EventArgs e) { SendText(startCode + saveprotocolCode + paramCode + JsonHelper.Object2Json(GetData()) + endCode); MessageBoxHelper.ShowInfo("数据保存成功!"); } private 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(startCode + getprotocolCode + paramCode + endCode); //BluetoothHelper.GetInstance().SMR -= null; //BluetoothHelper.GetInstance().SMR += new BluetoothHelper.ShowMessReturn(GetReceive); } private void SetOrder(string order) { var smsg = order.Split(new string[] { paramCode }, StringSplitOptions.RemoveEmptyEntries); if (smsg.Length < 2) { return; } switch (smsg[0].Trim()) { case "getprotocol": var model = JsonHelper.Json2Object(smsg[1].Trim()); BindData(model); break; } } 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); } } } }