Como ler dados do meu modem (RXTX) [RESOLVIDO]

Olá,

Eu tenho um modem que possui suporte a Caller ID, inclusive com um programinha que baixei ele já identifica o número e tudo. O problema é fazer isso no java.
Segui um tutorial e criei duas classes para ler os dados da COM1 que é o meu modem, porém quando ligo pro telefone nao faz a identificação. Poderia me ajudar por favor??!! (Código abaixo)
Serei eternamente grato se me ajudar, estou há uns bons dias tentando fazer isso no Java e não consigo =S.
Ps.: O retorno que tenho quando executo o main abaixo é:
Stable Library

Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7

CLASSE: Serialcomleitura.java

package wo.WOPIZZARIAS.serialcomm;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;

import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author João Lucas
 */
public class SerialComLeitura implements Runnable, SerialPortEventListener{


    public String dadosLidos;
    public int nodeBytes;
    public int baudrate;
    private int timeout;
    private CommPortIdentifier cp;
    private SerialPort serialPort;
    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 SerialComLeitura(String porta, int baudrate, int timeout) {
        this.baudrate = baudrate;
        this.timeout = timeout;
        this.porta = porta;
    }



    public void run(){
        try{
            Thread.sleep(5);
        }catch(Exception e){
            System.out.println("Erro de Thred: " + e);
        }
    }

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

        switch(event.getEventType()){
            case SerialPortEvent.BI:
            case SerialPortEvent.FE:
            case SerialPortEvent.OE:
            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:
                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;
        }
    }

    public void fecharCom(){
        try{
            serialPort.close();
        }catch(Exception e){
            System.out.println("Erro fechando porta: " + e);
            System.exit(0);
        }
    }

    public String obterPorta(){
        return porta;
    }
    
    public int obterBaudrate(){
        return baudrate;
    }

    public void setPeso(String peso){
        this.peso = peso;
    }

    public String getPeso(){
        return peso;
    }

    public void habilitarEscrita(){
        this.escrita = true;
        this.leitura = false;
    }

    public void habilitarLeitura(){
        this.escrita = false;
        this.leitura = true; 
    }

    public void obterIdPorta(){
        try{
            cp = CommPortIdentifier.getPortIdentifier(porta);
            if(cp == null){
                System.out.println("Erro na porta");
                this.IDPortaOK = false;
                System.exit(1);
            }
            this.IDPortaOK = true;
        }catch(Exception e){
            System.out.println("Erro obtendo ID da porta: " + e);
            IDPortaOK = false;
            System.exit(1);
        }
    }

    public void abrirPorta(){
        try{

            this.serialPort = (SerialPort) this.cp.open("SerialComLeitura", timeout);
            this.PortaOk = true;
            //configurar parâmetros.
            serialPort.setSerialPortParams(this.baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
            serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
        }catch(Exception e){
            this.PortaOk = false;
            System.out.println("Erro abrindo a comunicação: " + e.toString());
            System.exit(1);
        }
    }

    public void lerDados(){
        if(this.escrita == false){
            try{
                this.entrada = serialPort.getInputStream();
            }catch(Exception e){
                System.out.println("Erro de stream: "+ e);
                System.exit(1);
            }
            try{
                serialPort.addEventListener(this);
            }catch(Exception e){
                System.out.println("Erro de listener: " + e);
                System.exit(1);
            }
            serialPort.notifyOnDataAvailable(true);
            try{
                this.threadLeitura = new Thread(this);
                this.threadLeitura.start();
                this.run();
            }catch(Exception e){
                System.out.println("Erro de thread: " + e);
            }
        }
    }

    public void enviarString(String msg){
        if(this.escrita == true){

            try{
                this.saida = serialPort.getOutputStream();
                System.out.println("Fluxo OK");
            }catch(Exception e){
                System.out.println("Erro.STATUS: " + e);
            }

            try{
                System.out.println("Enviando um byte para a porta: "+ this.porta);
                System.out.println("Enviando: "+ msg);
                saida.write(msg.getBytes());
                Thread.sleep(100);
                saida.flush();
            }catch(Exception e){
                System.out.println("Houve um erro durante o envio. ");
                System.out.println("STATUS: " + e );
                System.exit(1);
            }
        }else{
            System.exit(1);
        }

    }

}

CLASSE: Serialcom.java

package wo.WOPIZZARIAS.serialcomm;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

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

/**
 *
 * @author João Lucas
 */
public class SerialCom {

    protected String[] portas;
    protected Enumeration listaDePortas;

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

    }

    public String[] getPortas(){
        return this.portas;
    }

    public void listarPortas(){
        int i=0;
        portas = new String[10];

        while(this.listaDePortas.hasMoreElements()){
            CommPortIdentifier ips = (CommPortIdentifier) this.listaDePortas.nextElement();
            System.out.println(ips.getName());
            portas[i] = ips.getName();
            i++;

        }

    }

    public boolean portaExiste(String COMp){
        String temp;
        boolean e = false;

        while(this.listaDePortas.hasMoreElements()){
            CommPortIdentifier ips = (CommPortIdentifier) this.listaDePortas.nextElement();
            temp = ips.getName();
            if(temp.equals(COMp))
                e = true;
        }
        return e;

    }

     /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        //SerialCom serial = new SerialCom();
        //serial.listarPortas();


        
        //Leitura
        SerialComLeitura leitura = new SerialComLeitura("COM1", 9600, 0);
        leitura.habilitarEscrita();
        leitura.obterIdPorta();
        leitura.abrirPorta();
        leitura.lerDados();

        try{
            Thread.sleep(15000);
        }catch(Exception e){
            System.out.println("Erro na Thread: "+ e);
        }
        leitura.fecharCom();
        

        /*
        //Leitura
        SerialComLeitura escrita = new SerialComLeitura("COM1", 9600, 0);
        escrita.habilitarEscrita();
        escrita.obterIdPorta();
        escrita.abrirPorta();
        escrita.enviarString("Ola");
        escrita.fecharCom();
        */
    }

}

=======================================

SOLUÇÃO:

A porta estava sendo usada por outro programa. Encerrei o tal programa e executei novamente o meu código e fungou! =D