Matlab - Pulsar una tecla automáticamente

 
Vista:

Pulsar una tecla automáticamente

Publicado por Marina (19 intervenciones) el 21/02/2015 09:59:16
Hola a todos,
Antes de nada muchas gracias por vuestra atención. He realizado una GUI en Matlab en la que al principio se muestran dos imágenes a tiempo real de dos cámaras distintas. Tengo un problema con el driver de la capturadora de imágenes y siempre, nada más salir las imágenes, me aparecen dos mensajes en dos ventanas diferentes, correspondientes a cada una de las imágenes que salen por pantalla.
Mi pregunta es: Hay alguna forma de meter directamente en el programa una función que haga como si el usuario estuviera pulsando la tecla ENTER? (para que las dos ventanas desaparezcan simplemente es necesario pulsar esa tecla)
Muchas gracias y un saludo,
Marina
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Pulsar una tecla automáticamente

Publicado por Jorge De Los Santos (213 intervenciones) el 22/02/2015 07:38:48
Hola Marina.

Existe una forma de "emular" una entrada por teclado del usuario, para ello se tiene que hacer uso de las bondades de Java y su integración en MATLAB.

Java dispone de la clase Robot que puede hacer algo parecido a lo que tu mencionas, te dejo un código y enseguida te explico un poco:

1
2
3
4
5
import java.awt.Robot;
import java.awt.event.KeyEvent;
 
rb = Robot();
rb.keyPress(KeyEvent.VK_ENTER);



Las primeras dos líneas importan las clases Java a utilizar (Robot y KeyEvent). Luego, se crea un objeto de la clase Robot, al cual se le nombra como rb, normalmente en un fichero nativo de Java tendrías que instanciar usando por ejemplo:

1
Robot rb = new Robot()


Pero en un script MATLAB basta con hacerlo como se muestra en el primer código. Una vez se crea el objeto rb procedes a utilizar el método keyPress del mismo, el cual como argumento necesita una constante de la clase keyEvent, que prácticamente define una "tecla". En el ejemplo, al correr el script "emula" el mismo comportamiento que si presionases la tecla ENTER directamente de tu teclado.

Si necesitas más información acerca de las clases Java en cuestión, puedes consultar la documentación en los siguientes enlaces:

http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html
http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html


Finalmente, como observación, tienes que tomar en cuenta el hecho de que en MATLAB la ejecución de un script es secuencial, y si el hecho de capturar el vídeo detiene la ejecución del programa esperando por la respuesta del usuario, entonces sería más complicado lo que planteas.



Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar