Ejemplo n.º 1
0
 public void Handle(IModbusServer Server)
 {
     try
     {
         Value = Server.ReadDiscreteInputs(StartingAddress, Quantity);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     }
 }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Server.WriteSingleRegister(StartingAddress, Value);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     };
 }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Server.WriteMultipleCoils(StartingAddress, Value);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     }
 }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Value = Server.ReadHoldingRegisters(StartingAddress, Quantity);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     }
 }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Server.WriteSingleRegister(StartingAddress, Value);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     };
 }
Ejemplo n.º 6
0
        private static async Task <int> RunServerAsync(ILogger logger, CancellationToken cancellationToken)
        {
            Console.Write("Connection Type [1] TCP, [2] RS485: ");
            int cType = Convert.ToInt32(Console.ReadLine().Trim());

            IModbusServer server = null;

            try
            {
                switch (cType)
                {
                case 1:
                {
                    Console.Write("Bind IP address: ");
                    var ip = IPAddress.Parse(Console.ReadLine().Trim());

                    Console.Write("Port: ");
                    int port = Convert.ToInt32(Console.ReadLine().Trim());

                    var tcp = new TcpServer(port, ip, logger)
                    {
                        Timeout = TimeSpan.FromSeconds(3)
                    };

                    server = tcp;
                }
                break;

                case 2:
                {
                    Console.Write("Interface: ");
                    string port = Console.ReadLine().Trim();

                    Console.Write("Baud: ");
                    int baud = Convert.ToInt32(Console.ReadLine().Trim());

                    Console.Write("Stop-Bits [0|1|2|3=1.5]: ");
                    int stopBits = Convert.ToInt32(Console.ReadLine().Trim());

                    Console.Write("Parity [0] None [1] Odd [2] Even [3] Mark [4] Space: ");
                    int parity = Convert.ToInt32(Console.ReadLine().Trim());

                    Console.Write("Handshake [0] None [1] X-On/Off [2] RTS [3] RTS+X-On/Off: ");
                    int handshake = Convert.ToInt32(Console.ReadLine().Trim());

                    Console.Write("Timeout (ms): ");
                    int timeout = Convert.ToInt32(Console.ReadLine().Trim());

                    server = new SerialServer(port)
                    {
                        BaudRate  = (BaudRate)baud,
                        DataBits  = 8,
                        StopBits  = (StopBits)stopBits,
                        Parity    = (Parity)parity,
                        Handshake = (Handshake)handshake,
                        Timeout   = TimeSpan.FromMilliseconds(timeout)
                    };
                }
                break;

                default:
                    throw new ArgumentException("Type unknown");
                }

                server.AddDevice(1);
                server.AddDevice(5);
                server.AddDevice(10);

                Register.Create(123.45f, 100, false).ForEach(r => server.SetHoldingRegister(1, r));

                Console.WriteLine("Server is running... press CTRL+C to exit.");
                await Task.Delay(Timeout.Infinite, cancellationToken);
            }
            catch (OperationCanceledException) when(cancellationToken.IsCancellationRequested)
            {
            }
            finally
            {
                server?.Dispose();
            }
            return(0);
        }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Value = Server.ReadHoldingRegisters(StartingAddress, Quantity);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     }
 }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Value = Server.ReadDiscreteInputs(StartingAddress, Quantity);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     }
 }
 public void Handle(IModbusServer Server)
 {
     try
     {
         Server.WriteMultipleCoils(StartingAddress, Value);
     }
     catch (ModbusException ex)
     {
         ExceptionCode = (byte)ex.Code;
     }
 }