Package net.wimpi.modbus.msg

Examples of net.wimpi.modbus.msg.ModbusRequest


  public ModbusRequest readRequest()
      throws ModbusIOException {

    boolean done = false;
    ModbusRequest request = null;

    int in = -1;

    try {
      do {
        //1. Skip to FRAME_START
        while ((in = m_InputStream.read()) != FRAME_START) ;
        //2. Read to FRAME_END
        synchronized (m_InBuffer) {
          m_ByteInOut.reset();
          while ((in = m_InputStream.read()) != FRAME_END) {
            if (in == -1) {
              throw new IOException("I/O exception - Serial port timeout.");
            }
            m_ByteInOut.writeByte(in);
          }
          //check LRC
          if (m_InBuffer[m_ByteInOut.size()-1] !=
              calculateLRC(m_InBuffer, 0, m_ByteInOut.size(), 1)) {
            continue;
          }
          ;
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          in = m_ByteIn.readUnsignedByte();
          //check message with this slave unit identifier
          if (in != ModbusCoupler.getReference().getUnitID()) {
            continue;
          }
          in = m_ByteIn.readUnsignedByte();
          //create request
          request = ModbusRequest.createModbusRequest(in);
          request.setHeadless();
          //read message
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          request.readFrom(m_ByteIn);
        }
        done = true;
      } while (!done);
      return request;
    } catch (Exception ex) {
View Full Code Here


  public static void main(String[] args) {

    InetAddress addr = null;
    TCPMasterConnection con = null;
    ModbusRequest di_req = null;
    WriteCoilRequest do_req = null;

    ModbusTCPTransaction di_trans = null;
    ModbusTCPTransaction do_trans = null;

    int di_ref = 0;
    int do_ref = 0;
    int port = Modbus.DEFAULT_PORT;

    try {

      //1. Setup the parameters
      if (args.length < 3) {
        printUsage();
        System.exit(1);
      } else {
        try {
          String astr = args[0];
          int idx = astr.indexOf(':');
          if(idx > 0) {
            port = Integer.parseInt(astr.substring(idx+1));
            astr = astr.substring(0,idx);
          }
          addr = InetAddress.getByName(astr);
          di_ref = Integer.parseInt(args[1]);
          do_ref = Integer.parseInt(args[2]);
        } catch (Exception ex) {
          ex.printStackTrace();
          printUsage();
          System.exit(1);
        }
      }

      //2. Open the connection
      con = new TCPMasterConnection(addr);
      con.setPort(port);
      con.connect();
      if (Modbus.debug) System.out.println("Connected to " + addr.toString() + ":" + con.getPort());


      //3. Prepare the requests
      di_req = new ReadInputDiscretesRequest(di_ref, 1);

      do_req = new WriteCoilRequest();
      do_req.setReference(do_ref);

      di_req.setUnitID(0);
      do_req.setUnitID(0);


      //4. Prepare the transactions
      di_trans = new ModbusTCPTransaction(con);
View Full Code Here

  public ModbusRequest readRequest()
      throws ModbusIOException {

    boolean done = false;
    ModbusRequest request = null;

    int in = -1;

    try {
      do {
        //1. Skip to FRAME_START
        while ((in = m_InputStream.read()) != FRAME_START) ;
        //2. Read to FRAME_END
        synchronized (m_InBuffer) {
          m_ByteInOut.reset();
          while ((in = m_InputStream.read()) != FRAME_END) {
            if (in == -1) {
              throw new IOException("I/O exception - Serial port timeout.");
            }
            m_ByteInOut.writeByte(in);
          }
          // check LRC
          if(Configuration.CALCULATE_CHECKSUM) {
            if (m_InBuffer[m_ByteInOut.size()-1] !=
                calculateLRC(m_InBuffer, 0, m_ByteInOut.size(), 1)) {
              continue;
            }
          }
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          in = m_ByteIn.readUnsignedByte();
          //check message with this slave unit identifier
          if (in != ModbusCoupler.getReference().getUnitID()) {
            continue;
          }
          in = m_ByteIn.readUnsignedByte();
          //create request
          request = ModbusRequest.createModbusRequest(in);
          request.setHeadless();
          //read message
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          request.readFrom(m_ByteIn);
        }
        done = true;
      } while (!done);
      return request;
    } catch (Exception ex) {
View Full Code Here

      else if (command.equals(OnOffType.OFF))
        newValue.setValue(0);
    }

   
    ModbusRequest request = null;
    if (writeMultipleRegisters) {
      Register [] regs = new Register[1];
      regs[0] = newValue;
      request = new WriteMultipleRegistersRequest(writeRegister, regs);     
    } else {
      request = new WriteSingleRegisterRequest(writeRegister, newValue);
    }
    request.setUnitID(getId());
    transaction.setRequest(request);

    try {
      logger.debug("ModbusSlave: FC" +request.getFunctionCode()+" ref=" + writeRegister + " value=" + newValue.getValue());       
      transaction.execute();
    } catch (Exception e) {
      logger.debug("ModbusSlave:" + e.getMessage());
      return;
    }
View Full Code Here

  public void doSetCoil(int writeRegister, boolean b) {
    if (!connect()) {
      logger.info("ModbusSlave not connected");
      return;
    }
    ModbusRequest request = new WriteCoilRequest(writeRegister, b);
    request.setUnitID(getId());
    transaction.setRequest(request);
    try {
      logger.debug("ModbusSlave: FC05 ref=" + writeRegister + " value=" + b);       
      transaction.execute();
    } catch (Exception e) {
View Full Code Here

    Object local = null;


      if (ModbusBindingProvider.TYPE_COIL.equals(getType())) {
        ModbusRequest request = new ReadCoilsRequest(getStart(), getLength());
        if (this instanceof ModbusSerialSlave) {
          request.setHeadless();
        }
        request.setUnitID(id);
        ReadCoilsResponse responce = (ReadCoilsResponse) getModbusData(request);
        local = responce.getCoils();
      } else if (ModbusBindingProvider.TYPE_DISCRETE.equals(getType())) {
        ModbusRequest request = new ReadInputDiscretesRequest(getStart(), getLength());
        ReadInputDiscretesResponse responce = (ReadInputDiscretesResponse) getModbusData(request);
        local = responce.getDiscretes();
      } else if (ModbusBindingProvider.TYPE_HOLDING.equals(getType())) {
        ModbusRequest request = new ReadMultipleRegistersRequest(getStart(), getLength());
        ReadMultipleRegistersResponse responce = (ReadMultipleRegistersResponse) getModbusData(request);
        local = responce.getRegisters();
      } else if (ModbusBindingProvider.TYPE_INPUT.equals(getType())) {
        ModbusRequest request = new ReadInputRegistersRequest(getStart(), getLength());
        ReadInputRegistersResponse responce = (ReadInputRegistersResponse) getModbusData(request);
        local = responce.getRegisters();
      }
      if (storage == null)
        storage = local;
View Full Code Here

  public ModbusRequest readRequest()
      throws ModbusIOException {

    boolean done = false;
    ModbusRequest request = null;

    int in = -1;

    try {
      do {
        //1. Skip to FRAME_START
        while ((in = m_InputStream.read()) != FRAME_START) ;
        //2. Read to FRAME_END
        synchronized (m_InBuffer) {
          m_ByteInOut.reset();
          while ((in = m_InputStream.read()) != FRAME_END) {
            if (in == -1) {
              throw new IOException("readRequest: I/O exception - Serial port timeout.");
            }
            m_ByteInOut.writeByte(in);
          }
          //check LRC
          if (((int)m_InBuffer[m_ByteInOut.size()-1] & 0xff!=
              ModbusUtil.calculateLRC(m_InBuffer, 0, m_ByteInOut.size()-1)) {
            continue;
          }
          ;
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          in = m_ByteIn.readUnsignedByte();
          //check message with this slave unit identifier
          if (in != ModbusCoupler.getReference().getUnitID()) {
            continue;
          }
          in = m_ByteIn.readUnsignedByte();
          //create request
          request = ModbusRequest.createModbusRequest(in);
          request.setHeadless();
          //read message
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          request.readFrom(m_ByteIn);
        }
        done = true;
      } while (!done);
      return request;
    } catch (Exception ex) {
View Full Code Here

      throws ModbusIOException {

    //System.out.println("readRequest()");
    try {

      ModbusRequest req = null;
      synchronized (m_ByteIn) {
        //use same buffer
        byte[] buffer = m_ByteIn.getBuffer();

        //read to byte length of message
        if (m_Input.read(buffer, 0, 6) == -1) {
          throw new EOFException("Premature end of stream (Header truncated).");
        }
        //extract length of bytes following in message
        int bf = ModbusUtil.registerToShort(buffer, 4);
        //read rest
        if (m_Input.read(buffer, 6, bf) == -1) {
          throw new ModbusIOException("Premature end of stream (Message truncated).");
        }
        m_ByteIn.reset(buffer, (6 + bf));
        m_ByteIn.skip(7);
        int functionCode = m_ByteIn.readUnsignedByte();
        m_ByteIn.reset();
        req = ModbusRequest.createModbusRequest(functionCode);
        req.readFrom(m_ByteIn);
      }
      return req;
/*
      int transactionID = m_Input.readUnsignedShort();
      int protocolID = m_Input.readUnsignedShort();
View Full Code Here

  public ModbusRequest readRequest()
      throws ModbusIOException {

    boolean done = false;
    ModbusRequest request = null;

    int in = -1;

    try {
      do {
        //1. Skip to FRAME_START
        while ((in = m_InputStream.read()) != FRAME_START) ;
        //2. Read to FRAME_END
        synchronized (m_InBuffer) {
          m_ByteInOut.reset();
          while ((in = m_InputStream.read()) != FRAME_END) {
            m_ByteInOut.writeByte(in);
          }
          //check CRC
          int[] crc = ModbusUtil.calculateCRC(m_InBuffer,0,m_ByteInOut.size()-2);

          if (!(
              m_InBuffer[m_ByteInOut.size()-2] == crc[0] //low byte first
              &&  m_InBuffer[m_ByteInOut.size()-1] == crc[1] //hibyte
          )) {
            continue;
          }
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          in = m_ByteIn.readUnsignedByte();
          //check unit identifier
          if (in != ModbusCoupler.getReference().getUnitID()) {
            continue;
          }
          in = m_ByteIn.readUnsignedByte();
          //create request
          request = ModbusRequest.createModbusRequest(in);
          request.setHeadless();
          //read message
          m_ByteIn.reset(m_InBuffer, m_ByteInOut.size());
          request.readFrom(m_ByteIn);
        }
        done = true;
      } while (!done);
      return request;
    } catch (Exception ex) {
View Full Code Here

  public static void main(String[] args) {

    InetAddress addr = null;
    TCPMasterConnection con = null;
    ModbusRequest req = null;
    ModbusTransaction trans = null;
    int ref = 0;
    int count = 0;
    int repeat = 1;
    int port = Modbus.DEFAULT_PORT;

    try {

      //1. Setup parameters
      if (args.length < 3) {
        printUsage();
        System.exit(1);
      } else {
        try {
          String astr = args[0];
          int idx = astr.indexOf(':');
          if(idx > 0) {
            port = Integer.parseInt(astr.substring(idx+1));
            astr = astr.substring(0,idx);
          }
          addr = InetAddress.getByName(astr);
          ref = Integer.parseInt(args[1]);
          count = Integer.parseInt(args[2]);
          if(args.length == 4) {
            repeat = Integer.parseInt(args[3]);
          }
        } catch (Exception ex) {
          ex.printStackTrace();
          printUsage();
          System.exit(1);
        }
      }

      //2. Open the connection
      con = new TCPMasterConnection(addr);
      con.setPort(port);
      con.connect();

      if (Modbus.debug) System.out.println("Connected to " + addr.toString() + ":" + con.getPort());

      //3. Prepare the request
      req = new ReadInputRegistersRequest(ref, count);
      req.setUnitID(0);
      if (Modbus.debug) System.out.println("Request: " + req.getHexMessage());

      //4. Prepare the transaction
      trans = new ModbusTCPTransaction(con);
      trans.setRequest(req);
View Full Code Here

TOP

Related Classes of net.wimpi.modbus.msg.ModbusRequest

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.