Ir ao conteúdo
  • Cadastre-se

RS232 em JAVA, dificuldade, dados chegam errados


Posts recomendados

Galera, tenho um projeto implementado com microcontroladores que se comunicam com o pc pro RS232, tenho o software em C esta perfeito, mas estou tentando migrar pra JAVA, mas estou tendo um problema, eu envio os dados através da aplicação em JAVA perfeito, mas pra receber, a maquina me da um feedback se o comando foi aceito ou não, no caso de comando valido ela retorna o inteiro 2, mas no java eu envio e quando recebe, as vezes recebe do 2 e as vezes outros careceres qualquer, e as vezes ele perde o feedback e fica a espera do próximo, o que me impede de enviar novo comando, meu código esta assim para testes.

import javax.swing.Timer;import jssc.SerialPort;import jssc.SerialPortException;    public String comm()    {        try             {                serialPort.openPort();                serialPort.setParams(9600, 8, 1, 0);                buffer = serialPort.readString(tamanho);                            serialPort.closePort();//Close serial port            }            catch (SerialPortException ex)             {                System.out.println(ex);            }            return buffer;    }

essa é a parte da recepção!

Se alguém puder me dar uma diga ja seria bem util!

Valeu ai galera

Consegui resolver, usei threads, assim ele fica buscando sempre, então eu só filtro o que preciso, ta ai o código cado alguém precise um dai sei la.

 public void com(){ // controle de feedback        new Thread() {            @[member="override"]            public void run()             {                while (true)  //busca sempre                {                    buffer = null;                try                   {                        buffer = serialPort.readString(tamanho);                  }                  catch (SerialPortException ex)                   {                      System.out.println(ex);                  }                 if (buffer.equals("2"))  // busca o valor que preciso                   controle = 2;                               try{Thread.sleep(1);}catch(InterruptedExceptionex){} //delay                }            }               }.start();    }

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...