Waba

Mensagem que aparece um tempo e saí

import waba.ui.MessageBox;

public class Mensagem extends MessageBox

{

      public Mensagem(String titulo, String msg)

      {

            super(titulo,msg,null);

            this.setUnpopDelay(3000);

      }

}

 

Writebytes serial

Pessoal, Estou tentando sincronizar minha aplicação SuperWaba com minha aplicação Servidor em Java utilizando sockets e estou tendo problemas em receber e enviar mensagens com uma unica conexão. A minha aplicação servidor esta funcionando perfeitamente,  fiz uma aplicação cliente em Java para simular a comunicação, e  tudo funciona perfeitamente com apenas uma conexão. Mas o meu cliente SuperWaba, após o envio de informações para o servidor, só é possivel receber as informações de resposta se ambos (Servidor e cliente) fecharem e abrirem novamente a  conexão, ou seja, somente o envio ou recebimento de mensagem é realizado em uma conexão.

Alguem sabe informar se isso é uma caracteristica do Superwaba, dos dispositivos móveis, ou problema de Bios? Há alguma forma de realizar a sincronia de Leitura/Escrita realizando somente uma unica conexão Socket?

Segue um resumo do código que estou utilizando no superwaba e que não funciona a menos que se reabra a conexão após o trexo de  recebimento de informações (um código similar foi feito em java para simular e obteve sucesso):

 

try {

   skt = new Socket(server_ip, server_port);

   if (skt.isOpen()) {

//ENVIANDO INFORMAÇÕES

      String mensagemOut = "Me mande os registros"

//Mensagem enviada

      byte [] bufOut = mensagemOut.getBytes();

      if (skt.writeBytes(bufOut, 0, bufOut.length) != 

bufOut.length) {

         <ERRO>

      }

 

// so funciona se a conexão for reaberta neste ponto. O problema é que o servidor só retorna informações após o pedido, fechando a conexão ele perde o pedido da sessão.

//RECEBENDO INFORMAÇÕES

      int bytesReady = 0;

      int bytesReceived = 0;

      byte[] buffer = new byte[1000];

      try {

         bytesReceived = skt.readBytes(buffer,bytesReady,1000-bytesReady);

      } catch (Exception e) {

         <ERRO>

      }

      if (bytesReceived > 0) {

         mensagemIn = new String(buffer).trim(); //Mensagem 

recebida

      }

   }

catch (Exception e) {

   return;

}

 

//FIM

 

mensagemIn retorna vazia se a conexão não for reaberta

 

------------------

enviar bytes para serial

você tem que fazer o seguinte:

Primeiro para passar os arquivos para o array, vc tem que fazer

Array[0] = (0x16 & 0xFF);

Array[1] = (0x4E & 0xFF);

Array[2] = (0xAA & 0xFF);

Array[3] = (0x81 & 0xFF);

Array[4] = (0xBC & 0xFF);

Array[5] = (0x43 & 0xFF);

 

Por que?

1 0x"valor", é preciso usar o 0x antes do valor para que o mesmo seja identificado como hexa.

Segui

2 Você tem que fazer um And binário com 0xFF(255), para que o mesmo só retorne os primeiros 8 bits(1o byte).

3 Agora é só mandar um writebytes.

Comunicação Serial

try {

        skt = new Socket(server_ip, server_port);

        if (skt.isOpen()) {

                //ENVIANDO INFORMAÇÕES

                String mensagemOut = "Me mande os registros"//Mensagem enviada

                byte [] bufOut = mensagemOut.getBytes();

                if (skt.writeBytes(bufOut, 0, bufOut.length) != bufOut.length) {

                <ERRO>

        }

        //so funciona se a conexão for reaberta neste ponto. O problema é que

          o servidor só retorna informações após o pedido, fechando a conexão

          ele perde o pedido da sessão.

        //RECEBENDO INFORMAÇÕES

        int bytesReady = 0;

        int bytesReceived = 0;

        byte[] buffer = new byte[1000];

        try {

                bytesReceived = skt.readBytes(buffer,bytesReady,1000-bytesReady);

        } catch (Exception e) {

                <ERRO>

        }

        if (bytesReceived > 0) {

                mensagemIn = new String(buffer).trim(); //Mensagem recebida

        }

    }

    } catch (Exception e) {

return;

}

 

Window SW

import waba.ui.*;

import waba.fx.*;

 

public class o2 extends MainWindow

{

Button bot;

 

public o2()

{

setTitle("teste");

setBorderStyle(TAB_ONLY_BORDER);

}

 

public void onStart()

{

add( bot = new Button("Abrir"),CENTER,TOP+4);

}

 

public void onEvent(Event evento)

{

if(evento.type == ControlEvent.PRESSED && evento.target == bot)

{

Co2 Gcarbono = new Co2();

popupModal(Gcarbono);

}

}

}

 

class Co2 extends Window

{

Button bot2;

 

public Co2()

{

setTitle("oi");

setBorderStyle(TAB_ONLY_BORDER);

add(bot2 = new Button("Fechar"),CENTER,TOP+3);

}

public void onEvent(Event event)

{

if(event.type == ControlEvent.PRESSED && event.target == bot2)

{

unpop();

 

}

}

}