⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portcontrol.java

📁 利用JAVA采用网络通讯的例子,支持weblogic及websphere
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
  }

  /**
   * Flush Async Server port input/output buffer data.
   * @param mode which buffer to flush. 0: flush input buffer;
   * 1: flush output buffer; 2:	flush input/output buffer.
   * @return 0 if successful ,otherwise -1.
   */
  public short flush(byte mode) {
    //System.out.println();
    //System.out.println("Flush port " + IPofMoxa + ":" + PortofMoxa +
    //" with mode " + mode + " ... ...");
    byte[] CmdContent = new byte[8];
    CmdContent[0] = PortControlOptions.D_COMMAND_FLUSH;
    CmdContent[1] = 1;
    CmdContent[2] = mode;

    try {
      CmdPortWriter.write(CmdContent, 0, 3);
    }
    catch (IOException ioe) {
      System.out.println("Moxa port control - port flush error: " +
                         "io error occured.");
      System.out.println(ioe.toString());
    }

    return WaitCmdResult(PortControlOptions.D_COMMAND_FLUSH);
  }

  /**
   * Get Async Port line status.
   * @return line status of this port. >=0:	line status:
   * bit 0: DSR, bit 1: CTS,  bit 2: DCD (1 - ON, 0 - OFF)
   * ; -1: error
   */
  public short lstatus() {
    //System.out.println();
    //System.out.println("Get status of port " + IPofMoxa + ":" + PortofMoxa +
    //" ... ...");

    byte[] CmdContent = new byte[8];
    short status = 0;
    CmdContent[0] = PortControlOptions.D_COMMAND_LSTATUS;
    CmdContent[1] = 0;

    try {
      CmdPortWriter.write(CmdContent, 0, 2);
    }
    catch (IOException ioe) {
      System.out.println("Moxa port control - get line status error: " +
                         "io error occured.");
      System.out.println(ioe.toString());
    }

    //return WaitCmdResult(PortControlOptions.D_COMMAND_LSTATUS);
    byte[] reponseFromServer = new byte[8];
    int sleeps = 0;
    int StoredBytesNumber = 0;

    while (true) {
      try {
        int ReceivedBytesNumber = CmdPortReader.available();
        int BytesWaiting = 5;
        short lstatus = 0;

        if (ReceivedBytesNumber >= BytesWaiting) {
          StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
              BytesWaiting);
          /*
              System.out.println("Response of command " +
               PortControlOptions.D_COMMAND_LSTATUS + ": " +
               reponseFromServer[0] + reponseFromServer[1] +
               reponseFromServer[2] + reponseFromServer[3] +
               reponseFromServer[4]);
           */
          if ( (reponseFromServer[0] == PortControlOptions.D_COMMAND_LSTATUS) &&
              (reponseFromServer[1] == 3)) {
            if (reponseFromServer[3] == PortControlOptions.D_LSTATUS_CTS_ON) {
              lstatus |= 2;
            }
            if (reponseFromServer[3] == PortControlOptions.D_LSTATUS_DCD_ON) {
              lstatus |= 4;
            }
            return lstatus;
          }
          else {
            return PortControlOptions.FAIL;
          }
        }
        else {
          Thread.sleep(PortControlOptions.INTERVAL);
          if (sleeps++ > PortControlOptions.RETRY) {
            return PortControlOptions.FAIL;
          }
        }
      }
      catch (IOException ioe) {
        System.out.println(
            "Moxa port control - Wait for command response error: " +
            "io error occured.");
        System.out.println(ioe.toString());
      }
      catch (InterruptedException ie) {
        System.out.println(
            "Moxa port control - Wait for command response error: " +
            "sleep interrupted.");
        System.out.println(ie.toString());
      }
    } //end of while
  }

  //Get port input buffer size.
  public short iqueue() {
    //System.out.println();
    //System.out.println("Get input buffer size of port " + IPofMoxa + ":" + PortofMoxa +
    //                   " ... ...");

    byte[] CmdContent = new byte[8];
    short status = 0;
    CmdContent[0] = PortControlOptions.D_COMMAND_IQUEUE;
    CmdContent[1] = 0;

    try {
      CmdPortWriter.write(CmdContent, 0, 2);
    }
    catch (IOException ioe) {
      System.out.println("Moxa port control - get input buffer size error: " +
                         "io error occured.");
      System.out.println(ioe.toString());
    }

    byte[] reponseFromServer = new byte[8];
    int sleeps = 0;
    int StoredBytesNumber = 0;

    while (true) {
      try {
        int ReceivedBytesNumber = CmdPortReader.available();
        int BytesWaiting = 4;
        short iqueue = 0;

        if (ReceivedBytesNumber >= BytesWaiting) {
          StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
              BytesWaiting);
          /*
              System.out.println("Response of command " +
               PortControlOptions.D_COMMAND_IQUEUE + ": " +
               reponseFromServer[0] + reponseFromServer[1] +
               reponseFromServer[2] + reponseFromServer[3]);
           */
          if ( (reponseFromServer[0] == PortControlOptions.D_COMMAND_IQUEUE) &&
              (reponseFromServer[1] == 2)) {
            iqueue = reponseFromServer[3];
            return iqueue;
          }
          else {
            return PortControlOptions.FAIL;
          }
        }
        else {
          Thread.sleep(PortControlOptions.INTERVAL);
          if (sleeps++ > PortControlOptions.RETRY) {
            return PortControlOptions.FAIL;
          }
        }
      }
      catch (IOException ioe) {
        System.out.println(
            "Moxa port control - Wait for command(get input buffer size) response error: " +
            "io error occured.");
        System.out.println(ioe.toString());
      }
      catch (InterruptedException ie) {
        System.out.println(
            "Moxa port control - Wait for command(get input buffer size) response error: " +
            "sleep interrupted.");
        System.out.println(ie.toString());
      }
    }
  }

  //Get port output buffer size.
  public short oqueue() {
    //System.out.println();
    //System.out.println("Get output buffer size of port " + IPofMoxa + ":" + PortofMoxa +
    //                   " ... ...");

    byte[] CmdContent = new byte[8];
    short status = 0;
    CmdContent[0] = PortControlOptions.D_COMMAND_OQUEUE;
    CmdContent[1] = 0;

    try {
      CmdPortWriter.write(CmdContent, 0, 2);
    }
    catch (IOException ioe) {
      System.out.println("Moxa port control - get output buffer size error: " +
                         "io error occured.");
      System.out.println(ioe.toString());
    }

    byte[] reponseFromServer = new byte[8];
    int sleeps = 0;
    int StoredBytesNumber = 0;

    while (true) {
      try {
        int ReceivedBytesNumber = CmdPortReader.available();
        int BytesWaiting = 4;
        short oqueue = 0;

        if (ReceivedBytesNumber >= BytesWaiting) {
          StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
              BytesWaiting);
          /*
              System.out.println("Response of command " +
               PortControlOptions.D_COMMAND_OQUEUE + ": " +
               reponseFromServer[0] + reponseFromServer[1] +
               reponseFromServer[2] + reponseFromServer[3]);
           */
          if ( (reponseFromServer[0] == PortControlOptions.D_COMMAND_OQUEUE) &&
              (reponseFromServer[1] == 2)) {
            oqueue = reponseFromServer[3];
            return oqueue;
          }
          else {
            return PortControlOptions.FAIL;
          }
        }
        else {
          Thread.sleep(PortControlOptions.INTERVAL);
          if (sleeps++ > PortControlOptions.RETRY) {
            return PortControlOptions.FAIL;
          }
        }
      }
      catch (IOException ioe) {
        System.out.println(
            "Moxa port control - Wait for command(get output buffer size) response error: " +
            "io error occured.");
        System.out.println(ioe.toString());
      }
      catch (InterruptedException ie) {
        System.out.println(
            "Moxa port control - Wait for command(get output buffer size) response error: " +
            "sleep interrupted.");
        System.out.println(ie.toString());
      }
    }
  }

