using Modbus.Device; using Sunny.UI; using System; using System.Threading; using System.Windows.Forms; namespace 口罩泄露定制款 { public class Function { ModbusMaster master; DataChange dc = new DataChange(); public enum ButtonType { 复归型, 切换型, 置位型, 复位型 } public enum DataType { 整形, 浮点型 } public Function(ModbusMaster master_in) { this.master = master_in; } public void BtnClickFunction(ButtonType buttonType, ushort address) { try { switch (buttonType) { case ButtonType.复归型: master?.WriteSingleCoil(1, address, true); Thread.Sleep(100); master?.WriteSingleCoil(1, address, false); Thread.Sleep(100); break; case ButtonType.切换型: if (master.ReadCoils(1, address, 1)[0]) { master?.WriteSingleCoil(1, address, false);Thread.Sleep(100); } else { master?.WriteSingleCoil(1, address, true); Thread.Sleep(100); } break; case ButtonType.置位型: master?.WriteSingleCoil(1, address, true); Thread.Sleep(100); break; case ButtonType.复位型: master?.WriteSingleCoil(1, address, false); Thread.Sleep(100); break; default: break; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } public void WriteToPLC(string inPutValue, ushort address, DataType dataType) { try { switch (dataType) { case DataType.浮点型: double value = inPutValue.ToDouble(); if (UIInputDialog.ShowInputDoubleDialog(ref value, UIStyle.Inherited, desc: "请输入值", showMask: false)) { master.WriteMultipleRegisters(1, address, dc.SplitFloatToUShortArray((float)value)); } break; case DataType.整形: int value_int = inPutValue.ToInt(); if (UIInputDialog.ShowInputIntegerDialog(ref value_int, UIStyle.Inherited, desc: "请输入数据:")) { master.WriteMultipleRegisters(1, address, dc.intToushorts(value_int)); } break; default: break; } } catch (Exception ex) { MessageBox.Show("操作失败!" + "\n" + "\n" + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }