class ModBus::RTUServer

RTU server implementation @example

srv = RTUServer.new('/dev/ttyS1', 9600)
slave = srv.with_slave(1)
slave.coils = [1,0,1,1]
slave.discrete_inputs = [1,1,0,0]
slave.holding_registers = [1,2,3,4]
slave.input_registers = [1,2,3,4]
srv.logger = Logger.new($stdout)
srv.start

Public Class Methods

new(port, baud=9600, opts = {}) click to toggle source

Init RTU server @param [Integer] uid slave device @see SP#open_serial_port

# File lib/rmodbus/rtu_server.rb, line 21
def initialize(port, baud=9600, opts = {})
  Thread.abort_on_exception = true
  if port.is_a?(IO) || port.respond_to?(:read)
    @sp = port
  else
    @sp = open_serial_port(port, baud, opts)
  end
end

Public Instance Methods

join() click to toggle source

Join server

# File lib/rmodbus/rtu_server.rb, line 44
def join
  @serv.join
end
start() click to toggle source

Start server

# File lib/rmodbus/rtu_server.rb, line 31
def start
  @serv = Thread.new do
    serve(@sp)
  end
end
stop() click to toggle source

Stop server

# File lib/rmodbus/rtu_server.rb, line 38
def stop
  Thread.kill(@serv)
  @sp.close
end