Diferencia entre revisiones de «Processing»

De Wikitronica
Saltar a: navegación, buscar
 
(No se muestran 3 ediciones intermedias de otro usuario)
Línea 1: Línea 1:
 
+
[[Categoría: EC2721 - Arquitectura del Computador 1]]
 +
[[Categoría: EC3731 - Arquitectura del Computador 2]]
 +
[[Categoría:Processing]]
  
 
<div style="top:+0.3em; text-align: center;font-size:100%; border:1px solid #C7D0F8; background:#F2F5FD;width:80%">
 
<div style="top:+0.3em; text-align: center;font-size:100%; border:1px solid #C7D0F8; background:#F2F5FD;width:80%">
 
  '''Este artículo está incompleto. Necesita trabajo adicional. Revisar la discusión.'''</div>
 
  '''Este artículo está incompleto. Necesita trabajo adicional. Revisar la discusión.'''</div>
  
 +
'''Processing''' es un [[lenguaje de programación]] y [[entorno de desarrollo integrado]] [[Software de código abierto|de código abierto]] basado en [[Lenguaje de programación Java|Java]], de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos [[multimedia]] e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el [http://acg.media.mit.edu/ Aesthetics and Computation Group] del MIT Media Lab dirigido por John Maeda.
  
 +
Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al [[software propietario]]. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets).
  
'''Processing''' es un [[lenguaje de programación]] y [[entorno de desarrollo integrado]] [[Software de código abierto|de código abierto]] basado en [[Lenguaje de programación Java|Java]], de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos [[multimedia]] e [[interactivo]]s de diseño digital. Fue iniciado por [[Ben Fry]] y [[Casey Reas]] a partir de reflexiones en el [http://acg.media.mit.edu/ Aesthetics and Computation Group] del MIT Media Lab dirigido por [[John Maeda]].
+
Se distribuye bajo la licencia GNU GPL.
  
 +
== Alcances ==
  
 +
Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.
  
Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al [[software propietario]]. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets).
+
== Comunicaciones por Puerto Serial ==
  
 +
Como Processing puede usar librerías al estilo de java, hay una que se necesitará para la programación del puerto y permitir abrir un gran espectro de posibilidades (como comunicación con micro controladores), esta es processing.serial y se puede crear un sketch de la siguiente manera:
  
 +
<syntaxhighlight lang="java">
 +
import processing.serial.*;
 +
</syntaxhighlight>
  
Se distribuye bajo la licencia GNU GPL.
+
A continuación se debe crear un objeto del tipo Serial (o varias si vamos a tratar con más de un puerto serie).
  
 +
<syntaxhighlight lang="java">
 +
Serial puerto;
 +
</syntaxhighlight>
  
 +
Después inicializarlo con los siguientes parámetros.
  
== Alcances ==
+
<syntaxhighlight lang="java">
 +
puerto = new Serial(this, Serial.list()[0], 115200);
 +
</syntaxhighlight>
  
Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.
+
El constructor de la clase Serial tiene varias maneras de ser inicializado:
  
 +
Serial(Padre)
 +
Serial(Padre, Velocidad)
 +
Serial(Padre, Puerto)
 +
Serial(Padre, Puerto, Velocidad)
 +
Serial(Padre, Puerto, Velocidad, Paridad, Palabra, Parada)
  
 +
'''Los parámetros son:'''
  
== Véase también ==
+
* Padre: Se suele usar "this" siempre.
  
* [[Lenguaje de programación Java]]
+
* Velocidad: La velocidad en b.p.s. a la que se quiere enviar y recibir datos: 9600 es la que toma por defecto si no se le indica otra cosa.
  
 +
* Puerto: Nombre del puerto de comunicaciones. “COM1″ es el que toma por defecto, pero puede ser otro de Windows. En Linux o Mac suele ser /dev/tty*
  
 +
* Paridad: ‘N’ para ninguna, ‘E’ para paridad par, ‘O’ para paridad impar. ‘N’ es la que se toma por defecto.
  
