Chamar evento SerialEvent RXTX

Pessoal, estou com uma dúvida besta. Ja procurei aqui no forum mas não encontrei o que queria. Preciso capturar o peso de uma balança e mostrar em uma janela JAVA. Usei o exemplo postado no DEVMEDIA www.devmedia.com.br/utilizando-a-api-rxtx-para-manipulacao-da-serial-parte-iii/7171.

A balança é uma FILIZOLA BPS-15. Já baixei as dlls no site da filezona e testei a configuração da balança nas ferramentas de teste que vem junto.

Minha dúvida é: Como eu faço para chamar o evento serialEvent ? Eu sei que nesse método o mais importante é o DATA_AVAILABLE, que é gerado quando um evento passa pela porta.

Mas eu nao sei como chamar esse evento. Os outros métodos eu consigo chamar beleza e eles mostram a porta onde a balança esta instalada e se esta disponivel. Só nao sei capturar o peso de algum produto.

Se alguém puder ajudar, agradeço desde já!

Seguem os fontes:

[code]package balanca;

import gnu.io.CommPortIdentifier;
import java.util.Enumeration;

public class SerialCom {

protected String[] portas;
protected Enumeration listaDePortas;

public SerialCom() {
    listaDePortas = CommPortIdentifier.getPortIdentifiers();
}

public String[] ObterPortas() {
    return portas;
}

public void ListarPortas() {
    int i = 0;
    portas = new String[10];
    while (listaDePortas.hasMoreElements()) {
    CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
    portas[i] = ips.getName();
    i++;
    }
}// fecha ListarPortas

public boolean PortaExiste(String COMp){
String temp;
boolean e = false;
while (listaDePortas.hasMoreElements()){
    CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
    temp = ips.getName();
    if(temp.equals(COMp)== true){
    e= true;
    }// if
}
return e;

}// fecha PortaExiste

}//fecha a classe
[/code]

[code]package balanca;

import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;

public class SerialComLeitura implements Runnable, SerialPortEventListener {

public String Dadoslidos;
public int nodeBytes;
private int baudrate;
private int timeout;
private CommPortIdentifier cp;
private SerialPort porta;
private OutputStream saida;
private InputStream entrada;
private Thread threadLeitura;
private boolean IDPortaOK;
private boolean PortaOK;
private boolean Leitura;
private boolean Escrita;
private String Porta;
protected String peso;

public void setPeso(String peso) {

    this.peso = peso;

}

public String getPeso() {

    return peso;

}

// public class SComm implements Runnable, SerialPortEventListener {
//}// fecha SComm
public SerialComLeitura(String p, int b, int t) {

    this.Porta = p;
    this.baudrate = b;
    this.timeout = t;

}

public void HabilitarEscrita() {

    Escrita = true;

    Leitura = false;

}

public void HabilitarLeitura() {

    Escrita = false;

    Leitura = true;

}

public void ObterIdDaPorta() {

    try {

        cp = CommPortIdentifier.getPortIdentifier(Porta);

        if (cp == null) {

            System.out.println(
                    "Erro na porta");

            IDPortaOK = false;

            System.exit(1);

        }

        IDPortaOK = true;

    } catch (Exception e) {

        System.out.println(
                "Erro obtendo ID da porta:" + e);

        IDPortaOK = false;

        System.exit(1);

    }

}

public void AbrirPorta() {

    try {

        porta = (SerialPort) cp.open("SerialComLeitura", timeout);

        PortaOK = true;

        //configurar parâmetros

        porta.setSerialPortParams(baudrate,
                porta.DATABITS_8,
                porta.STOPBITS_1,
                porta.PARITY_NONE);

        porta.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);

    } catch (Exception e) {

        PortaOK = false;

        System.out.println(
                "Erro abrindo comunicação: " + e);

        System.exit(1);

    }

}

public void LerDados() {

    if (Escrita == false) {

        try {

            entrada = porta.getInputStream();

        } catch (Exception e) {

            System.out.println("Erro de stream: " + e);

            System.exit(1);

        }

        try {

            porta.addEventListener(this);

        } catch (Exception e) {

            System.out.println("Erro de listener: " + e);

            System.exit(1);

        }

        porta.notifyOnDataAvailable(true);

        try {
            threadLeitura = new Thread(this);
            threadLeitura.start();
            run();

        } catch (Exception e) {

            System.out.println("Erro de Thred: " + e);

        }

    }


}

public void run() {

    try {

        Thread.sleep(5);

    } catch (Exception e) {

        System.out.println("Erro de Thred: " + e);

    }

}

public void serialEvent(SerialPortEvent ev) {
    StringBuffer bufferLeitura = new StringBuffer();
    int novoDado = 0;


    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;
        case SerialPortEvent.DATA_AVAILABLE:
            //Novo algoritmo de leitura.
            while (novoDado != -1) {
                try {
                    novoDado = entrada.read();
                    if (novoDado == -1) {
                        break;
                    }

                    if ('\r' == (char) novoDado) {
                        bufferLeitura.append('\n');
                    } else {
                        bufferLeitura.append((char) novoDado);
                    }
                } catch (IOException ioe) {
                    System.out.println("Erro de leitura serial: " + ioe);
                }

            }

            setPeso(new String(bufferLeitura));

            System.out.println(getPeso());

            break;

    }

}// fechar o evento da porta serialportevent

public void FecharCom() {

    try {

        porta.close();

    } catch (Exception e) {

        System.out.println("Erro fechando porta: " + e);

        System.exit(0);

    }

}

public String obterPorta() {

    return Porta;

}

public int obterBaudrate() {

    return baudrate;

}

}// fecha a classe
[/code]