Problema com javacomm

8 respostas
C

Criei um programa para ler os dados da porta serial usando rxtx, quando tento usar a api javacomm ele não consegui nem achar a porta COM1. Alguem sabe qual pode ser o problema? Antes que alguem fale, não tem nenhum dispositivo usando a porta. Da erro de NoSuchPortException:

Enumeration ports = CommPortIdentifier.getPortIdentifiers();

                  while(ports.hasMoreElements()) {

                        System.out.println(ports.nextElement());

                  }

Obrigado.

8 Respostas

W

Olá.

Windows ou Linux?

C

Reaproveitando o tópico, estou com o mesmo problema, só que no meu caso ele compila e roda, mas não retorna nenhuma porta…
alguem poderia ajudar?

estou usando windows…

M

O Windows XP e possivelmente versões posteriores a ele não permitem o acesso direto à porta paralela. Para conseguir rodar seu programa você precisará “liberar” as portas para acesso, usando algum programa como o UserPort.

lina

Oi,

De uma olhada aqui.:

Linux:

http://www.guj.com.br/posts/list/28493.java#758917

Windows:

http://www.guj.com.br/posts/list/137494.java#740190

Verifique se os arquivos da biblioteca estão no lugar correto…

Tchauzin!

C
Oi,

De uma olhada aqui.:

Linux:

http://www.guj.com.br/posts/list/28493.java#758917

Windows:

http://www.guj.com.br/posts/list/137494.java#740190

Verifique se os arquivos da biblioteca estão no lugar correto..

Tchauzin!

olá, muito obrigado pela ajuda, coloquei todos os arquivos nos locais que vc indicou, mas ainda assim não encontro nada, vc poderia me ajudar?
Enumeration listaDePortas;
        listaDePortas = CommPortIdentifier.getPortIdentifiers();
        console.setText("Procurando Portas...\n");

            int i = 0;
                String[] portas = new String[10];
         while (listaDePortas.hasMoreElements()) {
              CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
              portas[i] =  ips.getName();
              i++;
              console.setText(console.getText() + ips.getName());
         }

este código deveria retornar todas as portas seriais paralelas do meu pc certo?
o problema eh q nao retorna nada..
vlw

C

olha, jha coloquei os arquivos no lugar certo, jah tentei de td, to usando essas funcoes q achei em uma apostila aqui no guj, mas simplesmente nao retorna minha porta..
no gerenciador de dispositivos consta como uma COM3, jah tentei 0, 1, 2, 3, 4, 5, 6 ...

a biblioteca eh essa

import javax.comm.*;
import java.io.*;
//classe Principal
public class Serial implements Runnable, SerialPortEventListener {
       //propriedades
       private String Porta;
       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;
       //indicadores
       private boolean IDPortaOK; //true porta EXISTE
       private boolean PortaOK;// true porta aberta
       private boolean Leitura;
       private boolean Escrita;
       //construtor default  paridade : par
       //baudrate: 9600 bps stopbits: 2 COM 1
       public Serial() {
              Porta = "COM1";
              baudrate = 9600;
              timeout = 1000;
       };
       //um Objeto ComObj é passado ao construtor
       //com detalhes de qual porta abrir
       //e informações sobre configurações
       public Serial( String p , int b , int t ){
              this.Porta = p;
              this.baudrate = b;
              this.timeout = t;
       };
       //habilita escrita de dados
       public void HabilitarEscrita(){
              Escrita = true;
              Leitura = false;
       }

       //habilita leitura de dados
       public void HabilitarLeitura(){
              Escrita = false;
              Leitura = true;
       }
       //Obtém o ID da PORTA
       public void ObterIdDaPorta(){
            try {
                cp =  CommPortIdentifier.getPortIdentifier(Porta);
                if ( cp == null ) {
                   System.out.println("A " + Porta + " nao existe!" );

                   System.out.println("ERRO!Abortando..." );

                   IDPortaOK = false;
                   System.exit(1);
                }
                IDPortaOK = true;
            } catch (Exception e) {
                System.out.println("Erro durante o procedimento. STATUS" + e );
                IDPortaOK = false;
                System.exit(1);
            }
       }
       //Abre a comunicação da porta
       public void AbrirPorta(){
            try {
                porta = (SerialPort)cp.open("SComm",timeout);
                PortaOK = true;
                System.out.println("Porta aberta com sucesso!");
                //configurar parâmetros
                porta.setSerialPortParams(baudrate,
                                          porta.DATABITS_8,
                                          porta.STOPBITS_2,
                                          porta.PARITY_NONE);
            } catch (Exception e) {
                PortaOK = false;
                System.out.println("Erro ao abrir a porta! STATUS: " + e );
                System.exit(1);
            }
       }
...
//Tem mais funções mas não vem ao caso...

simplesmente nao acha nada, como se nao existisse porta, ele compila, roda, de boa, mas nao acha nd!
heeeeellp please!!

lina

Oi,

Tente apenas isso.:
public static void main(String args[])
	{
		Enumeration 
	        listaDePortas = CommPortIdentifier.getPortIdentifiers();
		
	        System.out.println("Procurando Portas...\n");

	        while (listaDePortas.hasMoreElements()) {
	              CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
	              System.out.println(ips.getName());
	         }
	}

Tchauzin!

C

Olá, o problema, pelo jeito era o modo como eu estava executando meu programa, eu ia fazer meu próprio programa pra ler a serial, mas como não tive tempo, acabei compilando um sample que vem com a api do java, só que mesmo assim não funcionou, mas, quando eu executei a partir do prompt, funcionou lindamente, ai acabei juntando o exemplo da api com meu programa, pq, meu projeto era pra ontem, e não ia dar tempo.
Mas deu certo enfim.

Muito obrigado pela ajuda!!!
E lina, como a outra pessoa disse no forum, vc vai pro céu!!!

Criado 15 de setembro de 2009
Ultima resposta 10 de dez. de 2009
Respostas 8
Participantes 5