[Users-fr] Accéder à Scilab en mode batch depuis Java

classic Classic list List threaded Threaded
7 messages Options
Victor Noël Victor Noël
Reply | Threaded
Open this post in threaded view
|

[Users-fr] Accéder à Scilab en mode batch depuis Java

Bonjour,

Nous utilisons Scilab dans un projet de recherche où il est nécessaire
d'exécuter plusieurs sessions en parallèles depuis java.

Comme cela n'est pas possible avec javasci, nous avons opté pour l'exécution
de scilab en mode batch avec écriture et lecture sur les entrées standards.

La version courte de notre problèmes est que cela marche sous Windows, mais
pas sous Linux !

Plus précisément, après avoir créé le processus, la lecture sur la sortie
standard bloque.

Le genre de code que nous avons est la suivant (avec Scilab 5.3.3):

String _SCILAB = "/usr/bin/scilab";
String[] _SCILAB_BATCH = {_SCILAB, "-nwni", "-nb"};
Process _process;
       
PrintWriter _writer;
Reader _reader;

ProcessBuilder pb = new ProcessBuilder(_SCILAB_BATCH);

_process = pb.start();
               
_writer = new PrintWriter(new OutputStreamWriter(_process.getOutputStream()));
_reader = new InputStreamReader(_process.getInputStream());
               
_writer.format("mode(-1);%n");
_writer.flush();

_writer.format("write(%%io(2),'test');%n");
_writer.flush();

// ça bloque ici !
int r = _reader.read();
while (r != -1) {
        r = _reader.read();
        System.out.print((char)r);
}

Qu'en pensez-vous ? Je me retrouve bloqué là, j'ai fais le tour des conseils
sur ce genre de problèmes lors de l'exécution de processus et la lecture des
entrées sorties mais je n'ai rien trouvé de probant !
Je me demande presque si ça ne peut pas venir de scilab lui-même ?

Merci pour votre aide !

Victor
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
laurent berger laurent berger
Reply | Threaded
Open this post in threaded view
|

Re: [Users-fr] Accéder à Scilab en mode batch depuis Java

Bonjour,

Moi j'utilise scilab 5.4.0 en mode API call_scilab et cela ne marche pas. Cette version n'est pas stable.
Sous linux avec la version 5.2.2 je n'ai pas de problème, le code tourne depuis un mois sans souci et de même avec la version 5.3.3 sous windows.
En debugging j'ai une exception au début avant l'exécution de mon code que l'on peut ignorer mais java envoie un rapport d'erreur. Je reprends la version 5.3.3
Bon courage
Sylvestre Ledru-4 Sylvestre Ledru-4
Reply | Threaded
Open this post in threaded view
|

Re: Accéder à Scilab en mode batch depuis Java

Bonjour Laurent,
Le 08/10/2012 16:10, laurent berger a écrit :
> Bonjour,
>
> Moi j'utilise scilab 5.4.0 en mode API call_scilab et cela ne marche pas.
Pourrais tu détailler ce que tu veux dire par "ne marche pas" ?

Merci
Sylvestre


--
Sylvestre Ledru
Operations Manager / Community Manager
-----------------------------------------------------------
Scilab Enterprises
143bis rue Yves Le Coz - 78000 Versailles, France
http://www.scilab-enterprises.com


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
laurent berger laurent berger
Reply | Threaded
Open this post in threaded view
|

Re: Accéder à Scilab en mode batch depuis Java

Désolé je viens juste de voir votre réponse.
En effet j'ai un un souci avec scilab 5.4.0.
J'ai un programme C qui appelle scilab soit en mode API ou bien en lançant une commande du type Scilex.exe -nb -nouserstartup -f  nomDuScript
Dans ce dernier cas dans la console j'ai le message  xs2jpg : impossible de créer le fichier d'export, veuillez signaler un bug sur http://bugzilla.scilab.org

Je pense que une cause possible du problème est le tracé des courbes.
Je pense (conditionnel) avoir réussi à reproduire indépendamment du mode api à partir du programme suivant
nomFic0="a.jpg";
nomFic1="b.jpg";
nomFic2="c.jpg";
nomFic3="d.jpg";
nomFic4="e.jpg";
nomFic5="f.jpg";
t=0:0.01:100;
y=sin(t);
figure(0);
clf();
plot(t,sin(t))
xs2jpg(0,nomFic0);xdel(0);
figure(1);
clf();
plot(t,sin(t))
xs2jpg(1,nomFic1);
xdel(1);
figure(2);
clf();
plot(t,sin(t))
xs2jpg(2,nomFic2);
xdel(2);
figure(3);
clf();
plot(t,sin(t))
xs2jpg(3,nomFic3);
xdel(3);
figure(4);
clf();
plot(t,sin(t))
xs2jpg(4,nomFic4);
xdel(4);
figure(5);
clf();
plot(t,sin(t))
xs2jpg(5,nomFic5);
xdel(5);

