[RESOLVIDO] JAVA quebrando string em duas ao converter de bytes para String

Boa noite pessoal!

Bom sou novo por aqui, então perdoem alguma falha!

Meu problema é o seguinte, estou desenvolvendo um projeto para meu TCC com RFID, para isso preciso ler dados de uma porta serial, estou recebendo esses dados em bytes e convertendo esses dados para String, até ai tudo bem consigo ler e converter, o problema é que o eclipse me devolve esses dados em duas String e ai está meu problema, pois preciso transformar isso em uma String só, ja me descabelei e ainda não consegui resolver o problema será que alguém já viu isso e poderia me ajudar?
Preciso muito dessa Ajuda

Segue parte do código

[code] public void serialEvent(SerialPortEvent event) {

    		switch (event.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:
    			
    			//Se tiver dados disponíveis
    			byte[] readBuffer = new byte[20];
    			try {
    			   int numBytes = 0;
    				while (inputStream.available() != 0) {
    					numBytes = inputStream.read(readBuffer);
    					MinhaThred t = new MinhaThred();
    					t.start();
    					
    					result  = new String(readBuffer); 
    					
    					
    				}
    					
    				String result  = new String(readBuffer);
    				
    				System.out.println(result);
    				
    				
    				
    				
    		
    			} catch (IOException e) {}
    			
    			

    			break;
    		}
    		
    		
    	}

}
[/code]

Verifica quantas vezes ocorre o evento SerialPortEvent.DATA_AVAILABLE.

Veja, você forma uma String em cada ocorrência deste evento.

Pode ser um problema não no recebimento, mas no host que envia os dados para você. Ele pode estar enviando em duas vezes. Por isso tem que conferir as ocorrências de SerialPortEvent.DATA_AVAILABLE.

Se isso for verdade, você deve desenvolver um conhecimento mais avançado para enquadrar a mensagem de maneira correta. Não é errado um envio chegar em 2 ou mais parcelas, por isso é recomendado que o enquadramento da mensagem enviada seja explícito.

Se realmente precisar controlar o enquadramento de mensagens de um fluxo de bytes recebidos, você tem que fazer isso a partir de alguma característica como tamanho se for fixo ou ainda algum indicador de início ou fim de mensagem. Sem isso, fica difícil mesmo.

wiliamps

Muito obrigado pela dica wiliamps, vou estudar sobre esse evento
O tamanho da String é fixo sim vou partir dai
Se tiver mais alguma dica ou forma de me ajudar ficarei muito grato

Vlw

Então Pedra, não tenho muito mais a contribuir.

Você pode olhar um artigo que escrevi justamente sobre bufferizar dados de forma mais simples.

Lembre-se, você tem que declarar seu buffer como atributo de classe, senão, cada vez que ocorrer o evento, você perde ele.

O artigo fica em: http://oracle2java.blogspot.com.br/2012/09/java-wtbytebuffer-bufferizacao-facil.html

wiliamps

wiliamps quero deixar aqui o meu muito obrigado a vc pela dica, realmente o problema era esse, o meu rfid está enviando em duas partes a leitura
resolvi o problema com variaveis globais no meu caso duas

Muito agradecido pela dica