== Enlaces externos ==
+
* Palabra: Número de bits que conforman una unidad de datos. 8 es el que se toma por defecto.
  
* [http://processing.org Sitio web oficial de Processing] (en inglés)
+
* Parada: Número de bits de parada (stop). Puede ser 1.0, 1.5, or 2.0, siempre en formato float. 1.0 es el que se toma por defecto.
  
* [http://go.yuri.at/p5/tutorial Tutorial de Processing para mentes Macromedia] (en castellano)
+
Para el caso específico de querer utilizar el módulo del [[MC9S08QE128]], estos parámetros deben corresponder con los configurados.
  
* [http://www.arduteka.com/2012/12/introduccion-a-processing/ Foro de Processing] (en castellano)
+
Si no se sabe a priori qué puertos serie tenemos en nuestro ordenador, podemos imprimir un listado de los disponibles.
  
* [http://www.tucamon.es/contenido/processing-y-arduino Taller de Processing] (en castellano)
+
<syntaxhighlight lang="java">
 +
println(Serial.list());
 +
</syntaxhighlight>
  
 +
Como se trata simplemente de un "''array''" de cadenas, podemos acceder al valor de cualquier de ellas y pasárselo como argumento al constructor de Serial, tal y como se ha expuesto lineas atrás en la creación del objeto.
  
 +
A partir de aquí, y si el puerto se ha podido abrir sin problemas, podemos enviar y recibir los datos.
  
[[Categoría:Lenguajes de programación]]
+
Para enviar datos desde Processing al puerto serie hay que usar el método "write" del objeto que hayamos creado.
  
[[Categoría:Lenguajes implementados en Java]]
+
<syntaxhighlight lang="java">
 +
puerto.write(11);
 +
puerto.write("hola");
 +
puerto.write('e');
 +
</syntaxhighlight>
  
[[Categoría:Software de animación libre]]
+
Se puede enviar tipos "byte", "char", "int", "array" de "bytes" o "cadenas".
  
[[Categoría:Entornos de desarrollo integrados|Java]]
+
Para recibir los datos se tienen dos posibilidades.
  
[[Categoría:Herramientas de desarrollo para Java]]
+
'''1) Comprobar dentro del método [[Draw]] si hay datos disponibles para su lectura, leerlos y procesarlos:'''
  
 +
<syntaxhighlight lang="java">
 +
while (puerto.available() > 0)
 +
 +
{
 +
 +
dato = puerto.read();
 +
 +
}
 +
 +
</syntaxhighlight>
 +
 +
El método "available" devuelve el número de bytes que hay pendientes por leer en el "buffer". El método "read" nos devuelve un valor de "0" a "255" del primer byte de la cola FIFO del buffer, o "-1" si no hay dato disponible. Además de "read" hay otros métodos para recuperar los datos: readChar, readBytes, readBytesUntil, readString, readStringUntil.
 +
 +
'''2) Definir en el método "Setup" cuántos bytes queremos leer cada vez, esperar a que se active el evento "serialEvent", y dentro de este leer los bytes.'''
 +
 +
En Setup:
 +
 +
<syntaxhighlight lang="java">
 +
puerto.buffer(2);
 +
</syntaxhighlight>
 +
 +
En el cuerpo principal del ''sketch'':
 +
 +
<syntaxhighlight lang="java">
 +
void serialEvent(Serial puerto_serie)
 +
{
 +
 +
valor1 = puerto_serie.read();
 +
 +
valor2 = puerto_serie.read();
 +
 +
}
 +
</syntaxhighlight>
 +
 +
Esta técnica es mucho más optima que la primera. El rendimiento del método "Draw" para leer los datos del puerto serie y dibujarlos será menor que si el método "Draw" sólo se centra en leer las variables y dibujar en consecuencia, dejando al evento "serialEvent" que se encargue de poblar las variables con los datos recibidos por el puerto serie. Para que funcione esta técnica, se debe informar al objeto Serial de cuantos bytes se deben leer antes de que se dispare el eventoserialEvent, esto se hace usando el método "buffer" indicando los bytes a leer. Dentro del "eventoserialEvent" se deben leer tantos bytes como se especificaron con el método buffer. Si se está trabajando con más de un puerto serie se puede usar el único parámetro del evento "serialEvent" para distinguir desde qué puerto serie se han recibido los bytes.
 +
 +
<syntaxhighlight lang="java">
 +
if(puerto_serie == puerto)
 +
</syntaxhighlight>
 +
 +
Si se desea escribir los datos que se reciben a un fichero se debe crear una variable global del tipo "PrintWriter".
 +
 +
<syntaxhighlight lang="java">
 +
PrintWriter archivo;
 +
</syntaxhighlight>
 +
 +
Luego en el método "Setup" se debe crear el objeto "PrintWriter" indicando en qué archivo guardar los datos.
 +
 +
<syntaxhighlight lang="java">
 +
archivo = createWriter("positions.txt");
 +
</syntaxhighlight>
 +
 +
Finalmente, ya sea dentro del método "Draw" o del evento "serialEvent" (recomendado) se escriben los datos al archivo:
 +
 +
<syntaxhighlight lang="java">
 +
archivo.print(valor1);
 +
archivo.print(',');
 +
archivo.println(valor2);
 +
archivo.flush();
 +
</syntaxhighlight>
 +
 +
== Bibliografía ==
 +
 +
* Oscar: «Processing y el puerto serie» en ''WordPress''[http://webdelcire.com/wordpress/archives/149]
 +
 +
* Colaboradores de Wikipedia. Processing [en línea]. Wikipedia, La enciclopedia libre, 2013 [fecha de consulta: 20 de marzo del 2013]. Disponible en < [http://es.wikipedia.org/w/index.php?title=Processing&oldid=65117688]>.
 +
 +
== Enlaces externos ==
 +
 +
* [http://processing.org Sitio web oficial de Processing] (en inglés)
 +
 +
* [http://go.yuri.at/p5/tutorial Tutorial de Processing para mentes Macromedia] (en castellano)
 +
 +
* [http://www.arduteka.com/2012/12/introduccion-a-processing/ Foro de Processing] (en castellano)
 +
 +
* [http://www.tucamon.es/contenido/processing-y-arduino Taller de Processing] (en castellano)
 +
 +
[[Categoría:Lenguajes de programación]]
 
[[Categoría:Software libre]]
 
[[Categoría:Software libre]]

Revisión actual del 15:01 18 nov 2013


Este artículo está incompleto. Necesita trabajo adicional. Revisar la discusión.

Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el Aesthetics and Computation Group del MIT Media Lab dirigido por John Maeda.

Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al software propietario. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets).

Se distribuye bajo la licencia GNU GPL.

Alcances

Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.

Comunicaciones por Puerto Serial

Como Processing puede usar librerías al estilo de java, hay una que se necesitará para la programación del puerto y permitir abrir un gran espectro de posibilidades (como comunicación con micro controladores), esta es processing.serial y se puede crear un sketch de la siguiente manera:

import processing.serial.*;

A continuación se debe crear un objeto del tipo Serial (o varias si vamos a tratar con más de un puerto serie).

Serial puerto;

Después inicializarlo con los siguientes parámetros.

puerto = new Serial(this, Serial.list()[0], 115200);

El constructor de la clase Serial tiene varias maneras de ser inicializado:

Serial(Padre) Serial(Padre, Velocidad) Serial(Padre, Puerto) Serial(Padre, Puerto, Velocidad) Serial(Padre, Puerto, Velocidad, Paridad, Palabra, Parada)

Los parámetros son:

  • Padre: Se suele usar "this" siempre.
  • Velocidad: La velocidad en b.p.s. a la que se quiere enviar y recibir datos: 9600 es la que toma por defecto si no se le indica otra cosa.
  • Puerto: Nombre del puerto de comunicaciones. “COM1″ es el que toma por defecto, pero puede ser otro de Windows. En Linux o Mac suele ser /dev/tty*
  • Paridad: ‘N’ para ninguna, ‘E’ para paridad par, ‘O’ para paridad impar. ‘N’ es la que se toma por defecto.
  • Palabra: Número de bits que conforman una unidad de datos. 8 es el que se toma por defecto.
  • Parada: Número de bits de parada (stop). Puede ser 1.0, 1.5, or 2.0, siempre en formato float. 1.0 es el que se toma por defecto.

Para el caso específico de querer utilizar el módulo del MC9S08QE128, estos parámetros deben corresponder con los configurados.

Si no se sabe a priori qué puertos serie tenemos en nuestro ordenador, podemos imprimir un listado de los disponibles.

println(Serial.list());

Como se trata simplemente de un "array" de cadenas, podemos acceder al valor de cualquier de ellas y pasárselo como argumento al constructor de Serial, tal y como se ha expuesto lineas atrás en la creación del objeto.

A partir de aquí, y si el puerto se ha podido abrir sin problemas, podemos enviar y recibir los datos.

Para enviar datos desde Processing al puerto serie hay que usar el método "write" del objeto que hayamos creado.

puerto.write(11);
puerto.write("hola");
puerto.write('e');

Se puede enviar tipos "byte", "char", "int", "array" de "bytes" o "cadenas".

Para recibir los datos se tienen dos posibilidades.

1) Comprobar dentro del método Draw si hay datos disponibles para su lectura, leerlos y procesarlos:

while (puerto.available() > 0)

{

dato = puerto.read();

}

El método "available" devuelve el número de bytes que hay pendientes por leer en el "buffer". El método "read" nos devuelve un valor de "0" a "255" del primer byte de la cola FIFO del buffer, o "-1" si no hay dato disponible. Además de "read" hay otros métodos para recuperar los datos: readChar, readBytes, readBytesUntil, readString, readStringUntil.

2) Definir en el método "Setup" cuántos bytes queremos leer cada vez, esperar a que se active el evento "serialEvent", y dentro de este leer los bytes.

En Setup:

puerto.buffer(2);

En el cuerpo principal del sketch:

void serialEvent(Serial puerto_serie)
{

valor1 = puerto_serie.read();

valor2 = puerto_serie.read();

}

Esta técnica es mucho más optima que la primera. El rendimiento del método "Draw" para leer los datos del puerto serie y dibujarlos será menor que si el método "Draw" sólo se centra en leer las variables y dibujar en consecuencia, dejando al evento "serialEvent" que se encargue de poblar las variables con los datos recibidos por el puerto serie. Para que funcione esta técnica, se debe informar al objeto Serial de cuantos bytes se deben leer antes de que se dispare el eventoserialEvent, esto se hace usando el método "buffer" indicando los bytes a leer. Dentro del "eventoserialEvent" se deben leer tantos bytes como se especificaron con el método buffer. Si se está trabajando con más de un puerto serie se puede usar el único parámetro del evento "serialEvent" para distinguir desde qué puerto serie se han recibido los bytes.

if(puerto_serie == puerto)

Si se desea escribir los datos que se reciben a un fichero se debe crear una variable global del tipo "PrintWriter".

PrintWriter archivo;

Luego en el método "Setup" se debe crear el objeto "PrintWriter" indicando en qué archivo guardar los datos.

archivo = createWriter("positions.txt");

Finalmente, ya sea dentro del método "Draw" o del evento "serialEvent" (recomendado) se escriben los datos al archivo:

archivo.print(valor1);
archivo.print(',');
archivo.println(valor2);
archivo.flush();

Bibliografía

  • Oscar: «Processing y el puerto serie» en WordPress[1]
  • Colaboradores de Wikipedia. Processing [en línea]. Wikipedia, La enciclopedia libre, 2013 [fecha de consulta: 20 de marzo del 2013]. Disponible en < [2]>.

Enlaces externos

Contributors

Ddtdanilo, JCaceres, Racuna