Hello,
I need that somebody help me. I have another problem. I have a class which manage all function about serial port. I have a method that adds the event listener and I have another method that removes the event listener, but my program dies and does nothing in this last method.
public class PuertoSerie extends Thread implements Runnable, SerialPortEventListener
{
public PuertoSerie(RFIDBascApp form)
    {
        try
        {
            if (idPuerto == null)
            {
                formulario = form;
                boolean encontrado = false;
            listaPuertos = CommPortIdentifier.getPortIdentifiers();
            while( listaPuertos.hasMoreElements() && encontrado == false )
            {
              idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
              //System.out.println(idPuerto.getName());
              if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL )
              {
                if( idPuerto.getName().equals(RFIDBascApp.ComBasc) )
                {        
                    encontrado = true;
                    logger.AddInfoUser("Puerto serie encontrado");
                  }
                }
              }
           AbrirPuerto();
        }
    }
    catch(Exception e)
    {
        logger.AddError("Excepcion en puerto serie: " + e.getMessage());
    }
}
public void AbrirPuerto()
    {
        try
        {
            puerto = (SerialPort)idPuerto.open( "RFIDBasc",2000 );
        } 
        catch( Exception e )
        {
            logger.AddError("Excepcion 1 en abrir puerto serie: " + e.getMessage());
        }
    //Se obtiene un canal de entrada
    if (puerto != null)
    {
        try
        {
            entradaPuerto = puerto.getInputStream();
        } 
        catch( Exception e )
        {
            logger.AddError("Excepcion 2 en abrir puerto serie: " + e.getMessage());
        }
        //Se fijan los parámetros de comunicación del puerto
        try
        {           
            puerto.setSerialPortParams( 9600,
            SerialPort.DATABITS_8,
            SerialPort.STOPBITS_1,
            SerialPort.PARITY_NONE );
        }    
        catch( Exception e )
        {
            logger.AddError("Excepcion 3 en abrir puerto serie: " + e.getMessage());
        }
    }
}
public boolean Arrancar()
    {
//Se añade un manejador de eventos al puerto serie
    try
    {
        if (puerto != null)
        {
            puerto.addEventListener( this );
            puerto.notifyOnDataAvailable( true );
            manejadorEventos = true;
            pesocomunicado = false;
        }
        else
        {
            logger.AddMessage("No se puede añadir manejador de eventos porque puerto = null");
        }
    }
    catch( Exception e )
    {
        logger.AddError("Excepcion en añadir manejador eventos puerto serie: " + e.getMessage());
        manejadorEventos = false;
    }
    return manejadorEventos;
}
public void Parar()
    {
        manejadorEventos = false;
    //Desactivo el manejador de eventos del puerto serie
    try
    {
        if (puerto != null)
        {
            puerto.removeEventListener();
        }
        else
        {
            logger.AddError("El manejador de eventos no se ha eliminado pq puerto = null");
        }
    }
    catch (Exception e)
    {
        logger.AddError("Excepcion en eliminar manejador eventos puerto serie: " + e.getMessage());
    }
}
When I call to method Parar() from another class, my program dies in this sentence: 
puerto.removeEventListener();
Does anyone know what is happening?
Thanks in advance,
Memafe