Module: Aurora::ModBus::Slave

Defined in:
lib/aurora/modbus/slave.rb

Instance Method Summary collapse

Instance Method Details

#holding_registersObject



19
20
21
# File 'lib/aurora/modbus/slave.rb', line 19

def holding_registers
  @holding_registers ||= WFProxy.new(self, :holding_register)
end

#read_multiple_holding_registers(*ranges) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/aurora/modbus/slave.rb', line 6

def read_multiple_holding_registers(*ranges)
  values = if ranges.any?(Range)
             addrs_and_lengths = ranges.map do |r|
               r = Array(r)
               [r.first, r.last - r.first + 1]
             end.flatten
             query("A#{addrs_and_lengths.pack("n*")}").unpack("n*")
           else
             query("B#{ranges.pack("n*")}").unpack("n*")
           end
  ranges.map { |r| Array(r) }.flatten.zip(values).to_h
end