//--------------------Private mothods-------------------//
  //Set PortReader and PortWriter.
  //return: OK or FAIL
  /*
    private private short IOPreparation(Socket SocketMoxa) {
      try {
    CmdPortReader = SocketMoxa.getInputStream();
    CmdPortWriter = SocketMoxa.getOutputStream();
      }
      catch (IOException ioe) {
    System.out.println("Moxa port control - IO preparation error: " +
      "io error occured.");
    System.out.println(ioe.getMessage());
      }
      if (CmdPortReader != null && CmdPortWriter != null) {
    return PortControlOptions.OK;
      }
      else {
    CmdPortReader = null;
    CmdPortWriter = null;
    return PortControlOptions.FAIL;
      }
    } //end of method IOPreparation()
   */

  /**
   * Wait for response from command to moxa server.
   * Successful response is cmd"OK".
   * @param Cmd Command type defined in class PortControlOptions.
   * @return 0 if successful otherwise -1.
   */
  private short WaitCmdResult(short Cmd) {
    byte[] reponseFromServer = new byte[8];
    int sleeps = 0;
    int StoredBytesNumber = 0;

    while (true) {
      try {
        int ReceivedBytesNumber = CmdPortReader.available();
        int BytesWaiting = 3;

        if (ReceivedBytesNumber >= BytesWaiting) {
          StoredBytesNumber = (byte) CmdPortReader.read(reponseFromServer, 0,
              BytesWaiting);
          short ReceivedCmdNumber = (short) reponseFromServer[0];
          String ReceivedCmdResult = new String(reponseFromServer,
                                                BytesWaiting - 2,
                                                BytesWaiting - 1);
          //System.out.println("Response of command " + Cmd + ": " +
          //		     ReceivedCmdNumber + ReceivedCmdResult);
          if ( (ReceivedCmdNumber == Cmd) && (ReceivedCmdResult.equals("OK"))) {
            return PortControlOptions.OK;
          }
          else {
            return PortControlOptions.FAIL;
          }
        }
        else {
          Thread.sleep(PortControlOptions.INTERVAL);
          if (sleeps++ > PortControlOptions.RETRY) {
            return PortControlOptions.FAIL;
          }
        }
      }
      catch (IOException ioe) {
        System.out.println(
            "Moxa port control - Wait for command response error: " +
            "io error occured.");
        System.out.println(ioe.toString());
      }
      catch (InterruptedException ie) {
        System.out.println(
            "Moxa port control - Wait for command response error: " +
            "sleep interrupted.");
        System.out.println(ie.toString());
      }
    } //end of while
  } //end of mothod WaitCmdResult()

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -