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…