Our Country Sites: Argentina|Brazil|Chile|Mexico|Peru

Uso efetivo dos buffers em transmissões Bluetooth

Versão para impressãoVersão para impressãoSend by emailSend by email

Si você esta vindo transmissões de dados muito lentas entre uma impressora Bluetooth e o seu aplicativo, pôde ser que tenha que ver com o método que você esteja usando para a buffering dos dados que vão do aplicativo J2ME à impressora.

O código que segue lei o conteúdo duma cadeia Dados e os escreve a um OutputStream, os:

              while (i < Dados.length()) {
                    os.write(Dados.charAt(i));
                    i++;
                }

Parecera, na análise inicial, que o processo de ler um caracter cada vez e o escrever ao OutputStreeam deveria funcionar. Mais em realidade, esta transferência de dados resulta muito lenta. O problema tem raiz no seguinte: cada operação os.write() usa um buffer separado para gerenciar a transferência de dados à impressora. Num equipamento com limites (como é um aparelho móvel), isso cria um problema porque é muito mais comum achar que os buffers disponíveis ficam lotados. Nesse caso, o equipamento espera 10000 ms (nos equipamentos iDEN) antes de intentar novamente -- e, no caso do código exemplo, espera 10000 ms cada vez que entra na avaliação da condição while().

Simplesmente remplazar o código com

os.write(Dados.getBytes());

resolve o problema.

0
Your rating: Nenhum