Uso efectivo de buffers en transmisiones Bluetooth
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:
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
resuelve el problema.
- Inicie sesión o regístrese para enviar comentarios
- 2178 lecturas
- English
- Português
