Problema con puerto Serie

NOVATO
30 de Diciembre del 2005
Este programa me esta sacando un error en el campo entrada, no puedo solucionarlo. ALGUIEN ME PUEDE AYUDAR.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at bascula.Puerto.<init>(Puerto.java:37)
EL PROGRAMA ES EL SIGUIENTE.
package bascula;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

import javax.comm.*;

public class Puerto implements Runnable,SerialPortEventListener {
static CommPortIdentifier idPuerto;
static Enumeration listaPuertos;
InputStream entrada;
SerialPort puertoSerie;
Thread tLectura;
private String lectura;
public Puerto() { // Si el puerto no está en uso, se intenta abrir
listaPuertos = CommPortIdentifier.getPortIdentifiers();

while( listaPuertos.hasMoreElements() ) {
idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL ) {
if( idPuerto.getName().equals("COM1") ) { // WINDOWS
// Lector del puerto, se quedará esperando a que llegue algo al puerto
System.out.println("puerto encontrado " + idPuerto.getName());
}
}
}


try {
puertoSerie = (SerialPort)idPuerto.open( "AplLectura",2000 );
} catch( PortInUseException e ) {}
// Se obtiene un canal de entrada
try {
entrada = puertoSerie.getInputStream();
System.out.println("datos" + entrada);
} catch( IOException e ) {
System.out.println("Sin datos" + e);
}

// Añadimos un receptor de eventos para estar informados de lo que suceda en el puerto
try {
puertoSerie.addEventListener( this );
} catch( TooManyListenersException e ) {}

// Hacemos que se nos notifique cuando haya datos disponibles para lectura en el buffer de la puerta
puertoSerie.notifyOnDataAvailable( true );

// Se fijan los parámetros de comunicación del puerto
try {
puertoSerie.setSerialPortParams( 4800,
SerialPort.DATABITS_7,
SerialPort.STOPBITS_2,
SerialPort.PARITY_EVEN );
} catch( UnsupportedCommOperationException e ) {}

// Se crea y lanza el thread que se va a encargar de quedarse esperando en la puerta a que haya datos disponibles
tLectura = new Thread( this );
tLectura.start();
}

public void run() {
try {
Thread.sleep(2000);
} catch( InterruptedException e ) {}
}


public void serialEvent( SerialPortEvent _ev ) {
switch( _ev.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;
// Cuando haya datos disponibles se leen y luego se imprime lo recibido en la consola
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[6];

try {
while (entrada.available() > 0) {
int numBytes = entrada.read(readBuffer);
}
lectura = new String(readBuffer);
System.out.println(lectura);
} catch (IOException e) {}

break;

}
}




public String getLectura() {
return lectura;
}


}

//------------------------------------------ Final del fichero java1902.java