matheynen — 2015-02-16 16:52:38

Salut à tous,

Je réalise un project de mapping avec LPMT et la libraire sketchMap de Processing (du bon travail ces softs).
Mais impossible de faire marcher les deux softs en même temps car chacun à besoin
de toute la carte graphique.

Alors quand la partie de Processing est finie je voudrais lancer LPMT qui est une application Openframeworks à partir de Processing.

J'ai essayé avec la méthode open() mais sans succès elle marche juste pour les app Processing.
Je suis sous ubuntuStudio 14.10.

Merci de votre aide

Nicolas Lhommet — 2015-02-16 17:36:37

Salut ! Pour exécuter une commande (et donc ça peut servir à lancer un programme) comme on le ferait en tapant une ligne de commande dans un "terminal" sous unix (ou encore une "invite de commande" sous dos/windows) voici une méthode java assez pratique (et qui marche aussi sur Windows, voir le sketch proposé récemment pour utiliser la commande de synthèse vocale "espeak": http://codelab.fr/5584).
Un petit exemple pour Ubuntu :

import java.io.*;

void execute (String commande) {
 try {
  Process p = Runtime.getRuntime().exec(commande); 
 } catch (Exception err) {
   println(err);
 }
 exit();
}

void setup() {
  execute("gst-launch-0.10 playbin uri=file:///usr/share/sounds/ubuntu/stereo/system-ready.ogg");
  execute("firefox");
}
matheynen — 2015-02-22 14:40:27

Merci pour la réponse.

Je dois faire une erreur en écrivant mes commandes car cela ne marche pas.

void setup() {
  execute("cd /home/mathieu/Pixsel/lpmt/");
  execute("./lpmt-master");
}
 //ou encore avec
 execute("sudo ./home/mathieu/Pixsel/lpmt/lpmt-master");
  //commande qui ouvre lpmt dans le bash

J'ai un peu tout essayer, j'ai ouvert mon appli en sudo après l'avoir exporté en changeant les chemins absolu en relatif.
Bref, je patauge

rep — 2015-02-22 15:07:24

en page 14 et 15 de ce document :
http://www.hv-a.com/lpmt/sssm.pdf
tu as une solution utilisant puredata/gem + V4L2loopback pour faire passer la vidéo issue de Gem dans l'appli LPMT... (chais pas si ça t'aide... peut être que processing peut sortir sur V4L2 ?)

Nicolas Lhommet — 2015-02-22 21:01:16

Mathieu, il n'y a pas d'erreurs dans tes commandes, simplement tu en demandes un peu trop au getRuntime() de Java, qui n'est pas un shell interactif (pour les explications techniques, voir http://stackoverflow.com/a/4884715/2592481).

Mais tu pourrais les mettre dans un script bash, par exemple nommé "script.sh", pour les exécuter avec une seule commande : "bash /home/mathieu/script.sh" (sans mettre "bash", ça peut marcher aussi). Attention à d'abord le rendre exécutable avec un "chmod +x script.sh" dans ton terminal.

Tu pourrais également donner les droits à ton exécutable "lpmt-master" pour avoir la possibilité de le lancer avec ton utilisateur (ou encore démarrer préalablement Processing en "super-utilisateur") pour te passer de "sudo", et exécuter directement ton programme, avec son chemin absolu : "/home/mathieu/Pixsel/lpmt/lpmt-master".

Si on veut/doit utiliser "sudo", le problème c'est que celui-ci "demande" un mot de passe... mais alors, comment faire sans interactivité ?
Là encore, une recherche de 2 secondes sur Internet mène à cette page (du site SuperUser/StackOverflow, indispensable pour les questions de programmation fréquemment posées) : http://superuser.com/questions/67765/su … mmand-line où nous est proposée une méthode (certes, pas très sécurisée...) pour donner directement le mot de passe à "sudo", comme ceci :

echo <mot de passe de sudo> | sudo -S <commande>

Tu ne pourras pas utiliser ça directement avec getRuntime(), mais dans un script, ça ira.

Au final, dans ton code, ça donnerait : execute("/home/mathieu/script.sh");
et dans "script.sh" :  echo 123456 | sudo -S /home/mathieu/Pixsel/lpmt/lpmt-master :)

matheynen — 2015-02-23 19:19:17

Ecrire un petit script bash j'y ai pensé après coup.
C'est vraiment une bonne idée

Merci pour toutes ces infos, je vais tester demain.
Et sous peu j'èspère vous montrer une video du projet

Bye

matheynen — 2015-02-24 17:02:59

Youpieeeeee  ! - ! - ! - ! !!

Ca marche au poil.
J'ai donné les droits à tous comme ça j'ai pu le faire sans le sudo.

Encore merci

PS : pour v4L2loopback on s'était déjà  pris la tête sur ce forum.
Si j'ai bonne mémoire il n'y a pas de paquet pour ubuntu 14.10

Et puis si je dois faire tourner 6 sketchs Processing différents pour mes 6 faces dans LPMT, je vais devoir changer de bécane.
Alors qu'avec http://josephtaylor.github.io/sketch-mapper/ un seul suffit

sakramh — 2015-02-24 20:51:31

constance et persévérance sont les mamelles ... :D