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

Uso efectivo de buffers en transmisiones Bluetooth

Versión para impresiónVersión para impresiónSend by emailSend by email

Si está viendo transmisiones de datos muy lentas entre una impresora Bluetooth y su aplicación Java ME, puede ser que tenga que ver con el método que esté usando para el buffering de los datos que van de la aplicación a la impresora.

El código que sigue lee el contenido de una cadena, Datos e los escribe a un Outputstream, sería un modo obvio de intentar hacer esto:

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

En un análisis inicial, parecería que el proceso de leer un carácter a la vez e escribirlo en secuencia al OutputStream debería funcionar. En realidad, esta transferencia de datos resultaría lentísima. El problema nace de lo siguiente: cada operación os.write() usa un buffer separado para administrar la transferencia de datos a la conexión Bluetooth. En un equipo con límites, como es el caso de cualquier dispositivo móvil, esto crea un problema, ya que es mucho más frecuente encontrar que todos los buffers están llenos. En ese caso, el equipo iDEN espera 10000 ms antes de intentar nuevamente -- y en el caso del código ejemplo, esperaría ese tiempo cada vez que hace la evaluación de la condición while().

Simplemente reemplazar el código con

os.write(Datos.getBytes());

resuelve el problema.

0
Your rating: Ninguno