Bridge - Tabla ASCII a Consola

Este ejemplo de un dispositivo Yun muestra cómo imprimir en la Consola mediante la generación de una tabla de caracteres y sus valores ASCII en decimal, hexadecimal, octal y binario. Para más información sobre ASCII, consulte asciitable.com.

La Consola, basada en Bridge, le permite el envío de información desde el dispositivo  Yun a un ordenador tal como lo haría con el monitor serie, pero de forma inalámbrica. Se crea una conexión segura entre el dispositivo Yun y el ordenador a través de SSH.

Cuando el dispositivo Yun y el ordenador están en la misma red, puede encontrar el dispositivo Yun en el elemento de menú Herramientas > Puertos en el software de Arduino (IDE).

Hardware necesario

Placa o escudo Yun 
Ordenador y Yun en la misma red inalámbrica

Circuito

No hay circuito para este ejemplo.


Código

Incluir la biblioteca Console, que hereda de Bridge.

#include <Console.h>

Crear una variable que contendrá el valor a imprimir en la ventana de la consola. Los caracteres ASCII con valores de 32 y por debajo son invisibles, por lo que hay que  inicializar la variable con un valor de 33 (que corresponde a "!").

int byte = 33;

En setup (), inicializar Bridge y Console, y esperar a que el puerto se abra. Una vez que se ha establecido una conexión, imprima un pequeño fragmento de información que describa lo que va a seguir:

void setup() {
   Bridge.begin();
   Console.begin();

   while (!Console) {
     ; // espera a que el puerto de consola se conecte.
   }
   Console.println("TableASCII ~ Mapa de caracteres");
 }
  
En loop (), se imprimirá el valor en un número de diferentes formatos.

Para ver el valor ASCII de la variable, puede escribir el byte con Console.Write (). La Consola interpreta todos los bytes como caracteres ASCII.

Console.write(thisByte);

Console.print () imprime el valor como una cadena de decimales codificados en ASCII de forma predeterminada.

Console.print(thisByte);

Console.print () y Console.println () también pueden enviar cadenas a la ventana de la consola eb representación hexadecimal, octal, y los valores de números binarios con el modificador apropiado. Console.println () añadirá caracteres de nueva línea y retorno de carro a la cadena, creando un salto de línea en la ventana de la consola.

Console.print(thisByte, HEX);
Console.print(thisByte, OCT);
Console.println(thisByte, BIN);

En este ejemplo, sólo se está imprimiendo los caracteres alfanuméricos que aparecen en un teclado de EE.UU., así que no hay necesidad de imprimir los valores anteriores a126. Para asegurarse de que todos los datos se envían antes de parar el programa, hacer una llamada a consola. flush().

if (thisByte == 126) {    // tambien se puede usar if (thisByte == '~') {
     Console.flush();

     while (true) {
       continue;
     }

Si el programa no imprime todos los valores, incrementar este byte antes de ejecutar loop () de nuevo.

thisByte++;
}

El programa completo quea así:

// Imprimir la tabla ASCII en la consola para Yún101 / YunShield / Yun
// Imprime valores de bytes en todos los formatos posibles: 
// * como valores binarios en bruto
// * como valores decimal codificada en ASCII, hexadecimal, octal y  binarios 
// Para más información sobre ASCII, consulte // http://www.asciitable.com
// http://en.wikipedia.org/wiki/ASCII 

// circuito: 
// - Yún101 / YunShield / Yun 

// creado en 2006 por Nicholas Zambetti // http://www.zambetti.com modificación 
// el 9 de Abril de 2012 
// por Tom Igoe 
// modificadon el 22 de Mayo de 2013 Cristian Maglie 

// Este código es de dominio público. 
// http://www.arduino.cc/en/Tutorial/ConsoleAsciiTable

#include <Console.h>
int byte = 33;

void setup() {
  //Initializa Console y espera a que el puerto se abra:
  Bridge.begin();
  Console.begin();

 // Habilitar la línea siguiente para habilitar el almacenamiento en búfer:
 // - Mejor velocidad de transmisión y eficiencia 
 // - Necesita llamar a Console.flush () para asegurarse de que todos
 // los datos transmitidos se envían 
 
//Console.buffer(64); * /

  while (!Console) {
    ; // espera a que el puerto de consola se conecte.
  }

  // imprime el título con salto de línea
  Console.println("Tabla ASCII ~ Mapa de caracteres");
}

// el primer caracter visible  '!' es el numero 33:
int thisByte = 33;
// También se pueden escribir caracteres ASCII entre comillas simples.
// por ejemplo. '!' es lo mismo que 33, por lo que también podría utilizar esto:
//int thisByte = '!';

void loop() {
  // Imprime su valor inalterado, es decir, la versión binaria en bruto 
  // del byte. El monitor de la consola interpreta todos los bytes como
  // ASCII, por lo que 33, el primer número, se mostrará como "!"
  Console.write(thisByte);

  Console.print(", dec: ");
  // Imprime valores en cadenas como un ASCII decimal codificad (base 10). 
  // Decimal es el formato predeterminado para Console.print () 
  // y Console.println (), 
  // Por lo que no se necesita ningún modificador:
  Console.print(thisByte);
  // Pero se puede declarar el modificador de decimales si lo desea.
  // Esto también funciona si se elimina el comentario:
  // Console.print(thisByte, DEC);

  Console.print(", hex: ");
  // imprime valores como cadenas en hexadecimal (base 16):
  Console.print(thisByte, HEX);

  Console.print(", oct: ");
  // imprime valores como cadenas en octal (base 8);
  Console.print(thisByte, OCT);

  Console.print(", bin: ");
  // imprime valores en cadenas en binary (base 2)
  // tambien imprime el final de linea:
  Console.println(thisByte, BIN);

  // si se ha impreso el ultimo caracter '~' o 126, se detiene:
  if (thisByte == 126) {    // tambien se puede usar if (thisByte == '~') {
    // se asegura que se envió el último bit de datos
    Console.flush();

    // Este bucle se ejecuta continuamente y no hace nada
    while (true) {
      continue;
    }
  }
  // ir al soguiente caracter
  thisByte++;
}
 

No hay comentarios:

Publicar un comentario