Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
    /// <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();
    }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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();
 }