class Modbus::Client
Public Class Methods
new(uri)
click to toggle source
# File lib/modbus/client.rb, line 11 def initialize(uri) @base_polling_interval = 1 @last_poll_time = Time.now @uri = URI uri end
Public Instance Methods
connect()
click to toggle source
# File lib/modbus/client.rb, line 29 def connect EM.connect @uri.host, @uri.port, Modbus::Connection::TCPClient, self end
connected(conn)
click to toggle source
# File lib/modbus/client.rb, line 18 def connected(conn) @conn = conn schedule_next_poll end
disconnected(conn)
click to toggle source
# File lib/modbus/client.rb, line 24 def disconnected(conn) reconnect end
Private Instance Methods
poll()
click to toggle source
# File lib/modbus/client.rb, line 53 def poll # no-op end
reconnect()
click to toggle source
# File lib/modbus/client.rb, line 37 def reconnect EM.add_timer(5) { connect } end
schedule_next_poll()
click to toggle source
# File lib/modbus/client.rb, line 42 def schedule_next_poll poll_time = Time.now - @last_poll_time next_poll_time = [@base_polling_interval - poll_time, @base_polling_interval*0.25].max EM.add_timer(next_poll_time) do @last_poll_time = Time.now poll end end
transaction(timeout = 2) { |client conn, timeout| ... }
click to toggle source
# File lib/modbus/client.rb, line 58 def transaction(timeout = 2) yield Modbus::Transaction::Client.new @conn, timeout end