salve galera,
seguinte, tenho tres classes, 1 beam, outra de comunicação e a principal que é uma JFrame que contem um JLabel.
eu envio uma requisição via serial 232 e recebo uma resposta, e gostaria que o recebido fosse setado no label, mas naum sei como acessar o objeto e modificalo dinamicamente.
alguem conhece um jeito de faze-lo?
segue o codigo da CLSCom :
//metodo para escrever identificação
public void escreverI() {
String msg = "";
msg = msg + STX + 'I' + ETX;
try {
outputStream.write(msg.getBytes());
} catch (Exception a) {}
}
// trata a msg de identificação
public String leIdent(String i) {
i = "Código AeS:" + i.substring(0, 4) + " NE: " + i.substring(4, 5)
+ " NS: " + i.substring(5, 9) + " VS: " + i.charAt(9) + "." + i.charAt(10);
Beam.setIdent(i);
Beam.setFlag(true);
return i;
}
// leitura da mensagem recebida na porta serial
public void LeMensagem() {
// buffer para guardar os dados temporiariamente
int readBuffer;
String result = "";
try {
// enquanto tiver dados na serial salva em readbuffer
while (inputStream.available() > 0) {
readBuffer = inputStream.read();
switch(status) {
case WAIT_STX :
// se dado for igual a STX começa a gravar
if(readBuffer == STX) {
status = protocolStatus.WAIT_ETX;
// variavel para armazenamento dos dados da serial
result = "";
}
break;
case WAIT_ETX :
// enquanto não chegar ETX, salva na variavel
if(readBuffer != ETX) {
result = result + (char) readBuffer;
} else {
switch(result.charAt(0)) {
// mensagem de identificação
case 'I' :
// chama o metodo le ident
leIdent(result.substring(1, result.length()));
break;
// mensagem de entrada
case 'E' :
break;
// mensagem de display
case 'D' :
break;
// mensagem de botão
case 'B' :
break;
// mensagem de escrita de saida
case 'W' :
break;
// mensagem de leitura de saida
case 'S' :
break;
// mensagem de moedas
case 'M' :
break;
// mensagem de cartão
case 'C' :
break;
// mensagem de impressora
case 'P' :
break;
}
}
break;
}
}
} catch(Exception a) {}
}
private void Disconect () {
running = false;
}
// metodo para envio periodico de mensagens de escrita
public void run() {
while(running == true) {
try {
// tempo de troca de mensagens (250 milissegundos)
Thread.sleep(250);
switch(ClsBeam.SendMsg) {
case MIdent :
System.out.println("Enviando ident");
escreverI();
break;
case MSaidaW :
escreverI();
break;
case MSaidaS :
escreverI();
break;
case MEntrada :
break;
case MBotao :
escreverI();
break;
case MImp :
escreverI();
break;
case MCartao :
escreverI();
break;
}
} catch(Exception b) {
}
}
}
// eventos de serial
public void serialEvent(SerialPortEvent spe) {
switch (spe.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:
LeMensagem();
}
}
}