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