Serial Port Not getting closed. I want to release the COM port ...

Posted by sunil on Stack Overflow See other posts from Stack Overflow or by sunil
Published on 2009-06-08T04:26:15Z Indexed on 2010/03/21 18:31 UTC
Read the original article Hit count: 613

Filed under:
|
|

Serial Port Not getting closed. I want to release the COM port ...

Below is my code....

import java.io.*;
import java.util.*;
import gnu.io.*;

public class ReadCommPort implements SerialPortEventListener {

   static CommPortIdentifier   portId;
   static Enumeration            portList;
   InputStream                    inputStream;
   OutputStream                outputStream;
   public SerialPort            serialPort;
   List byteList               = new ArrayList();
   public static Message message   = null;

   public void readData() {
       boolean    portFound   = false;
       String    defaultPort = "COM1";
       portList            = CommPortIdentifier.getPortIdentifiers();

   while ( portList.hasMoreElements() ) {
       portId = ( CommPortIdentifier )portList.nextElement();
       if ( portId.getPortType() == CommPortIdentifier.PORT_SERIAL ) {
           if ( portId.getName().equals( defaultPort ) ) {
               System.out.println( "Found port: " + defaultPort );
               portFound = true;
               buildSerialPort();
           }
       }
   }
   if ( ! portFound ) {
       System.out.println( "port " + defaultPort + " not found." );
   }
}

   public void buildSerialPort() {
       try {
           serialPort  = (SerialPort) portId.open( "ReadCommPort", 1 );
           inputStream = serialPort.getInputStream();
           outputStream = serialPort.getOutputStream();
           serialPort.addEventListener( this );
           serialPort.notifyOnDataAvailable(true);
           serialPort.setSerialPortParams( 2400, SerialPort.DATABITS_7, SerialPort.STOPBITS_1,

   SerialPort.PARITY_NONE );
       }
       catch ( Exception e ) {
           e.printStackTrace();
       }
   }

   @SuppressWarnings("unchecked")
   public void serialEvent( SerialPortEvent event ) {

   switch ( event.getEventType() ) {
       case SerialPortEvent.BI:
           System.out.println( "BI");
           break;

       case SerialPortEvent.OE:
           System.out.println( "OE");
           break;

       case SerialPortEvent.FE:
           System.out.println( "FE");
           break;

       case SerialPortEvent.PE:
           System.out.println( "PE");
           break;

       case SerialPortEvent.CD:
           System.out.println( "CD");
           break;

       case SerialPortEvent.CTS:
           System.out.println( "CTS");
           break;

       case SerialPortEvent.DSR:
           System.out.println( "DSR");
           break;

       case SerialPortEvent.RI:
           System.out.println( "RI");
           break;

       case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
           System.out.println( "OUTPUT_BUFFER_EMPTY");
           break;

       case SerialPortEvent.DATA_AVAILABLE :
           try {
               int len = inputStream.available();
               byte[] readBuffer = new byte[ len ];
       // processing data code..
       // close the port
           // release all resources...
                                  serialPort.removeEventListener();
                               try
               {
                                   serialPort.addEventListener( null );
                               }
                               catch (TooManyListenersException e)
                               {
                                   e.printStackTrace();
                               }
                               inputStream.close();
                               outputStream.close();
                               serialPort.close();
           }
           catch ( IOException e )
   {
               e.printStackTrace();
           }
       break;
   }
}

   public static void main(String[] args) {
       new ReadCommPort().readData();
   }
}

© Stack Overflow or respective owner

Related posts about java

Related posts about serial-port