public override Result Open() { modbus.Open(); return(new Result { IsSuccess = modbus.IsOpen() }); }
public void Connection() { busRtuClient?.Close(); busRtuClient = new ModbusRtu(Station); busRtuClient.AddressStartWithZero = true; busRtuClient.IsStringReverse = false; try { busRtuClient.SerialPortInni(sp => { sp.PortName = serialPort.PortName; sp.BaudRate = serialPort.BaudRate; sp.DataBits = serialPort.DataBits; sp.StopBits = serialPort.StopBits; sp.Parity = serialPort.Parity; }); busRtuClient.Open(); IsConnected = true; } catch (TimeoutException ex) { EventscadaException?.Invoke(this.GetType().Name, ex.Message); } }
private void button1_Click(object sender, EventArgs e) { if (!int.TryParse(textBox2.Text, out int baudRate)) { MessageBox.Show(DemoUtils.BaudRateInputWrong); return; } if (!int.TryParse(textBox16.Text, out int dataBits)) { MessageBox.Show(DemoUtils.DataBitsInputWrong); return; } if (!int.TryParse(textBox17.Text, out int stopBits)) { MessageBox.Show(DemoUtils.StopBitInputWrong); return; } if (!byte.TryParse(textBox15.Text, out byte station)) { MessageBox.Show("Station input wrong!"); return; } busRtuClient?.Close( ); busRtuClient = new ModbusRtu(station); busRtuClient.AddressStartWithZero = checkBox1.Checked; ComboBox2_SelectedIndexChanged(null, new EventArgs( )); busRtuClient.IsStringReverse = checkBox3.Checked; try { busRtuClient.SerialPortInni(sp => { sp.PortName = comboBox3.Text; sp.BaudRate = baudRate; sp.DataBits = dataBits; sp.StopBits = stopBits == 0 ? System.IO.Ports.StopBits.None : (stopBits == 1 ? System.IO.Ports.StopBits.One : System.IO.Ports.StopBits.Two); sp.Parity = comboBox1.SelectedIndex == 0 ? System.IO.Ports.Parity.None : (comboBox1.SelectedIndex == 1 ? System.IO.Ports.Parity.Odd : System.IO.Ports.Parity.Even); }); busRtuClient.RtsEnable = checkBox5.Checked; busRtuClient.Open( ); button2.Enabled = true; button1.Enabled = false; panel2.Enabled = true; userControlReadWriteOp1.SetReadWriteNet(busRtuClient, "100", false); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public CameraController(VM_MSConfig msConfig) { Config = msConfig; busRtuClient?.Close(); busRtuClient = new ModbusRtu(Config.Station); busRtuClient.AddressStartWithZero = Config.DDFlag; busRtuClient.IsStringReverse = Config.ComFlag; try { busRtuClient.SerialPortInni(sp => { sp.PortName = Config.Com; sp.BaudRate = Config.BaudRate; sp.DataBits = Config.DataBits; sp.StopBits = Config.StopBits == 0 ? System.IO.Ports.StopBits.None : (Config.StopBits == 1 ? System.IO.Ports.StopBits.One : System.IO.Ports.StopBits.Two); sp.Parity = Config.Parity == 0 ? System.IO.Ports.Parity.None : (Config.Parity == 1 ? System.IO.Ports.Parity.Odd : System.IO.Ports.Parity.Even); }); busRtuClient.Open(); LogHelper.WriteInfoLog("busRtuClient Open Succeed!"); } catch (Exception ex) { LogHelper.WriteInfoLog(ex.Message); } }
public void connect() { if (!int.TryParse(config.botelv, out int baudRate)) { MessageBox.Show(DemoUtils.BaudRateInputWrong); return; } if (!int.TryParse(config.shujuwei, out int dataBits)) { MessageBox.Show(DemoUtils.DataBitsInputWrong); return; } if (!int.TryParse(config.tingzhiwei, out int stopBits)) { MessageBox.Show(DemoUtils.StopBitInputWrong); return; } if (!byte.TryParse(config.zhanhao, out byte station)) { MessageBox.Show("Station input wrong!"); return; } busRtuClient?.Close(); busRtuClient = new ModbusRtu(station); busRtuClient.AddressStartWithZero = config.dataFromZero; busRtuClient.IsStringReverse = config.stringReverse; try { busRtuClient.SerialPortInni(sp => { sp.PortName = config.COM_Name; sp.BaudRate = baudRate; sp.DataBits = dataBits; sp.StopBits = stopBits == 0 ? System.IO.Ports.StopBits.None : (stopBits == 1 ? System.IO.Ports.StopBits.One : System.IO.Ports.StopBits.Two); sp.Parity = config.checkInfo == 0 ? System.IO.Ports.Parity.None : (config.checkInfo == 1 ? System.IO.Ports.Parity.Odd : System.IO.Ports.Parity.Even); }); busRtuClient.Open(); // button2.Enabled = true; // button1.Enabled = false; //panel2.Enabled = true; //userControlCurve1.ReadWriteNet = busRtuClient; } catch (Exception ex) { MessageBox.Show("串口打开失败!!"); MessageBox.Show(ex.Message); } }
private void btnCom_Click(object sender, EventArgs e) { if (IsOpen) { try { busRtuClient.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } btnCom.Text = "打开串口"; picComStatus.BackgroundImage = Properties.Resources.redlight; IsOpen = false; } else { busRtuClient?.Close(); busRtuClient = new ModbusRtu(); busRtuClient.AddressStartWithZero = checkBox1.Checked; ComboBox2_SelectedIndexChanged(null, new EventArgs()); busRtuClient.IsStringReverse = checkBox3.Checked; try { busRtuClient.SerialPortInni(sp => { sp.PortName = drpComList.SelectedItem.ToString();; sp.BaudRate = Convert.ToInt32(drpBaudRate.SelectedItem.ToString()); sp.DataBits = Convert.ToInt32(drpDataBits.SelectedItem.ToString()); sp.StopBits = (StopBits)Convert.ToInt32(drpStopBits.SelectedItem.ToString()); sp.Parity = (Parity)Convert.ToInt32(drpParity.SelectedIndex.ToString()); }); busRtuClient.Open(); btnCom.Text = "关闭串口"; picComStatus.BackgroundImage = Properties.Resources.greenlight; } catch (Exception ex) { btnCom.Text = "打开串口"; picComStatus.BackgroundImage = Properties.Resources.redlight; MessageBox.Show(ex.Message); } IsOpen = true; } // busRtuClient?.Close(); }
private void button1_Click(object sender, EventArgs e) { if (!int.TryParse(textBox2.Text, out int baudRate)) { MessageBox.Show("波特率输入错误!"); return; } if (!int.TryParse(textBox16.Text, out int dataBits)) { MessageBox.Show("数据位输入错误!"); return; } if (!int.TryParse(textBox17.Text, out int stopBits)) { MessageBox.Show("停止位输入错误!"); return; } if (!byte.TryParse(textBox15.Text, out byte station)) { MessageBox.Show("站号输入不正确!"); return; } busRtuClient?.Close( ); busRtuClient = new ModbusRtu(station); busRtuClient.AddressStartWithZero = checkBox1.Checked; busRtuClient.IsMultiWordReverse = checkBox2.Checked; busRtuClient.IsStringReverse = checkBox3.Checked; try { busRtuClient.SerialPortInni(sp => { sp.PortName = textBox1.Text; sp.BaudRate = baudRate; sp.DataBits = dataBits; sp.StopBits = stopBits == 0 ? System.IO.Ports.StopBits.None : (stopBits == 1 ? System.IO.Ports.StopBits.One : System.IO.Ports.StopBits.Two); sp.Parity = comboBox1.SelectedIndex == 0 ? System.IO.Ports.Parity.None : (comboBox1.SelectedIndex == 1 ? System.IO.Ports.Parity.Odd : System.IO.Ports.Parity.Even); }); busRtuClient.Open( ); button2.Enabled = true; button1.Enabled = false; panel2.Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
protected override bool Connect() { try { _modbusDevice.SerialPortInni(sp => { sp.PortName = Port; sp.StopBits = StopBits.One; sp.DataBits = DataBit; sp.BaudRate = BaudRate; sp.Parity = parity; }); try { _modbusDevice.Close(); } catch { } _modbusDevice.Open(); if (_modbusDevice.IsOpen()) { LOG.Info($"Connect to ModbusRtu device [{SourceName}] success."); return(true); } else { LOG.Info($"Connect to ModbusRtu device [{SourceName}] failed."); return(false); } } catch (Exception ex) { LOG.Error($"Connect to ModbusRtu device [{SourceName}] Exception:{ex.Message}"); return(false); } }
public void ModbusRtuUnitTest( ) { ModbusRtu modbus = new ModbusRtu(1); modbus.SerialPortInni("COM2", 9600); try { modbus.Open( ); } catch { Console.WriteLine("无法连接modbus,将跳过单元测试。等待网络正常时,再进行测试"); return; } // 开始单元测试,从coil类型开始测试 string address = "1200"; bool[] boolTmp = new bool[] { true, true, false, true, false, true, false }; Assert.IsTrue(modbus.WriteCoil(address, true).IsSuccess); Assert.IsTrue(modbus.ReadCoil(address).Content == true); Assert.IsTrue(modbus.WriteCoil(address, boolTmp).IsSuccess); bool[] readBool = modbus.ReadCoil(address, (ushort)boolTmp.Length).Content; for (int i = 0; i < boolTmp.Length; i++) { Assert.IsTrue(readBool[i] == boolTmp[i]); } address = "300"; // short类型 Assert.IsTrue(modbus.Write(address, (short)12345).IsSuccess); Assert.IsTrue(modbus.ReadInt16(address).Content == 12345); short[] shortTmp = new short[] { 123, 423, -124, 5313, 2361 }; Assert.IsTrue(modbus.Write(address, shortTmp).IsSuccess); short[] readShort = modbus.ReadInt16(address, (ushort)shortTmp.Length).Content; for (int i = 0; i < readShort.Length; i++) { Assert.IsTrue(readShort[i] == shortTmp[i]); } // ushort类型 Assert.IsTrue(modbus.Write(address, (ushort)51234).IsSuccess); Assert.IsTrue(modbus.ReadUInt16(address).Content == 51234); ushort[] ushortTmp = new ushort[] { 5, 231, 12354, 5313, 12352 }; Assert.IsTrue(modbus.Write(address, ushortTmp).IsSuccess); ushort[] readUShort = modbus.ReadUInt16(address, (ushort)ushortTmp.Length).Content; for (int i = 0; i < ushortTmp.Length; i++) { Assert.IsTrue(readUShort[i] == ushortTmp[i]); } // int类型 Assert.IsTrue(modbus.Write(address, 12342323).IsSuccess); Assert.IsTrue(modbus.ReadInt32(address).Content == 12342323); int[] intTmp = new int[] { 123812512, 123534, 976124, -1286742 }; Assert.IsTrue(modbus.Write(address, intTmp).IsSuccess); int[] readint = modbus.ReadInt32(address, (ushort)intTmp.Length).Content; for (int i = 0; i < intTmp.Length; i++) { Assert.IsTrue(readint[i] == intTmp[i]); } // uint类型 Assert.IsTrue(modbus.Write(address, (uint)416123237).IsSuccess); Assert.IsTrue(modbus.ReadUInt32(address).Content == (uint)416123237); uint[] uintTmp = new uint[] { 81623123, 91712749, 91273123, 123, 21242, 5324 }; Assert.IsTrue(modbus.Write(address, uintTmp).IsSuccess); uint[] readuint = modbus.ReadUInt32(address, (ushort)uintTmp.Length).Content; for (int i = 0; i < uintTmp.Length; i++) { Assert.IsTrue(readuint[i] == uintTmp[i]); } // float类型 Assert.IsTrue(modbus.Write(address, 123.45f).IsSuccess); Assert.IsTrue(modbus.ReadFloat(address).Content == 123.45f); float[] floatTmp = new float[] { 123, 5343, 1.45f, 563.3f, 586.2f }; Assert.IsTrue(modbus.Write(address, floatTmp).IsSuccess); float[] readFloat = modbus.ReadFloat(address, (ushort)floatTmp.Length).Content; for (int i = 0; i < readFloat.Length; i++) { Assert.IsTrue(floatTmp[i] == readFloat[i]); } // double类型 Assert.IsTrue(modbus.Write(address, 1234.5434d).IsSuccess); Assert.IsTrue(modbus.ReadDouble(address).Content == 1234.5434d); double[] doubleTmp = new double[] { 1.4213d, 1223d, 452.5342d, 231.3443d }; Assert.IsTrue(modbus.Write(address, doubleTmp).IsSuccess); double[] readDouble = modbus.ReadDouble(address, (ushort)doubleTmp.Length).Content; for (int i = 0; i < doubleTmp.Length; i++) { Assert.IsTrue(readDouble[i] == doubleTmp[i]); } // long类型 Assert.IsTrue(modbus.Write(address, 123617231235123L).IsSuccess); Assert.IsTrue(modbus.ReadInt64(address).Content == 123617231235123L); long[] longTmp = new long[] { 12312313123L, 1234L, 412323812368L, 1237182361238123 }; Assert.IsTrue(modbus.Write(address, longTmp).IsSuccess); long[] readLong = modbus.ReadInt64(address, (ushort)longTmp.Length).Content; for (int i = 0; i < longTmp.Length; i++) { Assert.IsTrue(readLong[i] == longTmp[i]); } // ulong类型 Assert.IsTrue(modbus.Write(address, 1283823681236123UL).IsSuccess); Assert.IsTrue(modbus.ReadUInt64(address).Content == 1283823681236123UL); ulong[] ulongTmp = new ulong[] { 21316UL, 1231239127323UL, 1238612361283123UL }; Assert.IsTrue(modbus.Write(address, ulongTmp).IsSuccess); ulong[] readULong = modbus.ReadUInt64(address, (ushort)ulongTmp.Length).Content; for (int i = 0; i < readULong.Length; i++) { Assert.IsTrue(readULong[i] == ulongTmp[i]); } // string类型 Assert.IsTrue(modbus.Write(address, "123123").IsSuccess); Assert.IsTrue(modbus.ReadString(address, 3).Content == "123123"); // byte类型 byte[] byteTmp = new byte[] { 0x4F, 0x12, 0x72, 0xA7, 0x54, 0xB8 }; Assert.IsTrue(modbus.Write(address, byteTmp).IsSuccess); Assert.IsTrue(SoftBasic.IsTwoBytesEquel(modbus.Read(address, 3).Content, byteTmp)); modbus.Close( ); }
//MudbusRTU设备初始化 void DoInitMudbusRtu(LD.Config.PlcTypeItem item) { // 连接 byte station; if (!byte.TryParse(item.Station, out station)) { MessageBox.Show(string.Format("station {0} input is wrong!", item.Station)); return; } int baudRate; if (!int.TryParse(item.BaudRate.ToString(), out baudRate)) { MessageBox.Show(string.Format("baudRate {0} input wrong!", item.BaudRate)); return; } int dataBits; if (!int.TryParse(item.DataBits.ToString(), out dataBits)) { MessageBox.Show(string.Format("dataBits {0} input wrong!", item.DataBits)); return; } int stopBits; if (!int.TryParse(item.StopBits.ToString(), out stopBits)) { MessageBox.Show(string.Format("stopBits {0} input wrong!", item.StopBits)); return; } ModbusRtu busRtuClient = new ModbusRtu(station); busRtuClient.AddressStartWithZero = item.AddressStartWithZero; if (busRtuClient != null) { busRtuClient.DataFormat = item.DataFormat; } busRtuClient.IsStringReverse = item.IsStringReverse; busRtuClient.SerialPortInni(sp => { sp.PortName = item.PortName; sp.BaudRate = baudRate; sp.DataBits = dataBits; sp.StopBits = stopBits == 0 ? StopBits.None : (stopBits == 1 ? StopBits.One : StopBits.Two); sp.Parity = item.Parity; }); item.Tag = busRtuClient; busRtuClient.Open(); if (busRtuClient.IsOpen()) { item.IsConnected = true; //Plcs.Add(item.DevName, busRtuClient); } else { item.IsConnected = false; } }
private void Form1_Load(object sender, EventArgs e) { try { //温度压力串口配置 busRtuClient.SerialPortInni(sp => { port4(); #region 温度串口配置 //sp.PortName = "COM6"; //sp.BaudRate = 9600; //sp.DataBits = 8; //sp.StopBits = System.IO.Ports.StopBits.One; //sp.Parity = System.IO.Ports.Parity.None; #endregion DateTimeThreadFunction = new ThreadStart(DateTimeTimer); DateTimeThreadClass = new Thread(DateTimeThreadFunction); DateTimeThreadClass.Start(); }); //打开串口 busRtuClient.Open(); } catch (Exception ex) { Common.LogHandler.WriteLog("温度压力串口获取失败"); } try { PressureValue(); } catch (Exception) { Common.LogHandler.WriteLog("压力值获取失败"); throw; } //电压端口 try { Modbus_dianya.SerialPortInni(sp => { port6(); #region 电压串口配置 //sp.PortName = "COM6"; //sp.BaudRate = 2400; //sp.DataBits = 8; //sp.StopBits = System.IO.Ports.StopBits.One; //sp.Parity = System.IO.Ports.Parity.Even; #endregion }); Modbus_dianya.Open(); try { VoltageValue(); } catch (Exception) { Common.LogHandler.WriteLog("电压值获取失败"); } } catch (Exception ex) { Common.LogHandler.WriteLog("电压串口获取失败"); } }