Diferencia entre revisiones de «Processing»

De Wikitronica
Saltar a: navegación, buscar
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 [[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]].
  
 +
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:
  
 +
<code>
 +
import processing.serial.*;
 +
</code>
  
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).
  
  
== Alcances ==
+
<code>
 +
Serial puerto;
 +
</code>
  
Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.
 
  
 +
Después inicializarlo con los siguientes parámetros.
  
 +
<code>
 +
puerto = new Serial(this, Serial.list()[0], 115200);
 +
</code>
  
== Véase también ==
+
El constructor de la clase Serial tiene varias maneras de ser inicializado:
  
* [[Lenguaje de programación Java]]
 
  
 +
Serial(Padre)
 +
Serial(Padre, Velocidad)
 +
Serial(Padre, Puerto)
 +
Serial(Padre, Puerto, Velocidad)
 +
Serial(Padre, Puerto, Velocidad, Paridad, Palabra, Parada)
  
  
== Enlaces externos ==
 
  
* [http://processing.org Sitio web oficial de Processing] (en inglés)
+
'''Los parámetros son:'''
  
* [http://go.yuri.at/p5/tutorial Tutorial de Processing para mentes Macromedia] (en castellano)
+
* Padre: Se suele usar this siempre.
  
* [http://www.arduteka.com/2012/12/introduccion-a-processing/ Foro de Processing] (en castellano)
+
* 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*
  
* [http://www.tucamon.es/contenido/processing-y-arduino Taller de Processing] (en castellano)
+
* 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.
  
[[Categoría:Lenguajes de programación]]
+
Para el caso específico de querer utilizar el módulo del [[MC9S08QE128]], estos parámetros deben corresponder con los configurados.
  
[[Categoría:Lenguajes implementados en Java]]
 
  
[[Categoría:Software de animación libre]]
 
  
[[Categoría:Entornos de desarrollo integrados|Java]]
 
  
[[Categoría:Herramientas de desarrollo para Java]]
+
Si no se sabe a priori qué puertos serie tenemos en nuestro ordenador, podemos imprimir un listado de los disponibles.
  
 +
<code>
 +
println(Serial.list());
 +
</code>
 +
 +
 +
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.
 +
 +
 +
 +
<code>
 +
puerto.write(11);
 +
puerto.write("hola");
 +
puerto.write('e');
 +
</code>
 +
 +
 +
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:'''
 +
 +
 +
 +
<code>
 +
while (puerto.available() > 0)
 +
 +
{
 +
 +
dato = puerto.read();
 +
 +
}
 +
 +
</code>
 +
 +
 +
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 cuantos bytes queremos leer cada vez, esperar a que se active el evento serialEvent, y dentro de este leer los bytes.'''
 +
 +
 +
 +
En Setup:
 +
 +
<code>
 +
puerto.buffer(2);
 +
</code>
 +
 +
En el cuerpo principal del sketch:
 +
 +
<code>
 +
void serialEvent(Serial puerto_serie)
 +
{
 +
 +
valor1 = puerto_serie.read();
 +
 +
valor2 = puerto_serie.read();
 +
 +
}
 +
</code>
 +
 +
 +
 +
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.
 +
 +
 +
<code>
 +
if(puerto_serie == puerto)
 +
</code>
 +
 +
 +
 +
Si se desea escribir los datos que se reciben a un fichero se debe crear una variable global del tipo PrintWriter.
 +
 +
 +
<code>
 +
PrintWriter archivo;
 +
</code>
 +
 +
 +
Luego en el método Setup se debe crear el objeto PrintWriter indicando en qué archivo guardar los datos.
 +
 +
 +
<code>
 +
archivo = createWriter("positions.txt");
 +
</code>
 +
 +
 +
Finalmente, ya sea dentro del método Draw o del evento serialEvent (recomendado) se escriben los datos al archivo:
 +
 +
<code>
 +
fichero.print(valor1);
 +
fichero.print(',');
 +
fichero.println(valor2);
 +
fichero.flush();
 +
</code>
 +
 +
 +
== 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 del 00:44 20 mar 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 cuantos 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:

fichero.print(valor1); fichero.print(','); fichero.println(valor2); fichero.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