private void bttn_Fetch_Click(object sender, EventArgs e) { if (chk_device1.CheckState == CheckState.Checked) { easyModbusTCPServer.UnitIdentifier = Convert.ToByte(txt_SN1.Text); lbl_DeviceID.Text = txt_SN1.Text; lbl_MobileNo.Text = txt_SIM1.Text; FetchDetails(); easyModbusTCPServer.StopListening(); Thread.Sleep(1000); } if (chk_device2.CheckState == CheckState.Checked) { easyModbusTCPServer.UnitIdentifier = Convert.ToByte(txt_SN2.Text); lbl_DeviceID.Text = txt_SN2.Text; lbl_MobileNo.Text = txt_SIM2.Text; FetchDetails(); easyModbusTCPServer.StopListening(); Thread.Sleep(1000); } if (chk_device3.CheckState == CheckState.Checked) { lbl_DeviceID.Text = txt_SN3.Text; lbl_MobileNo.Text = txt_SIM3.Text; easyModbusTCPServer.UnitIdentifier = Convert.ToByte(txt_SN3.Text); FetchDetails(); easyModbusTCPServer.StopListening(); Thread.Sleep(1000); } }
public void startServer() { modbusServer = new ModbusServer(); modbusServer.UnitIdentifier = 255; modbusServer.holdingRegisters[1012] = 1100; modbusServer.holdingRegisters[1022] = 1200; modbusServer.holdingRegisters[1032] = 1300; modbusServer.holdingRegisters[1042] = 1400; modbusServer.holdingRegisters[1052] = 1500; modbusServer.HoldingRegistersChanged += holdingRegistersChanged; modbusServer.NumberOfConnectedClientsChanged += ModbusServer_NumberOfConnectedClientsChanged; modbusServer.Listen(); Console.WriteLine("ModbusTCP server started"); while (true) { try { var read = Console.ReadLine().Trim(); if (read.Contains(" ")) { var addressAndValue = read.Split(' '); var address = int.Parse(addressAndValue[0]); var value = short.Parse(addressAndValue[1]); modbusServer.holdingRegisters[address] = value; } else if (read == "q4" || read == "p4") { for (int i = 0; i < modbusServer.holdingRegisters.localArray.Length; i++) { if (modbusServer.holdingRegisters[i] != 0) { PrintHoldingRegister(i); } } } else if (read == "exit" || read == "quit") { break; } } catch (Exception ex) { Console.WriteLine(ex.Message); } } modbusServer.StopListening(); }
/// <summary> /// Initializes a new instance of the <see cref="MainWindow"/> class. /// </summary> public MainWindow() : base(Gtk.WindowType.Toplevel) { Build(); statusbar1.TooltipText = ""; //Modbus client initialize and read - just for testing modbusClient = new ModbusClient(ipAddress, port); modbusClient.Baudrate = baudRate; modbusClient.Connect(); if (modbusClient.Connected) { bool[] readCoils = modbusClient.ReadCoils(0, 2); modbusClient.Disconnect(); } //Modbus server modbusServer = new ModbusServer(); modbusServer.Baudrate = baudRate; modbusServer.Listen(); modbusServer.StopListening(); }
private void button1_Click(object sender, EventArgs e) { if (statusServer.Text == "offline") { modbusServer = new EasyModbus.ModbusServer(); modbusServer.holdingRegisters = new EasyModbus.ModbusServer.HoldingRegisters(modbusServer); modbusServer.holdingRegisters[5] = 99; //Для примера зададим одному из регистров конкретное значение statusServer.Text = "online"; statusServer.ForeColor = Color.Green; modbusServer.Listen(); Console.Read(); } else { modbusServer.StopListening(); statusServer.Text = "offline"; statusServer.ForeColor = Color.Crimson; } }
void SetEnableds(bool val) { var gogo = true; if (!val) { if (startAddr.Text.Trim() == "") { startAddr.Focus(); return; } if (endAddr.Text.Trim() == "") { endAddr.Text = startAddr.Text; } if (startRange.Text.Trim() == "") { startRange.Focus(); return; } if (endRange.Text.Trim() == "") { endRange.Text = (Convert.ToInt32(startRange.Text) + 100).ToString(); } if (IsServer.Checked) { _mbSrv = new ModbusServer(); _mbSrv._output += (byte[] bytes, string type) => Log?.Invoke(type + " : " + BitConverter.ToString(TrimeZeros(bytes)).Replace('-', ' ')); if (radioButton1.Checked) { _mbSrv.Port = Convert.ToInt32(port.Text); _mbSrv.Listen(); } else { if (serialPort.Items.Count <= 0) { MessageBox.Show("Comport yok dedik ya.."); return; } _mbSrv.SerialPort = serialPort.SelectedItem.ToString(); _mbSrv.StopBits = System.IO.Ports.StopBits.One; _mbSrv.Parity = System.IO.Ports.Parity.None; _mbSrv.Baudrate = Convert.ToInt32(baudRate.Text); } _mbSrv.UnitIdentifier = Convert.ToByte(uID.Text); } else { _mbClt = new ModbusClient(ipAddr.Text, Convert.ToInt32(port.Text)) { UnitIdentifier = Convert.ToByte(uID.Text) }; _mbClt._output += (byte[] bytes, string type) => Log?.Invoke(type + " : " + BitConverter.ToString(TrimeZeros(bytes)).Replace('-', ' ')); try { _mbClt.Connect(); } catch (Exception ex) { gogo = false; MessageBox.Show(ex.Message); } } if (!gogo) { return; } running = true; Task.Run(async() => { var dly = Convert.ToInt32(delay.Text); var startAddress = Convert.ToInt32(startAddr.Text); var endAddress = Convert.ToInt32(endAddr.Text); var startRn = Convert.ToInt32(startRange.Text); var endRn = Convert.ToInt32(endRange.Text); while (running) { if (randomWriteChk.Checked) { if (IsServer.Checked) { for (int i = startAddress; i < endAddress; i++) { var rndVal = Convert.ToInt32(_rnd.Next(startRn, endRn >= 65536 ? 65535 : endRn)); if (rndVal >= 32768) { rndVal = ((65536 - rndVal) * -1); } var booVal = _rnd.Next(0, 2) == 1; if (radHR.Checked) { _mbSrv.holdingRegisters.localArray[i] = Convert.ToInt16(rndVal); } else if (radIR.Checked) { _mbSrv.inputRegisters.localArray[i] = Convert.ToInt16(rndVal); } else if (radCO.Checked) { _mbSrv.coils.localArray[i] = booVal; } else if (radDis.Checked) { _mbSrv.discreteInputs.localArray[i] = booVal; } } } else { if (radHR.Checked) { List <int> _values = new List <int>(); for (int i = startAddress; i < endAddress; i++) { var rndVal = _rnd.Next(startRn, endRn >= 65536 ? 65535 : endRn); if (rndVal >= 32768) { rndVal = ((65536 - rndVal) * -1); } _values.Add(rndVal); } _mbClt.WriteMultipleRegisters(startAddress, _values.ToArray()); } else if (radCO.Checked) { List <bool> _values = new List <bool>(); for (int i = startAddress; i < endAddress; i++) { _values.Add(_rnd.Next(0, 2) == 1); } _mbClt.WriteMultipleCoils(startAddress, _values.ToArray()); } } } await Task.Delay(dly); } }); } else { running = false; if (IsServer.Checked) { _mbSrv.StopListening(); } else { _mbClt.Disconnect(); } } button2.Enabled = !val; button1.Enabled = val; startAddr.Enabled = val; endAddr.Enabled = val; startRange.Enabled = val; endRange.Enabled = val; delay.Enabled = val; port.Enabled = val; uID.Enabled = val; radioButton1.Enabled = val; radioButton2.Enabled = val; showSignalPanel.Enabled = !val; }
public void Dispose() { _modbusServer.StopListening(); }