Class StaticDataMapReadonlyModbusConnection

All Implemented Interfaces:
Closeable, AutoCloseable, ModbusConnection
Direct Known Subclasses:
StaticDataMapModbusConnection

public class StaticDataMapReadonlyModbusConnection extends ModbusConnectionSupport
ModbusConnection for reading static data.

This class can be useful in tests working with Modbus connections.

Since:
2.16
Version:
2.0
Author:
matt
  • Constructor Details

    • StaticDataMapReadonlyModbusConnection

      public StaticDataMapReadonlyModbusConnection(net.solarnetwork.util.IntShortMap data)
      Construct with the data.
      Parameters:
      data - the starting data
    • StaticDataMapReadonlyModbusConnection

      public StaticDataMapReadonlyModbusConnection(int[] data)
      Constructor.
      Parameters:
      data - the starting data, starting from Modbus register address 0
    • StaticDataMapReadonlyModbusConnection

      public StaticDataMapReadonlyModbusConnection(int[] data, int address)
      Constructor.
      Parameters:
      data - the starting data
      address - the starting Modbus register address for data
    • StaticDataMapReadonlyModbusConnection

      public StaticDataMapReadonlyModbusConnection(short[] data, int address)
      Constructor.
      Parameters:
      data - the starting data
      address - the starting Modbus register address for data
  • Method Details

    • getData

      protected net.solarnetwork.util.IntShortMap getData()
      Get the data map.
      Returns:
      the data
    • readWordsUnsigned

      public int[] readWordsUnsigned(ModbusReadFunction function, int address, int count)
      Description copied from interface: ModbusConnection
      Get the values of specific 16-bit Modbus registers as an array of unsigned 16-bit words.

      Note that the raw int values can be treated as signed shorts by casting them to shorts, like short signed = (short)s. Thus the values returned by this method are technically the same as those returned by ModbusConnection.readWords(ModbusReadFunction, int, int), having been cast to ints.

      Specified by:
      readWordsUnsigned in interface ModbusConnection
      Overrides:
      readWordsUnsigned in class ModbusConnectionSupport
      Parameters:
      function - the Modbus function code to use
      address - the 0-based Modbus register address to start reading from
      count - the number of 16-bit Modbus registers to read
      Returns:
      array of register values; the result will have a length equal to count
    • readString

      public String readString(ModbusReadFunction function, int address, int count, boolean trim, Charset charset)
      Description copied from interface: ModbusConnection
      Read a set of registers as bytes and interpret as a string.
      Specified by:
      readString in interface ModbusConnection
      Overrides:
      readString in class ModbusConnectionSupport
      Parameters:
      function - the Modbus function code to use
      address - the 0-based Modbus register address to start reading from
      count - the number of Modbus 16-bit registers to read
      trim - if true then remove leading/trailing whitespace from the resulting string
      charset - the character set to interpret the bytes as
      Returns:
      String from interpreting raw bytes as a string
      See Also:
    • readWords

      public short[] readWords(ModbusReadFunction function, int address, int count)
      Description copied from interface: ModbusConnection
      Get the values of specific 16-bit Modbus registers as an array of 16-bit words.

      Note that the raw short values can be treated as unsigned shorts by converting them to integers, like int unsigned = ((int)s) && 0xFFFF, or by calling Short.toUnsignedInt(short). Thus the values returned by this method are technically the same as those returned by ModbusConnection.readWordsUnsigned(ModbusReadFunction, int, int), without having been cast to ints.

      Specified by:
      readWords in interface ModbusConnection
      Overrides:
      readWords in class ModbusConnectionSupport
      Parameters:
      function - the Modbus function code to use
      address - the 0-based Modbus register address to start reading from
      count - the number of Modbus 16-bit registers to read
      Returns:
      array of register values; the result will have a length equal to count
    • readInputDiscreteValues

      public BitSet readInputDiscreteValues(int address, int count)
      Description copied from interface: ModbusConnection
      Get the values of a set of "input discrete" type registers, as a BitSet.

      This uses a Modbus function code 2 request. The returned bitset will have count values set, from 0 to count - 1.

      Specified by:
      readInputDiscreteValues in interface ModbusConnection
      Overrides:
      readInputDiscreteValues in class ModbusConnectionSupport
      Parameters:
      address - the Modbus register addresses to start reading from
      count - the count of registers to read
      Returns:
      BitSet, with each 0 to count indexes
    • readDiscreetValues

      public BitSet readDiscreetValues(int address, int count)
      Description copied from interface: ModbusConnection
      Get the values of a set of "coil" type registers, as a BitSet.

      This uses a Modbus function code 1 request.

      This method is required but deprecated to preserve backwards compatibility.

      Specified by:
      readDiscreetValues in interface ModbusConnection
      Overrides:
      readDiscreetValues in class ModbusConnectionSupport
      Parameters:
      address - the 0-based Modbus register address to read
      count - the count of discreet registers to read
      Returns:
      BitSet, with indexes set from 0 to a count - 1
    • readDiscreetValues

      public BitSet readDiscreetValues(int[] addresses, int count)
      Description copied from interface: ModbusConnection
      Get the values of a set of "coil" type registers, as a BitSet.

      This uses a Modbus function code 1 request. The returned set will have a size equal to addresses.length * count.

      This method is required but deprecated to preserve backwards compatibility.

      Specified by:
      readDiscreetValues in interface ModbusConnection
      Overrides:
      readDiscreetValues in class ModbusConnectionSupport
      Parameters:
      addresses - the 0-based Modbus register addresses to read
      count - the count of coils to read with each address
      Returns:
      BitSet, with each count indexes for each index in the addresses parameter
    • readBytes

      public byte[] readBytes(ModbusReadFunction function, int address, int count)
      Description copied from interface: ModbusConnection
      Get the raw bytes of specific registers.

      Each 16-bit modbus register value will be decomposed into two output bytes, so that the returned result will have a length equal to count * 2.

      Specified by:
      readBytes in interface ModbusConnection
      Overrides:
      readBytes in class ModbusConnectionSupport
      Parameters:
      function - the Modbus function code to use
      address - the 0-based Modbus register address to start reading from
      count - the number of Modbus 16-bit registers to read
      Returns:
      register words as an array of bytes