05/11/2014, 13:38
|
| Colaborador | | Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses Puntos: 454 | |
Respuesta: Problema con BufferedReader y readLine() Hola:
Cuando algo (el GPS en este caso), envía mensajes, los envía de forma que en recepción puedan separarse e interpretarse. Hay muchas formas de hacer esto y tendrías que ven el manual de tu GPS cual está usando.
Si los mensajes son caracteres de texto ascii, una forma válida es enviar un retorno de carro al final del mensaje. Pero parece que no es el caso.
Si los mensajes no son caracteres de texto ascii, sino bytes cualesquiera, lo habitual es que delante de cada mensaje de envíe una pequeña cabecera (un conjunto de bytes) que sirven para indicarte como leer el resto del mensaje. En tu caso, parece que parte de esa cabecera es la longitud del mensaje. También suele ser habitual que la cabecera contenga algún tipo de byte fijo (por ejemplo, oxFF) para identificar cuándo empieza una cabecera.
Si este último caso es el tuyo, deberías leer byte a byte buscando ese inicio de cabecera (el 0xFF en mi ejemplo, que no tiene que ser el real de tu GPS), leer entonces la cebecera (unos pocos bytes, los que diga el manual) y ahí obtener la longitud del mensaje que viene detrás. Lees entonces ese número de bytes para construir el mensaje. Si hay varios tipos de mensajes, también suele ser habitual que algún byte/s de la cabecera indique qué mensaje es.
Todo esto son ideas generales y habituales al enviar mensajes, sin ver el manual es difícil decirte el caso concreto.
Se bueno. |