Javax Comm

Eu to precisando desenvolver um aplicativo que realize ligações telefonicas.
Eu estou usando comm.jar, mais sem sucesso…
Não da nenhum erro, mais também não consigo receber nenhuma resposta…

Tai o meu codigo…

package br.com.gc.cobranca.gui;

import javax.comm.*;
import java.util.*;

public class SerialCom {
    //variáveis para identificar portas
    protected String[] portas;
    protected Enumeration listaDePortas;
    //construtor
    public SerialCom() {
        listaDePortas = CommPortIdentifier.getPortIdentifiers();
    }
    //retorna as portas disponíveis
    public String[] ObterPortas() {
        return portas;
    }
    //Copia portas para um Array
    protected void ListarPortas() {
        int i = 0;
        portas = new String[10];
        while (listaDePortas.hasMoreElements()) {
            CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
            portas[i] = ips.getName();
            i++;
        }
    }
    //pesquisa se a Porta existe
    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;
            }
        }
        return e;
    }
    //imprime as portas disponíveis
    protected void ImprimePortas() {
        for (int i = 0; i < portas.length; i++) {
            if (portas[i] != null) {
                System.out.print(portas[i] + " ");
            }
        }
        System.out.println(" ");
    }
}//FIM DA CLASSE
package br.com.gc.cobranca.gui;

import java.io.*;
import javax.comm.*;


public class SComm implements Runnable, SerialPortEventListener {

    private String Porta;
    public String Dadoslidos;
    private int baudrate;
    private int timeout;
    private CommPortIdentifier cp;
    private SerialPort porta;
    private OutputStream saida;
    private InputStream entrada;
    private Thread threadLeitura;

    public SComm() {
        Porta = "COM1";
        baudrate = 9600;
        timeout = 1000;
    }

    public SComm(String p, int b, int t) {
        this.Porta = p;
        this.baudrate = b;
        this.timeout = t;
    }

    //Obtém o ID da PORTA
    public void ObterIdDaPorta() {
        try {
            cp = CommPortIdentifier.getPortIdentifier(Porta);
            if (cp == null) {
                System.out.println("Erro ao identificar a porta....");
                System.exit(1);
            }
        } catch (Exception e) {
            System.exit(1);
        }
    }
    //Abre a comunicação da porta

    public void AbrirPorta() {
        try {
            porta = (SerialPort) cp.open("SComm", timeout);
            porta.setSerialPortParams(baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_2, SerialPort.PARITY_NONE);
        } catch (Exception e) {
            System.out.println("Erro ao abrir a porta....");
            System.exit(1);
        }
    }
    //função que envie um bit para a porta serial

    public void EnviarUmaString(String msg) {
        try {
            saida = porta.getOutputStream();
            saida.write(msg.getBytes());
            Thread.sleep(5000);
            saida.flush();
        } catch (Exception e) {
            System.out.println("Erro ao enviar a mensagem....");
            System.exit(1);
        }
    }
    //leitura de dados na serial

    public void LerDados() {
        try {
            entrada = porta.getInputStream();
        } catch (Exception e) {
            System.exit(1);
        }
        try {
            porta.addEventListener(this);
        } catch (Exception e) {
            System.exit(1);
        }
        porta.notifyOnDataAvailable(true);
        try {
            threadLeitura = new Thread(this);
            threadLeitura.start();
        } catch (Exception e) {
            System.out.println("Erro ao iniciar leitura: " + e);
        }
    }

    @Override
    public void run() {
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
        }
    }
    //gerenciador de eventos de leitura na serial

    @Override
    public void serialEvent(SerialPortEvent ev) {
        /*byte[] bufferLeitura = new byte[entrada.available()];
        entrada.read(bufferLeitura);
        if (bufferLeitura.length > 1) {
            System.out.println(new String(bufferLeitura));
        }*/


        /*if (ev.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
            byte[] readBuffer = new byte[20];
            try {
                while (entrada.available() > 0) {
                    int numBytes = entrada.read(readBuffer);
                }
                System.out.println(new String(readBuffer));
            } catch (IOException e) {
                System.out.println("Erro de leitura da porta!");
                e.printStackTrace();
            }
        }*/

        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:
                try {
                    byte[] bufferLeitura = new byte[entrada.available()];
                    entrada.read(bufferLeitura);
                    Dadoslidos = new String(bufferLeitura);
                    if (bufferLeitura.length == 0) {
                        System.out.println("Nada lido!");
                    } else if (bufferLeitura.length == 1) {
                        System.out.println("Apenas um byte foi lido!");
                    } else {
                        System.out.println(Dadoslidos);
                    }
                } catch (Exception e) {
                    System.out.println("Erro durante a leitura: " + e);
                }
                break;
        }
    }

    public void FecharCom() {
        try {
            porta.close();
        } catch (Exception e) {
            System.exit(0);
        }
    }

    public String obterPorta() {
        return Porta;
    }

    public int obterBaudrate() {
        return baudrate;
    }
}
package br.com.gc.cobranca.gui;


public class Stest2 extends SerialCom {

     Stest2() {
        super();
    }

    public static void main(String[] args) {
        Stest2 st = new Stest2();
        if (st.PortaExiste("COM1")) {
            System.out.println("Iniciando comunicação!");
            SComm sc = new SComm("COM1", 9600, 2000);
            sc.ObterIdDaPorta();
            sc.AbrirPorta();
            sc.EnviarUmaString("ATDT1256");
            sc.FecharCom();
        }
        Stest2 st2 = new Stest2();
        if (st2.PortaExiste("COM1")) {
            System.out.println("Iniciando comunicação!");
            SComm sc2 = new SComm("COM1", 9600, 2000);
            sc2.ObterIdDaPorta();
            sc2.AbrirPorta();
            sc2.LerDados();
            sc2.FecharCom();
        }
    }
}

Se alguem puder me ajuda, Agradeço…

Alguém sabe dizer como instala o Javax.comm no linux ?
A versão que estou utilizando é o ubuntu 9.04