Problema muito estranho com a API RXTX, se for mesmo nela

5 respostas
rock-skull

Olá. tenho uma aplicação com comunicação serial desenvolvida com a API RXTX. Essa aplicação vai se comunicar com um módulo (hardware) pela porta serial.

A idéia para ativar e desativar o módulo é simples. Quando quero ativar, abro a porta serial e mando um comando (String, ex: “ativarModulo”) e o modulo responde com outro comando (String, ex:“ativada”). Quando eu recebo essa mensagem, a função de tratamento das mensagens reconhece a string de resposta e chama a função ativarExperiencia(); que conclui a ativação.
A mesma coisa faço para desativar, mando o comando (String, ex: “desativarModulo”) e o modulo responde com outro comando (String, ex: “desativada”). quando tratada a mensagem e reconhecida é chamada a função desativarExperiencia() e essa fecha a porta pela função conSerial.fecharPorta(); (conSerial é meu objeto da classe ConexaoSerial que é onde estão implementadas as funções de porta serial).

A parte de ativar está funcionando perfeitamente. Mas a parte de seativa trava na hora de fechar a porta serial. Fiz o debug e ele faz tudo chega a executar o comando conSerial.fecharPorta(); e a partir dae nm faz mais nada simplesmente trava. Detalhe, a porta não fecha (verifiquei com um monitor de portas)

Para testar, crie um botão e e chamei a função conSerial.fecharPorta();. Funcionou (A porta fechou normalmente). Chamei a função desativarPorta() e ela fecha normalmente também.

Simplesmente não entendo porque ela só trava quando eu chamo ela a partir da função de tratamento de Mensagem.

Método de tratamento de mensagem:

public void tratarMensagem(String mensagem){
            if(mensagem.equals("dExp")){
                ativarExperiencia();
            }
            if(mensagem.equals("aExp")){
                desativarExperiencia();
            }
        }

Método que Desativa Experiência:

public void desativarExperiencia(){
        log.append("Experiencia Desativada!\n");
        statusExperienciaField.setText("Desativada");
        conSerial.fecharPorta();      
        experienciaOn = false;
    }

Não entendo porque só quando eu chamo o método desativarExperiencia() pelo método de tratar mensagem que ele dá erro.

Alguma idéia ???

5 Respostas

rock-skull

Mais um detalhe… não é gerado nenhum erro nem nenhuma exceção…

pyro

Olha tenta esse link, tem bastante informação sobre a RXTX e comunicação serial com Java:
http://www.viamais.net/blog/?cat=9

Good luck.

L

Amigo, estou fazendo o meu TCC que utiliza API RXTX para Windows, mas não estou conseguindo fazer acessar a serial, vc poderia me passar o seu codigo.

Obrigado

Jener.

P

Cara a partir do link indicado acima você vai encontrar todo o processo de desenvolvimento da leitura e escrita em portas seriais.
Dê uma olhada lá que vai resolver o seu problema.

fabianofrizzo

Bom Dia Pessoal eu fiz boa parte da comunicação da RXTX com a Serial. Utilizei no meu TCC que foi para portar o Projeto ACBr para Java dem uma olhada no link

http://sourceforge.net/projects/jacbr/

Criado 2 de dezembro de 2007
Ultima resposta 20 de set. de 2008
Respostas 5
Participantes 5