Skip to content

6. Apéndices

Aquí explicamos cómo instalar las herramientas utilizadas en este documento en equipos con Windows 7 a 10. El lector deberá adaptar estas instrucciones a su propio entorno.

6.1. Instalación del Arduino IDE

El sitio web oficial de Arduino es [http://www.arduino.cc/]. Aquí encontrarás el IDE de desarrollo para Arduinos [http://arduino.cc/en/Main/Software]:

 

El archivo descargado [1] es un archivo ZIP que, una vez extraído, crea la estructura de directorios [2]. Puede iniciar el IDE haciendo doble clic en el archivo ejecutable [3].

6.2. Instalación del controlador Arduino

Para que el IDE se comunique con un Arduino, el Arduino debe ser reconocido por el PC anfitrión. Para ello, siga estos pasos:

  • Conecte el Arduino a un puerto USB del ordenador anfitrión;
  • El sistema intentará encontrar el controlador para el nuevo dispositivo USB. No lo encontrará. A continuación, debe especificar que el controlador se encuentra en el disco en <arduino>/drivers, donde <arduino> es la carpeta de instalación del Arduino IDE.

6.3. Prueba del IDE

Para probar el IDE, siga estos pasos:

  • Inicie el IDE;
  • conecta el Arduino al PC a través de su cable USB. Por ahora, no incluya la tarjeta de red;
  • en [1], selecciona el tipo de placa Arduino conectada al puerto USB;
  • en [2], especifica el puerto USB al que está conectado el Arduino. Para averiguarlo, desenchufa el Arduino y fíjate en los puertos. Vuelva a enchufarlo y compruebe de nuevo los puertos: el que se ha añadido es el puerto del Arduino;

Ejecute algunos de los ejemplos incluidos en el IDE:

 

El ejemplo se carga y se muestra:

 

Los ejemplos incluidos con el IDE son muy didácticos y están bien comentados. El código de Arduino está escrito en C y consta de dos partes diferenciadas:

  • a [configuración] que se ejecuta una vez cuando se inicia la aplicación, ya sea cuando se "carga" desde el host PC al Arduino, o cuando la aplicación ya está presente en el Arduino y se pulsa el botón [Reset]. Aquí es donde se coloca el código de inicialización de la aplicación;
  • a [bucle] que se ejecuta continuamente (bucle infinito). Aquí es donde va el núcleo de la aplicación.

Toma,

  • la función [setup] configura el pin 13 como salida;
  • la función [loop] lo enciende y apaga repetidamente: el LED se enciende y apaga cada segundo.
 

El programa visualizado se carga en el Arduino mediante el botón [1]. Una vez cargado, se ejecuta y LED 13 comienza a parpadear indefinidamente.

6.4. Conexión de red Arduino

El Arduino(s) y el host PC deben estar en la misma red privada:

If there is only one Arduino, it can be connected to the host PC using a simple RJ-45 cable. If there is more than one, the host PC and the Arduinos will be connected to the same network via a mini-hub.

El host PC y los Arduinos se colocarán en el 192.168.2.x red privada.

  • Las direcciones IP de los Arduinos son establecidas por el código fuente. Veremos cómo;
  • La dirección IP del ordenador central puede configurarse de la siguiente manera:
  • Vaya a [Panel de control\NRed e Internet\NCentro de redes y recursos compartidos]:
 
  • En [1], siga el enlace [Conexión de área local]
  • En [2], vea las propiedades de la conexión;
  • En [4], vea las propiedades IPv4 [3] de la conexión;
 
  • En [5], asigne la dirección IP [192.168.2.1] al ordenador central;
  • en [6], asigne la máscara de subred [255.255.255.0] a la red;
  • confirman todo lo expuesto en [7].

6.5. Probar una aplicación de red

Utilizando el IDE, cargue el ejemplo [Ejemplos / Ethernet / WebServer]:


/*
  Web Server
 
 A simple web server that displays the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield connected to pins 10, 11, 12, 13
 * Analog inputs connected to pins A0 through A5 (optional)
 
 created Dec 18, 2009
 by David A. Mellis
 modified April 9, 2012
 by Tom Igoe
 
 */
 
#include <SPI.h>
#include <Ethernet.h>
 
// Enter a MAC address and IP address for your controller below.
// The IP address will depend on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);
 
// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is the default for HTTP):
EthernetServer server(80);
 
void setup() {
 // Open serial communications and wait for the port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
 
 
  // Start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
 
 
void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an HTTP request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've reached the end of the line (received a newline
        // character) and the line is blank, the HTTP request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard HTTP response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser reloads every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");       
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've encountered a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

Esta aplicación crea un servidor web en el puerto 80 (línea 30) en la dirección IP especificada en la línea 25. La dirección MAC de la línea 23 es la dirección MAC especificada en la placa de red del Arduino.

La función [setup] inicializa el servidor web:

  • línea 34: inicializa el puerto serie en el que la aplicación registrará los datos. Monitorizaremos estos registros;
  • línea 41: se inicializa el nodo TCP/IP (IP, puerto);
  • línea 42: el servidor de la línea 30 se lanza en este nodo de la red;
  • líneas 43-44: registra la dirección IP del servidor web;

La función [loop] implementa el servidor web:

  • línea 50: si un cliente se conecta al servidor web, [servidor].disponible devuelve ese cliente; en caso contrario, devuelve null;
  • línea 51: si el cliente no es null;
  • línea 55: mientras el cliente esté conectado;
  • línea 56: [cliente].disponible es verdadero si el cliente ha enviado caracteres. Éstos se almacenan en un búfer. [cliente].disponible devuelve verdadero siempre que este búfer no esté vacío;
  • línea 57: se lee un carácter enviado por el cliente;
  • línea 58: este carácter se envía a la consola de registro;
  • línea 62: En el protocolo HTTP, el cliente y el servidor intercambian líneas de texto.
    • El cliente envía una petición HTTP al servidor web enviando una serie de líneas de texto que terminan con una línea vacía;
    • a continuación, el servidor responde al cliente enviando una respuesta y cerrando la conexión;

Línea 62: El servidor no hace nada con las cabeceras HTTP que recibe del cliente. Simplemente espera la línea vacía: una línea que sólo contiene el carácter \n;

  • Líneas 64-67: El servidor envía al cliente las líneas de texto estándar del protocolo HTTP. Terminan con una línea en blanco (línea 67);
  • A partir de la línea 68, el servidor envía un documento a su cliente. Este documento es generado dinámicamente por el servidor y está en formato HTML (líneas 68-69);
  • línea 71: una línea especial HTML que indica al navegador cliente que actualice la página cada 5 segundos. Así, el navegador solicitará la misma página cada 5 segundos;
  • Líneas 73-80: El servidor envía los valores de las 6 entradas analógicas del Arduino al navegador del cliente;
  • línea 81: el documento HTML está cerrado;
  • línea 82: salimos del mientras que de la línea 55;
  • línea 97: se cierra la conexión con el cliente;
  • línea 98: el evento se registra en la consola de registro;
  • línea 100: volvemos al principio del bucle bucle el servidor reanudará la escucha de clientes. Hemos mencionado que el navegador del cliente solicitará la misma página cada 5 segundos. El servidor estará allí para responder de nuevo.

Modifica el código de la línea 25 para incluir la dirección IP de tu Arduino, por ejemplo:

IPAddress ip(192,168,2,2);

Sube el programa al Arduino. Inicia la consola de registro (Ctrl-M) (M mayúscula):

  • en [1], la consola de registro. El servidor se ha puesto en marcha;
  • en [2], utilizando un navegador, solicitamos la dirección IP del Arduino. Aquí, [192.168.2.2] se traduce por defecto a [http://198.162.2.2:80];
  • en [3], la información enviada por el servidor web. Si se visualiza el código fuente de la página del navegador, se obtiene:
<!DOCTYPE HTML>
<html>
<meta http-equiv="refresh" content="5">
analog input 0 is 1023<br/>
analog input 1 is 1023<br/>
analog input 2 is 727<br/>
analog input 3 is 543<br/>
analog input 4 is 395<br/>
analog input 5 is 310<br/>
</html>

Aquí, podemos ver las líneas de texto enviadas por el servidor. En el lado de Arduino, la consola de registro muestra lo que el cliente le envía:

new client
GET /favicon.ico HTTP/1.1
Host: 192.168.2.2
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

client disconnected
  • líneas 2-9: cabeceras estándar HTTP;
  • línea 10: la línea vacía que las termina.

Estudia detenidamente este ejemplo. Te ayudará a entender la programación de Arduino utilizada en el laboratorio.

6.6. La biblioteca aJson

En la tarea de laboratorio que vas a escribir, los Arduinos intercambian líneas de texto en formato JSON con sus clientes. Por defecto, el Arduino IDE no incluye una librería para manejar JSON. Instalaremos la librería aJson biblioteca disponible en [https://github.com/interactive-matter/aJson].

  • En [1], descargue la versión comprimida del repositorio GitHub;
  • descomprime la carpeta y copia la carpeta [aJson-master] [2] en la carpeta [<arduino>/libraries] [3], donde <arduino> es la carpeta de instalación de Arduino IDE;
  • en [4], cambie el nombre de esta carpeta a [aJson];
  • en [5], su contenido.

Ahora, inicia el Arduino IDE:

 

Comprueba que en los ejemplos, ahora tienes ejemplos para el aJson biblioteca. Ejecute y estudie estos ejemplos.

6.7. La tableta Android

Los ejemplos se han probado con el Samsung Galaxy Tab 2.

Para probar los ejemplos en una tableta, primero debe instalar el controlador de la tableta en su máquina de desarrollo. El controlador para la Samsung Galaxy Tab 2 se puede encontrar en la página URL [http://www.samsung.com/fr/support/usefulsoftware/KIES/]:

 

Para probar los ejemplos, necesitará conectar la tableta a una red (probablemente Wi-Fi) y conocer su dirección IP en esa red. He aquí cómo proceder (Samsung Galaxy Tab 2):

  • Enciende tu tableta;
  • Busca entre las aplicaciones disponibles en la tableta (arriba a la derecha) la que se llama [Configuración] con el icono de un engranaje;
  • en la sección de la izquierda, active Wi-Fi;
  • en la sección de la derecha, seleccione una red Wi-Fi;
  • Una vez conectado a la red, pulse brevemente sobre la red seleccionada. Aparecerá la dirección IP de la tableta. Anótala. La necesitará;

Todavía en la aplicación [Ajustes],

  • seleccione la opción [Opciones de desarrollo] a la izquierda (en la parte inferior de las opciones);
  • Asegúrese de que la opción [USB Debugging] de la derecha está marcada.

Para volver al menú, toca el icono central de la barra de estado en la parte inferior, el que parece una casa. Sigue en la barra de estado inferior,

  • el icono del extremo izquierdo es el botón de retroceso: te lleva a la pantalla anterior;
  • el icono del extremo derecho es el gestor de tareas. Puedes ver y gestionar todas las tareas que se están ejecutando en tu tableta;

Conecta tu tableta a tu PC utilizando el cable USB incluido.

Conecta el dongle Wi-Fi a uno de los puertos PC del USB y, a continuación, conéctate a la misma red Wi-Fi que la tableta. Una vez hecho esto, en una ventana DOS, escribe el comando [ipconfig]:

dos>ipconfig

Windows IP Configuration

Ethernet adapter Local Area Connection:

   Connection-specific DNS suffix . . . :
   Local-link IPv6 address. . . . .: fe80::698b:455a:925:6b13%4
   IPv4 address. . . . . . . . . . . . . .: 192.168.2.1
   Subnet mask. . . . . . . . . : 255.255.255.0
   Default gateway. . . . . . . . . :

Wi-Fi wireless network adapter:

   Connection-specific DNS suffix. . . :
   Local link IPv6 address . . . . .: fe80::39aa:47f6:7537:f8e1%2
   IPv4 address . . . . . . . . . . . . . .: 192.168.1.25
   Subnet mask. . . . . . . . . . . . . .: 255.255.255.0
Default gateway. . . . . . . . . : 192.168.1.1

Tu PC tiene dos tarjetas de red y, por tanto, dos direcciones IP:

  • la de la línea 9, que es la dirección del PC en la red cableada;
  • la de la línea 17, que es la dirección del PC en la red Wi-Fi;

Anote estos dos datos. Los necesitará. Ahora se encuentra en la siguiente configuración:

La tableta tendrá que conectarse a su PC. Normalmente, su PC está protegido por un cortafuegos que impide que cualquier dispositivo externo establezca una conexión con él. Por lo tanto, deberá desactivar el cortafuegos. Hágalo utilizando la opción [Panel de Control\Sistema y Seguridad\Windows Firewall]. A veces también es necesario desactivar el cortafuegos configurado por el software antivirus. Esto depende de su programa antivirus.

Ahora, en tu PC, comprueba la conexión de red con la tableta utilizando el comando [ping 192.168.1.y], donde [192.168.1.y] es la dirección IP de la tableta. Deberías ver algo como esto

dos>ping 192.168.1.26

Sending a 'Ping' request to 192.168.1.26 with 32 bytes of data:
Reply from 192.168.1.26: bytes=32 time=244 ms TTL=64
Reply from 192.168.1.26: bytes=32 time=199 ms TTL=64
Response from 192.168.1.26: bytes=32 time=28 ms TTL=64
Response from 192.168.1.26: bytes=32 time=88 ms TTL=64

Ping statistics for 192.168.1.26:
    Packets: sent = 4, received = 4, lost = 0 (0% loss),
Approximate round-trip times in milliseconds:
Minimum = 28 ms, Maximum = 244 ms, Average = 139 ms

Las líneas 4-7 indican que la dirección IP [192.168.1.y] respondió al comando [ping].

6.8. Instalación de un JDK

El último JDK puede encontrarse en la página URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (junio de 2016). A partir de ahora, nos referiremos a la carpeta de instalación JDK como <jdk-install>.

 

6.9. Instalación del gestor de emuladores Genymotion

La empresa [Genymotion] ofrece un emulador de Android de alto rendimiento. Está disponible en el URL [https://cloud.genymotion.com/page/launchpad/download/] (junio de 2016).

Deberá registrarse para obtener una versión para uso personal. Descargue el producto [Genymotion] con la máquina virtual VirtualBox:

Image

A partir de ahora nos referiremos a la carpeta de instalación de [Genymotion] como <genymotion-install>. Inicia [Genymotion]. A continuación, descarga una imagen para una tableta:

 
  • en [1], añada el terminal virtual descrito en [2];
 
  • en [3], configure el terminal;
  • en [4-5], personaliza el terminal para tu entorno;
  • en [6], inicie el terminal virtual;

If all goes well, you will see the Android emulator window:

Image

A veces, el emulador de Android no se inicia. En una máquina Windows, puede comprobar los dos puntos siguientes:

  • Compruebe que la máquina virtual [Hyper-V] no está instalada. Si es necesario, desinstálela [1-2];
  • a continuación, en el asistente de configuración [Centro de redes y recursos compartidos] [1]:
 
  • en [3], seleccione el adaptador o adaptadores de red asociados a la máquina virtual VirtualBox;
 
  • compruebe que en [6] está marcado el controlador para VirtualBox. Repita este paso para todos los adaptadores de red asociados a la máquina virtual VirtualBox;

6.10. Instalación de Maven

Maven es una herramienta para gestionar las dependencias en un proyecto Java y más. Está disponible en el URL [http://maven.apache.org/download.cgi].

 

Descarga y descomprime el archivo. Nos referiremos a la carpeta de instalación de Maven como <maven-install>.

  
  • En [1], el archivo [conf/settings.xml] configura Maven;

Contiene las siguientes líneas:


  <!-- localRepository
   | The path to the local repository Maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
-->

El valor por defecto en la línea 4, si -como en mi caso- su ruta {user.home} contiene un espacio (por ejemplo, [C:\sers\Serge Tahé]), puede causar problemas con cierto software. En ese caso, usted debe escribir algo como:


  <!-- localRepository
   | The path to the local repository Maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
<localRepository>D:\Programs\devjava\maven\.m2\repository</localRepository>

y en la línea 7, evitaremos una ruta que contenga espacios.

6.11. Instalación de Android Studio IDE

Android Studio Community Edition IDE está disponible en [https://developer.android.com/studio/index.html] (junio de 2016):

 

Instale el IDE y ejecútelo. Siga los pasos [1-8] para instalar los componentes del Gestor SDK utilizados por los ejemplos que siguen. Si decide instalar componentes más nuevos, es probable que reciba advertencias de Android Studio indicando que la configuración del ejemplo hace referencia a componentes SDK que no existen en su entorno. Puede entonces seguir las sugerencias proporcionadas por el IDE.

 
 
  • En [9], consulte los detalles del paquete:
  • En [11], los ejemplos utilizaban SDK Build-Tools 23.0.3;
  • en [9-12], especifica la carpeta donde instalaste el gestor de emuladores [Genymotion];
  • En [13-18], configure el tipo de proyecto por defecto;
  • en [17], el valor por defecto suele ser correcto;
  • en [18], asegúrate de que tienes JDK 1.8;

A continuación, en [19-26], desactive la corrección ortográfica, que está configurada por defecto en inglés;

 
  • a continuación, en [27-28], elija el tipo de atajos de teclado que desee. Puedes mantener la configuración por defecto de IntelliJ o elegir los de otro IDE al que estés más acostumbrado;
 
  • A continuación, en [29-30], habilite los números de línea en el código;
 
  • a continuación, en [31-34], especifique cómo desea manejar el primer proyecto al lanzar el IDE y los proyectos posteriores;
 

Con Android 2.1 (mayo de 2016), la función [Instant Run] a veces causa problemas. En este documento, la hemos desactivado:

  • en [3-4], todo ha sido desactivado;

6.12. Utilizando los ejemplos

Los proyectos de Android Studio para los ejemplos están disponibles HERE|. Descárguelos.

  

Los ejemplos se construyeron utilizando los componentes definidos anteriormente:

  • JDK 1.8;
  • Android SDK Plataforma 23 para tiempo de ejecución;

Las siguientes herramientas SDK:

 

If your environment does not match the one described above, you will need to change the project configuration. This can be quite tedious. Initially, it is probably easier to set up a working environment similar to the one described above.

Inicie Android Studio y, a continuación, abra el proyecto [ejemplo-07], por ejemplo:

 
  • En [1-3], abra el proyecto [Ejemplo-07];
  • En [4], compruebe el archivo [local.properties];
  • en la línea 11 anterior, introduzca la ubicación del gestor de Android SDK <sdk-manager-install>. Puede encontrarlo siguiendo los pasos [1-4]:
 

Todos los ejemplos en este documento son proyectos Gradle configurados por un archivo [build.gradle] [1-2]:

 

El fichero [build.gradle] del ejemplo 07 es el siguiente:


buildscript {
  repositories {
    mavenCentral()
    mavenLocal()
  }
  dependencies {
    // replace with the current version of the Android plugin
    classpath 'com.android.tools.build:gradle:2.1.0'
    // Since Android's Gradle plugin 0.11, you must use android-apt >= 1.3
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  }
}
 
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
def AAVersion = '4.0.0'
 
dependencies {
  apt "org.androidannotations:androidannotations:$AAVersion"
  compile "org.androidannotations:androidannotations-api:$AAVersion"
  compile 'com.android.support:appcompat-v7:23.4.0'
  compile 'com.android.support:design:23.4.0'
  compile fileTree(dir: 'libs', include: ['*.jar'])
}
 
repositories {
  jcenter()
}
 
apt {
  arguments {
    androidManifestFile variant.outputs[0].processResources.manifestFile
    resourcePackageName android.defaultConfig.applicationId
  }
}
 
android {
  compileSdkVersion 23
  buildToolsVersion "23.0.3"
  defaultConfig {
    applicationId "android.examples"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
  }
 
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
 
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
}

Dependiendo del entorno Android (SDK y herramientas) que haya configurado, puede que necesite cambiar las versiones en las líneas 8, 21, 22, 38 y 39. Android Studio ayuda haciendo sugerencias. Lo más sencillo es seguir estas sugerencias.

Se puede acceder a los elementos del fichero [build.gradle] de otra manera:

  • las distintas pestañas de [3] reflejan los distintos valores del fichero [build.gradle]. Por lo tanto, puede configurarlo de esta manera, lo que le permite evitar problemas de sintaxis en el archivo [build.gradle];

Otro punto a comprobar es el JDK utilizado por el IDE [5]:

 

En [6], comprueba el JDK.

Todos los ejemplos son proyectos Gradle con dependencias que necesitan ser descargadas. Para ello, proceda de la siguiente manera:

  • En [5], compila el proyecto;

Una vez que el proyecto esté libre de errores, debe crear una configuración de ejecución [1-8]:

  • En [8], puede especificar que desea utilizar siempre el mismo terminal para la ejecución. Generalmente, esta opción está marcada para evitar tener que especificar el terminal a utilizar para cada nueva ejecución. Aquí, lo dejamos sin marcar porque vamos a probar diferentes dispositivos Android;
  • Una vez creada la configuración de ejecución, ejecute Android Emulator Manager [1-3];
  • if the Android emulator does not launch, check the points mentioned in section 6.11;

Para lanzar la aplicación en el emulador, proceda del siguiente modo [1-4]:

  • en [2], deberías ver el emulador que lanzaste previamente;
  • en [5], la vista que muestra el emulador;

Ahora conecta una tableta Android a un puerto USB del PC y ejecuta la aplicación en ella:

 
  • En [6], selecciona la tableta Android y prueba la aplicación.

En [7], tenemos terminales virtuales predefinidos. Aprenderemos a añadirlos y eliminarlos.

  

En la captura de pantalla anterior, todos los dispositivos de la lista están ejecutando API 22. Vamos a eliminarlos todos porque queremos utilizar API 23. Seguimos el procedimiento [2-3] para eliminar los dispositivos.

Image

 
  • En [4-5], añadimos una pastilla;
 
  • en [6], seleccionamos un API. Arriba, seleccionamos API 23 para Windows de 64 bits;
 
  • En [7] se muestra el resumen de la configuración;
  • En [8] se puede realizar una configuración más avanzada del terminal virtual;

Una vez finalizado el asistente, el terminal creado aparece en [9].

Una vez hecho esto, si vuelve a ejecutar [Ejemplo-07], verá ahora la siguiente ventana:

 
  • en [1], aparece el nuevo terminal virtual;
  • en [2], puede crear otras nuevas;

Experimenta para determinar el terminal virtual más adecuado para tu sistema. En este documento, los ejemplos se han probado principalmente con el emulador Genymotion.

Independientemente del terminal virtual elegido, los registros se muestran en la ventana llamada [Logcat] [1-2]:

Image

Compruebe estos registros con regularidad. Aquí es donde se informará de las excepciones que causaron el bloqueo de su programa.

También puedes depurar tu programa utilizando herramientas de depuración estándar:

  • en [2], establezca un punto de interrupción haciendo clic una vez en la columna situada a la izquierda de la línea objetivo. Al hacer clic de nuevo se elimina el punto de interrupción;
 
  • en [3], en el punto de interrupción, pulse:
  • [F6] para ejecutar la línea sin introducir métodos si la línea contiene llamadas a métodos,
  • [F5], para ejecutar la línea introduciendo los métodos si la línea contiene llamadas a métodos,
  • [F8] para continuar con el siguiente punto de interrupción;
  • [Ctrl-F2] para detener la depuración;

6.13. Instalación del plugin de Chrome [Advanced Rest Client]

En este documento, utilizamos el Cromo navegador (http://www.google.fr/intl/fr/chrome/browser/). Añadiremos el [ Advanced Rest Client]. He aquí cómo hacerlo:

 
  • la aplicación estará disponible para su descarga:
  • para conseguirlo, tendrás que crear una cuenta de Google. A continuación, la [Google Web Store] te pedirá confirmación [1]:
  • en [2], la extensión añadida está disponible en la opción [Aplicaciones] [3]. Esta opción aparece en cada nueva pestaña que crees (CTRL-T) en el navegador.

6.14. Gestión de JSON j s en Java

De forma transparente para el desarrollador, el framework [Spring MVC] utiliza la librería [Jackson] JSON. Para ilustrar lo que es JSON (JavaScript Object Notation), presentamos aquí un programa que serializa objetos en JSON y hace lo contrario deserializando las cadenas JSON generadas para recrear los objetos originales.

La biblioteca 'Jackson' permite construir:

  • la cadena JSON de un objeto: new ObjectMapper().writeValueAsString(objeto);
  • un objeto a partir de una cadena JSON: new ObjectMapper().readValue(jsonString, Object.class).

Ambos métodos pueden lanzar un IOException. He aquí un ejemplo.

  

El proyecto anterior es un proyecto Maven con el siguiente archivo [pom.xml];


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>istia.st.pam</groupId>
  <artifactId>json</artifactId>
  <version>1.0-SNAPSHOT</version>
 
  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.3.3</version>
    </dependency>
  </dependencies>
</project>
  • líneas 12-16: la dependencia que incluye la biblioteca 'Jackson';

La clase [Persona] es la siguiente:


package istia.st.json;
 
public class Person {
    // data
    private String lastName;
    private String firstName;
    private int age;
 
    // constructors
    public Person() {
 
    }
 
    public Person(String lastName, String firstName, int age) {
        this.lastName = lastName;
        this.firstName = firstName;
        this.age = age;
    }
 
    // signature
    public String toString() {
        return String.format("Person[%s, %s, %d]", lastName, firstName, age);
    }
 
    // getters and setters
...
}

La clase [Main] es la siguiente:


package istia.st.json;
 
import com.fasterxml.jackson.databind.ObjectMapper;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
public class Main {
  // the serialization/deserialization tool
  static ObjectMapper mapper = new ObjectMapper();
 
  public static void main(String[] args) throws IOException {
    // creating a person
    Person paul = new Person("Denis", "Paul", 40);
    // Display JSON
    String json = mapper.writeValueAsString(paul);
    System.out.println("JSON=" + json);
    // Instantiate Person from JSON
    Person p = mapper.readValue(json, Person.class);
    // Display Person
    System.out.println("Person=" + p);
    // an array
    Person virginie = new Person("Radot", "Virginie", 20);
    Person[] people = new Person[]{paul, virginie};
    // display JSON
    json = mapper.writeValueAsString(people);
    System.out.println("JSON people=" + json);
    // dictionary
    Map<String, Person> hpeople = new HashMap<String, Person>();
    hpeople.put("1", paul);
    hpeople.put("2", virginie);
    // Display JSON
    json = mapper.writeValueAsString(hpeople);
    System.out.println("JSON hpeople=" + json);
  }
}

La ejecución de esta clase produce la siguiente salida en pantalla:

1
2
3
4
Json={"lastName":"Denis","firstName":"Paul","age":40}
Person = Person[Denis, Paul, 40]
Json people=[{"lastName":"Denis","firstName":"Paul","age":40},{"lastName":"Radot","firstName":"Virginie","age":20}]
Json people={"2":{"lastName":"Radot","firstName":"Virginie","age":20},"1":{"lastName":"Denis","firstName":"Paul","age":40}}

Principales conclusiones del ejemplo:

  • el objeto [ObjectMapper] necesario para las transformaciones JSON/Objeto: línea 11;
  • la transformación [Persona] --> JSON: línea 17;
  • la transformación JSON --> [Persona]: línea 20;
  • el [IOException] lanzado por ambos métodos: línea 13.

6.15. Instalación [ WampServer]

[WampServer] es una suite de software para desarrollar en PHP / MySQL / Apache en una máquina Windows. Lo utilizaremos únicamente para el MySQL DBMS.

  • En el sitio web [WampServer] [1], elija la versión adecuada [2],
  • El ejecutable descargado es un instalador. Durante la instalación se le pedirá diversa información. Estos no pertenecen a MySQL, por lo que puede ignorarlos. La ventana [3] aparece al final de la instalación. Inicie [WampServer],
 
  • en [4], el icono [WampServer] aparece en la barra de tareas, en la parte inferior derecha de la pantalla [4],
  • al hacer clic sobre él, aparece el menú [5]. Permite gestionar el servidor Apache y el MySQL DBMS. Para gestionar este último, utilice la opción [PhpMyAdmin],
  • que abre la ventana que se muestra a continuación,

Image

Proporcionaremos algunos detalles sobre el uso de [PhpMyAdmin]. Demostramos cómo utilizarlo en el documento.