Cara não sei se isso tem a ver mas o todo do meu ambiente que preciso fazer isso é o seguinte:
Recebo em stream os dados de uma balança e é em cima desses dados que eu preciso dividir e concatenar.
Olha o meu código:
public void serialEvent(SerialPortEvent ev){
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:
byte[] bufferLeitura = new byte[20];
try {
while ( entrada.available() > 0 ) {
nodeBytes = entrada.read(bufferLeitura);
}
String Dadoslidos = new String(bufferLeitura);
if (bufferLeitura.length == 0) {
System.out.println("Nada lido!");
} else if (bufferLeitura.length == 1 ){
System.out.println("Apenas um byte foi lido!");
} else {
String peso1 = " ";
String peso2 = " ";
String pesoTotal = " ";
if (teste == true){
if (Dadoslidos.substring(0, 1).equals("0")){
System.out.println(Dadoslidos.substring(0, 4));
peso1 = Dadoslidos.substring(0, 4);
}
if (Dadoslidos.substring(3, 7).equals("0000")){
System.out.println(Dadoslidos.substring(0, 2));
peso2 = Dadoslidos.substring(0, 2);
teste = false;
}
}
//System.out.println(Dadoslidos);
if(!peso2.trim().equals("")){
System.out.println(peso1.substring(0, 2) + "," + peso1.substring(2, 3) + peso2);
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
"Erro durante leitura! STATUS: " + e,
"Erro!",
JOptionPane.ERROR_MESSAGE);
//System.out.println("Erro durante a leitura: " + e );
}
//System.out.println("n.o de bytes lidos : " + nodeBytes );
break;
}
}
Será que o ideal para jogar o valor para as variáveis é montar um método set e para resgatar um método get? Será que isso tem a ver?
Vc teria q debugar melhor seu código, ams acho que é porque as variáveis não estão inicializadas sim… Põe alguns blocos try/catch ou verifique no trace da exceção gerada onde exatamente no seu código a exceção está sendo gerada…
Tente também exibir toda essa sua variável bufferLeitura usando um laço, pra ver se realmente tem algo dentro dela… Mesma coisa pro Dadoslidos