Ir ao conteúdo
  • Cadastre-se

Cristiano Dewes

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Eu estou usando o Windows 8.1. Verifiquei que o programa está enviando normalmente os dados para o arduino, como o esperado. Eu acredito que o problema do meu programa está no serialEvent pois é esta classe que é responsável por captar os dados que são enviados pelo arduino, ou ainda, pode ser a parte do eventListener que não está informando que os dados estão sendo enviados.
  2. Estou fazendo um programa para, primeiramente, ler uma informação do Arduino Leonardo pela porta serial. Revisei o programa diversas vezes e não encontro erro, porém não estou conseguindo captar as informações do arduino. Utilizando a serial da IDE arduino é possível verificar que o arduino está enviando normalmente as informações. Quando executo o meu programa a conexão é estabelecida porém não retorna nenhum valor enviado. Por favor, preciso de ajuda urgentemente. OBS.: Há, ainda, uma classe protocolo e outra supervisório. Estas já foram testadas e funcionam normalmente. package Serial;import gnu.io.CommPortIdentifier;import gnu.io.SerialPort;import gnu.io.SerialPortEvent;import gnu.io.SerialPortEventListener;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStream;import java.util.Enumeration;/** * * @author dewes_000 */public class SerialRxTx implements SerialPortEventListener { SerialPort serialPort = null; private Protocolo protocolo = new Protocolo(); //Objeto de gestão de protocolo private String appName; //Nome da aplicação private BufferedReader input; //objeto para leitura na serial private OutputStream output; //objeto para escrita na serial private static final int TIME_OUT = 1000; //define o tempo de espera de comunicação private static int DATA_RATE = 9600; //velocidade da comunicação private String serialPortName = "COM6"; public boolean iniciaSerial() { boolean status = false; try { //Obtém portas seriais do sistema CommPortIdentifier portId = null; //identificador de porta serial Enumeration portEnum = CommPortIdentifier.getPortIdentifiers(); //recebe em ordem as portas cadastradas no SO while(portId == null && portEnum.hasMoreElements() ) { CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement(); if(currPortId.getName().equals(serialPortName) || currPortId.getName().startsWith(serialPortName)) { serialPort = (SerialPort) currPortId.open(appName, TIME_OUT); portId = currPortId; System.out.println("Conectado em " + currPortId.getName()); break; } } if(portId == null || serialPort == null) { return false; } serialPort.setSerialPortParams( DATA_RATE, //velocidade SerialPort.DATABITS_8, //bits de transmição SerialPort.STOPBITS_1, //bits de parada SerialPort.PARITY_NONE); serialPort.addEventListener(this); //vai escutar eventos da serial serialPort.notifyOnDataAvailable(true); //vai ser notificado quando estiver chegando dados status = true; /*try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); //imprime a pilha de excessão status = false; }*/ } catch (Exception e) { e.printStackTrace(); } return status; } //envia os dados na serial public void sendData(String data) { try { output = serialPort.getOutputStream(); output.write(data.getBytes());//envia os bytes da informação } catch (Exception e) { System.err.println(e.toString()); //Podemos exibir uma mensagem; } } //fecha a comunicação serial public synchronized void close() { if(serialPort != null) { serialPort.removeEventListener(); serialPort.close(); } } @[member=override] public synchronized void serialEvent(SerialPortEvent spe) { //método que lida com a chegada de dados pela serial ao computador try { switch(spe.getEventType()) { case SerialPortEvent.DATA_AVAILABLE: if (input == null) { input = new BufferedReader( //leitor bufferizado new InputStreamReader( serialPort.getInputStream())); //envia o fluxo da porta serial parta o inputStreamReader } if(input.ready()) { protocolo.setLeituraComando(input.readLine()); System.out.println("Chegou: " + protocolo.getLeituraComando()); } break; default: break; } } catch (Exception e) { e.printStackTrace(); } } public SerialPort getSerialPort() { return serialPort; } public void setSerialPort(SerialPort serialPort) { this.serialPort = serialPort; } public Protocolo getProtocolo() { return protocolo; } public void setProtocolo(Protocolo protocolo) { this.protocolo = protocolo; } public static int getDATA_RATE() { return DATA_RATE; } public static void setDATA_RATE(int DATA_RATE) { SerialRxTx.DATA_RATE = DATA_RATE; } public String getSerialPortName() { return serialPortName; } public void setSerialPortName(String serialPortName) { this.serialPortName = serialPortName; } }

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...