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; } }
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); }