Software de representación de datos: Obtención de los datos transmitidos para el procesado

Ya se ha visto que la comunicación con Java vía el puerto serie se traduce en un "stream" de bits que se obtienen en forma de vector de bytes. Los bytes enviados por el Maestro son sin signo y comprenden, en decimal, un número de entre 0 y 255. Sin embargo, en Java la naturaleza de los tipos es con signo y no existe ningún modificador para hacerlos sin signo (no existe el unsigned de C o C++). Esto implica que una conversión directa de el tipo byte a entero dará lugar a un número comprendido, en decimal, entre -128 y 127. Es por esto que la obtención para el procesado de los datos recibidos no es trivial.

Una solución para obtener el dato sin signo es realizar un cambio de tipos de manera que el valor recibido positivo se pueda expresar (esté contenido) en otro tipo. En nuestro caso, el tipo obtenido es un byte (255 como máximo) el cual se puede contener en un short ya que su longitud es de 2bytes por lo que comprende valores entre -32,768 y 32,767. De este modo, obtener un byte sin signo consiste en hacer una transformación de tipos con un enmascaramiento para no convertir el signo.

Entonces el código es el siguiente:

 
short UnsignedByte[] = new short[posicionNula];
        for (i=0;i<posicionNula;i++)
        {
            UnsignedByte[i]=(short)(0x00FF & mensaje[i]);
            PosMensaje=PosMensaje+(char)UnsignedByte[i];
        }

Donde

  • mensaje es el vector de bytes recibido.
  • posicionNula contiene la longitud del vector de bytes mensaje.
  • PosMensaje es mensaje representado como una cadena de caracteres o String. De este modo se puede representar en la consola.

Esta conversión de tipos es indeseable ya que se desperdicia espacio del reservado para cada tipo. No obstante es la mejor entre las posibles.1

Notas
1

En esta página muestran el mismo método de forma algo diferente. Además convierten distintos tipos a unsigned.

Referencias

SUN Microsystems The Java Tutorials.

SÁNCHEZ LÓPEZ M.; ALONSO BARBERÁN V. El lenguaje de programación Java.
Valencia: Servicio de publicaciones de la Universidad Politécnica de Valencia, 2003. 354 p.
ISBN:9788477215264

No hay comentarios: