Kodama-Communication: Aplicativo de Comunicación para usuarios con Limitación Motriz y Linguistica Utilizando Imágenes

Bitacora de mi PFC

Posts Tagged ‘Processing

Invocar PApplet desde una clase Java

leave a comment »

Después de varios días mirando como conseguir ejecutar un PApplet (Applet de Processing) desde código Java normal, parece que hemos encontrado una solución bastante sencilla al problema.

El inconveniente que teníamos era que para ejecutar el Applet debíamos lanzar la aplicación como Java Applet y esto no era lo que buscabamos. Lo que queríamos, era mediante un aplicación Java normal, poder lanzar el código del Applet y que éste se ejecutase realizando su cometido de forma paralela al resto del código de la aplicación.

Después de varias pruebas e intentos fallidos, la solución pasa por ejecutar el Applet dentro de un frame (o JFrame) de esta forma en cualquier momento podemos lanzar el Frame y que este a su vez lance el código del Applet dentro de él.


import java.awt.*;
import processing.core.PApplet;

public class MyClass extends Frame {

 public MyClass() {
 super("Embedded PApplet");

 setLayout(new BorderLayout());
 PApplet embed = new PAppletClass();
 add(embed, BorderLayout.CENTER);
 setSize(400,400);
 setVisible(true);

 // important to call this whenever embedding a PApplet.
 // It ensures that the animation thread is started and
 // that other internal variables are properly set.
 embed.init();
 }

 public static void main(String args[]){
 MyClass m = new MyClass();
   }
 }
 
 ----------------------------------------------------------------------

import processing.core.PApplet;

 public class PAppletClass extends PApplet {

 public void setup() {
 // original setup code here ...
 size(400, 400);

 // prevent thread from starving everything else
 noLoop();
 }

 public void draw() {
 // drawing code goes here
 }

 public void mousePressed() {
 // do something based on mouse movement

 // update the screen (run draw once)
 redraw();
   }
 }

En el siguiente enlace se puede encontrar el código de ejemplo básico donde se puede ver como implementarlo de forma sencilla, así como las explicaciones pertinentes. (en Inglés)

Otro enlace interesante, puede ser este, aunque no es la opción por la que optamos finalmente, por que nos daba problemas con la visualización de la cámara.

Espero que pueda ser de ayuda.

Un saludo,

Daniel.

Anuncios

Written by dafero

23 marzo 2010 at 20:02

Publicado en General

Tagged with , , ,

Sketch hayMovimiento

with 2 comments

He comenzado a implementar el sketch para Processing que indique si un marcador elegido por el usuario se ha movido o no.

Como marker de pruebas uso un conversor PS2-USB debido a su color característico, de esta forma se diferencia bien del resto y funciona aceptablemente bien. Es posible cambiar el color de seguimiento, para ello, hay que hacer clic con el botón derecho del ratón en una zona y el marker se convertirá en ese color.

Si se pulsa  el botón izquierdo se muestran las preferencias de la imagen que está siendo capturada (contraste, brillo…)

El funcionamiento del sketch en sí, es sencillo. Cada vez que se pulsa la barra espaciadora, captura la posición del marcador y cuando se vuelve a pulsar, vuelve a capturar la posición y la compara con que tenía antes.

Si el valor absoluto de la resta es mayor que cierto valor (tolerancia) muestra por pantalla un mensaje del tipo:  “Se ha movido”, en caso contrario muestra “NO”.

Uso las librerías JMyron para que no sea necesario instalar QuickTime. Aunque no habría ningún problema en utilizar el mismo código con las librerías de vídeo de Processing.

De momento este código es de prueba, a la espera de que nos sirva para integrarlo con el resto de la aplicación.

Un saludo.

Written by dafero

18 febrero 2010 at 19:37

Publicado en General

Tagged with , ,

JMyron UnsatisfiedLinkError

leave a comment »

Hoy haciendo alguna prueba desde Processing, al ejecutar los ejemplos de JMyron me ha dado un error del tipo de UnsatisfiedLinkError.

Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError:
  at java.lang.ClassLoader$NativeLibrary.load(Native Method)
  at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
  at java.lang.Runtime.loadLibrary0(Runtime.java:822)
  at java.lang.System.loadLibrary(System.java:992)
  at JMyron.JMyron.<clinit>(JMyron.java:14)

No sabía muy bien por que se producia este error. Probé a vover a bajar las librerias JMyron y a volver añadirlas al proyecto y nada…todo seguía igual. Cada vez que ejecutaba error de compilación.

Buscando un poco por la red, encontré esté post en los foros oficiales de Processing: http://processing.org/discourse/yabb2/YaBB.pl?num=1187304121

En él, se dice algunas veces esto pasa y se soluciona cambiando un archivo de la librería JMyron.

Según comentan en el post este archivo viene precompilado para procesadores Intel para Mac aunque yo lo estoy usando en un Intel  pero con Windows (XP) y sin problemas.

El archivo podeís descargarlo desde: http://www.jibberia.com/projects/libJMyron.jnilib.zip

Una vez descargado y descomprimido, sustituir el archivo que viene dentro por el que está en /Aplicaciones/Processing/libraries/JMyron/library/

Un vez hecho esto, reiniciar processing y debería funcionar todo a la perfección.

Aclaración: La verdad es que no sé muy bien por que se produce este error, ayer funcionaba bien y hoy no. Al cambiar el archivo funcionó todo bien, pero al volver a restablecer el archivo antiguo también funcionó :S.

Raro raro raro… de todas formas si alguien tiene el problema del UnsatisfiedLinkError, siguendo el tutorial puede solucionarse en procesadores Intel.

Written by dafero

17 diciembre 2009 at 13:19

Publicado en General

Tagged with , ,