Java by API/javax.comm/CommPort

Материал из Java эксперт
Перейти к: навигация, поиск

CommPort: getInputStream()

   <source lang="java">

/*

* @(#)SimpleRead.java  1.12 98/06/25 SMI
*
* Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license 
* to use, modify and redistribute this software in source and binary
* code form, provided that i) this copyright notice and license appear
* on all copies of the software; and ii) Licensee does not utilize the
* software in a manner which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind.
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
* ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
* LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE
* SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS
* BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
* HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
* OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control
* of aircraft, air traffic, aircraft navigation or aircraft
* communications; or in the design, construction, operation or
* maintenance of any nuclear facility. Licensee represents and
* warrants that it will not use or redistribute the Software for such
* purposes.
*/

import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.TooManyListenersException; import javax.rum.rumPortIdentifier; import javax.rum.PortInUseException; import javax.rum.SerialPort; import javax.rum.SerialPortEvent; import javax.rum.SerialPortEventListener; import javax.rum.UnsupportedCommOperationException; public class MainClass implements Runnable, SerialPortEventListener {

 static CommPortIdentifier portId;
 static Enumeration portList;
 InputStream inputStream;
 SerialPort serialPort;
 Thread readThread;
 public static void main(String[] args) {
   portList = CommPortIdentifier.getPortIdentifiers();
   while (portList.hasMoreElements()) {
     portId = (CommPortIdentifier) portList.nextElement();
     if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
       // if (portId.getName().equals("COM1")) {
       if (portId.getName().equals("/dev/term/a")) {
         MainClass reader = new MainClass();
       }
     }
   }
 }
 public MainClass() {
   try {
     serialPort = (SerialPort) portId.open("MainClassApp", 2000);
   } catch (PortInUseException e) {
   }
   try {
     inputStream = serialPort.getInputStream();
   } catch (IOException e) {
   }
   try {
     serialPort.addEventListener(this);
   } catch (TooManyListenersException e) {
   }
   serialPort.notifyOnDataAvailable(true);
   try {
     serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
         SerialPort.PARITY_NONE);
   } catch (UnsupportedCommOperationException e) {
   }
   readThread = new Thread(this);
   readThread.start();
 }
 public void run() {
   try {
     Thread.sleep(20000);
   } catch (InterruptedException e) {
   }
 }
 public void serialEvent(SerialPortEvent event) {
   switch (event.getEventType()) {
   case SerialPortEvent.BI:
   case SerialPortEvent.OE:
   case SerialPortEvent.FE:
   case SerialPortEvent.PE:
   case SerialPortEvent.CD:
   case SerialPortEvent.CTS:
   case SerialPortEvent.DSR:
   case SerialPortEvent.RI:
   case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
     break;
   case SerialPortEvent.DATA_AVAILABLE:
     byte[] readBuffer = new byte[20];
     try {
       while (inputStream.available() > 0) {
         int numBytes = inputStream.read(readBuffer);
       }
       System.out.print(new String(readBuffer));
     } catch (IOException e) {
     }
     break;
   }
 }

}

      </source>