public byte[] getMessage() {
    byte result[] = new byte[4];

    result[0] = (byte) ((m_Reference >> 8) & 0xff);
    result[1] = (byte) (m_Reference & 0xff);
    result[2] = (byte) ((m_Register.getValue() >> 8) & 0xff);
    result[3] = (byte) (m_Register.getValue() & 0xff);

    return result;
  }
  public ModbusResponse createResponse() {
    WriteSingleRegisterResponse response = null;
    Register reg = null;

    // 1. get process image
    ProcessImage procimg = ModbusCoupler.getReference().getProcessImage();
    // 2. get register
    try {
      reg = procimg.getRegister(m_Reference);
      // 3. set Register
      reg.setValue(m_Register.toBytes());
    } catch (IllegalAddressException iaex) {
      return createExceptionResponse(Modbus.ILLEGAL_ADDRESS_EXCEPTION);
    }
    response = (WriteSingleRegisterResponse) getResponse();

    return response;
  }
 public void writeData(DataOutput dout) throws IOException {
   dout.writeShort(m_Reference);
   dout.write(m_Register.toBytes());
 }