Amigos, boa tarde.
Estou com uma dúvida besta, tenho uma classe que aprendi por esse link que está está comunicando normal com minha balança serial, porém eu não consigo pegar o peso da mesma.
public Principal() {
initComponents();
//Iniciando leitura serial
SerialComLeitura leitura = new SerialComLeitura("COM3", 9600, 0);
leitura.HabilitarLeitura();
leitura.ObterIdDaPorta();
leitura.AbrirPorta();
leitura.LerDados();
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
System.out.println("Erro na Thread: " + ex);
}
leitura.FecharCom();
}
leitura.LerDados();
Pelo que andei lendo e pesquisando aqui no fórum com dúvidas similares, eu tenho que colocar um listener na minha função SerialPortEvent, mas não sei como fazer isso. Segue meu código.
public void run(){
try {
Thread.sleep(5);
//NÃO ESTOU FAZENDO NADA AQUI.
// TENHO QUE CHAMAR A FUNÇÃO serialEvent AQUI, COMO FAZER ISSO COM SerialPortEvent ?
} catch (InterruptedException e) {
System.out.println("Erro de Thread: " + e);
}}
public void serialEvent(SerialPortEvent ev){
StringBuffer bufferLeitura = new StringBuffer();
int novoDado = 0;
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:
//Novo algoritmo de leitura.
while(novoDado != -1){
try{
novoDado = entrada.read();
if(novoDado == -1){
break;
}
if('\r' == (char)novoDado){
bufferLeitura.append('\n');
}else{
bufferLeitura.append((char)novoDado);
}
}catch(IOException ioe){
System.out.println("Erro de leitura serial: " + ioe);
}}
setPeso(new String(bufferLeitura));
System.out.println(getPeso());
break;}}
Enfim, pelo que percebi, meu código nao executa o método serialEvent, por que?
Obrigado pela ajuda.