Javax Comm

1 resposta
S

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…

1 Resposta

pedrorawan

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

Criado 9 de outubro de 2009
Ultima resposta 9 de out. de 2009
Respostas 1
Participantes 2