Biblioteca RXTX lendo porta serial

Como fazer um método que leia a porta serial, usando a biblioteca RXTX, atribua o valor lido em uma string ?

Tenho um sensor de temperatura rodando no arduino e ele vai ficar medindo e enviando a informação pela porta serial.
Em java tenho uma interface que contem um label preciso atualizar esse label com o valor lido na porta serial.

Abaixo segue as classes RXTX que estou utilizando.

SerialCom.java

`package serial;

import java.util.Enumeration;

import gnu.io.CommPortIdentifier;

public class SerialCom {
protected String[] portas;

protected Enumeration listaDePortas;

public String[] ObterPortas() {

	return portas;

}

protected void ListarPortas() {

	int i = 0;

	portas = new String[10];

	while (listaDePortas.hasMoreElements()) {

		CommPortIdentifier ips =

		(CommPortIdentifier) listaDePortas.nextElement();

		portas[i] = ips.getName();

		i++;

	}

}

public boolean PortaExiste(String COMp) {

	String temp;

	boolean e = false;

	while (listaDePortas.hasMoreElements()) {

		CommPortIdentifier ips = (CommPortIdentifier) listaDePortas.nextElement();

		temp = ips.getName();

		if (temp.equals(COMp) == true) {

			e = true;

		}

	}

	return e;

}

// Contrutor
public SerialCom() {

	listaDePortas = CommPortIdentifier.getPortIdentifiers();

}

}`

SeriaComLeitura.java

`package serial;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;

public class SerialComLeitura implements Runnable, SerialPortEventListener {

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;

private boolean IDPortaOK;

private boolean PortaOK;

private boolean Leitura;

private boolean Escrita;

private String Porta;

protected String peso;

public void setPeso(String peso) {

	this.peso = peso;

}

public String getPeso() {

	return peso;

}

public SerialComLeitura(String p, int b, int t) {

	this.Porta = p;

	this.baudrate = b;

	this.timeout = t;

}

public void HabilitarEscrita() {

	Escrita = true;

	Leitura = false;

}

public void HabilitarLeitura() {

	Escrita = false;

	Leitura = true;

}

public void ObterIdDaPorta() {

	try {

		cp = CommPortIdentifier.getPortIdentifier(Porta);

		if (cp == null) {

			System.out.println("Erro na porta");

			IDPortaOK = false;

			System.exit(1);

		}

		IDPortaOK = true;

	} catch (Exception e) {

		System.out.println("Erro obtendo ID da porta: " + e);

		IDPortaOK = false;

		System.exit(1);

	}

}

public void AbrirPorta() {

	try {

		porta = (SerialPort) cp.open("SerialComLeitura", timeout);

		PortaOK = true;

		// configurar par‚metros

		porta.setSerialPortParams(baudrate,

				porta.DATABITS_8,

				porta.STOPBITS_1,

				porta.PARITY_NONE);

		porta.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);

	} catch (Exception e) {

		PortaOK = false;

		System.out.println("Erro abrindo comunica�„o: " + e);

		System.exit(1);

	}

}

//public void LerDados() {
public void LerDados() {
	String temp;
	if (Escrita == false) {

		try {

			entrada = porta.getInputStream();
			//temp = entrada.toString();
			//System.out.println(temp);

		} catch (Exception e) {

			 System.out.println("Erro de stream: " + e);

			System.exit(1);

		}

		try {

			porta.addEventListener(this);

		} catch (Exception e) {

			System.out.println("Erro de listener: " + e);

			System.exit(1);

		}

		porta.notifyOnDataAvailable(true);

		try {

			threadLeitura = new Thread(this);

			threadLeitura.start();

			run();

		} catch (Exception e) {

			System.out.println("Erro de Thred: " + e);

		}

	}
	
}

public void EnviarUmaString(String msg) {

	if (Escrita == true) {

		try {

			saida = porta.getOutputStream();

			System.out.println("FLUXO OK!");

		} catch (Exception e) {

			System.out.println("Erro.STATUS: " + e);

		}

		try {

			System.out.println("Enviando um byte para " + Porta);

			System.out.println("Enviando : " + msg);

			saida.write(msg.getBytes());

			Thread.sleep(100);

			saida.flush();

		} catch (Exception e) {

			System.out.println("Houve um erro durante o envio. ");

			System.out.println("STATUS: " + e);

			System.exit(1);

		}

	} else {

		System.exit(1);

	}

}

public void run() {

	try {

		Thread.sleep(5);

	} catch (Exception e) {

		System.out.println("Erro de Thred: " + 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;

}

}
public void FecharCom(){

    try {

        porta.close();

    } catch (Exception e) {

        System.out.println("Erro fechando porta: " + e);

        System.exit(0);

    }

}

public String obterPorta(){

    return Porta;

}

public int obterBaudrate(){

    return baudrate;

}

}
'
Classe de teste onde estou tendando ler o valor e atribuir a variavel

** TestaSerial.java**

`package serial;

import serial.SerialCom;
import serial.SerialComLeitura;

public class TestaSerial extends SerialCom {

public static void main(String[] args) {
	//Iniciando leitura serial

    //SerialComLeitura leitura = new SerialComLeitura("/dev/cu.usbmodemFD131", 9600, 0);
	SerialComLeitura leitura = new SerialComLeitura("COM5", 9600, 0);
	
    leitura.HabilitarLeitura();

    leitura.ObterIdDaPorta();

    leitura.AbrirPorta();

    leitura.LerDados();

    //Controle de tempo da leitura aberta na serial

    try {
    	
        Thread.sleep(1000);

    } catch (InterruptedException ex) {

        System.out.println("Erro na Thread: " + ex);

    }

    leitura.FecharCom();

}

}`