Si je lance ce programme plusieurs fois de suite scilab se ferme sans aucun message d'avertissement ou bien se bloque.
Quand je n'ai pas de graphique je n'ai pas constaté d'erreur.
Mes excuses encore pour ce  retard dans ma réponse
Sylvestre Ledru-4 Sylvestre Ledru-4
Reply | Threaded
Open this post in threaded view
|

Re: Accéder à Scilab en mode batch depuis Java

Bonjour,

Je sais que je ne réponds pas vraiment à votre question mais vous
devriez regarder du coté de driver/xinit/xend pour faire des exports en
mémoire et plus rapides:
http://help.scilab.org/docs/5.4.0/en_US/driver.html
http://help.scilab.org/docs/5.4.0/en_US/xinit.html

Sylvestre

On 28/11/2012 10:00, laurent berger wrote:

> Désolé je viens juste de voir votre réponse.
> En effet j'ai un un souci avec scilab 5.4.0.
> J'ai un programme C qui appelle scilab soit en mode API ou bien en lançant
> une commande du type Scilex.exe -nb -nouserstartup -f  nomDuScript
> *Dans ce dernier cas dans la console j'ai le message  xs2jpg : impossible de
> créer le fichier d'export, veuillez signaler un bug sur
> http://bugzilla.scilab.org
> *
> Je pense que une cause possible du problème est le tracé des courbes.
> Je pense (conditionnel) avoir réussi à reproduire indépendamment du mode api
> à partir du programme suivant
> nomFic0="a.jpg";
> nomFic1="b.jpg";
> nomFic2="c.jpg";
> nomFic3="d.jpg";
> nomFic4="e.jpg";
> nomFic5="f.jpg";
> t=0:0.01:100;
> y=sin(t);
> figure(0);
> clf();
> plot(t,sin(t))
> xs2jpg(0,nomFic0);xdel(0);
> figure(1);
> clf();
> plot(t,sin(t))
> xs2jpg(1,nomFic1);
> xdel(1);
> figure(2);
> clf();
> plot(t,sin(t))
> xs2jpg(2,nomFic2);
> xdel(2);
> figure(3);
> clf();
> plot(t,sin(t))
> xs2jpg(3,nomFic3);
> xdel(3);
> figure(4);
> clf();
> plot(t,sin(t))
> xs2jpg(4,nomFic4);
> xdel(4);
> figure(5);
> clf();
> plot(t,sin(t))
> xs2jpg(5,nomFic5);
> xdel(5);
>
> Si je lance ce programme plusieurs fois de suite scilab se ferme sans aucun
> message d'avertissement ou bien se bloque.
> Quand je n'ai pas de graphique je n'ai pas constaté d'erreur.
> Mes excuses encore pour ce  retard dans ma réponse
>
>
>
>
> --
> View this message in context: http://mailinglists.scilab.org/Users-fr-Acceder-a-Scilab-en-mode-batch-depuis-Java-tp4024962p4025358.html
> Sent from the Liste utilisateur (en français) mailing list archive at Nabble.com.
> _______________________________________________
> users-fr mailing list
> [hidden email]
> http://lists.scilab.org/mailman/listinfo/users-fr

_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
laurent berger laurent berger
Reply | Threaded
Open this post in threaded view
|

Re: Accéder à Scilab en mode batch depuis Java

j'ai fait la modification en utilisant les commandes driver et xinit et xend. je n'ai pas eu de plantage pour l'instant.
Votre solution me convient mais je pense qu'il reste un bug dans scilab ou la machine java.
Pour moi avant c'est comme si la commande xdel était exécutée avant la fin de la commande xs2jpg.

Merci pour votre solution
Sylvestre Ledru-4 Sylvestre Ledru-4
Reply | Threaded
Open this post in threaded view
|

Re: Accéder à Scilab en mode batch depuis Java

On 28/11/2012 15:29, laurent berger wrote:
> j'ai fait la modification en utilisant les commandes driver et xinit et xend.
> je n'ai pas eu de plantage pour l'instant.
> Votre solution me convient mais je pense qu'il reste un bug dans scilab ou
> la machine java.
Oui, je n'en disconviens pas!

Pourriez-vous reporter un bug ?

Merci,
Sylvestre
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr