Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

communication tk-gnuplot

5 views
Skip to first unread message

hubert

unread,
Dec 23, 2010, 6:15:28 AM12/23/10
to
Bonjour à tous

j'appelle gnuplot par l'intermédiaire d'une procédure appelée gnufit

proc gnufit {} {
set gp [open "|gnuplot" r+]
puts $gp "set term postscript"
puts $gp "set output \"monfit.ps\" "
blablabla
#FIT#;puts $gp "fit \[3406:3420\] f(x) '$::file' via m,sigma,Imax"
close $gp
}

J'ai l'erreur ci-dessous lors de l'éxécution mais je ne l'ai pas si
j'enlève la ligne du FIT. Cette ligne fonctionne sous gnuplot. Auriez
vous une explication ?
Hubert


while executing
"close $gp"
(procedure "gnufit" line 10)
invoked from within
"gnufit"
invoked from within
".top.top1.f2.b1 invoke"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list $w invoke]"
(procedure "tk::ButtonUp" line 22)
invoked from within
"tk::ButtonUp .top.top1.f2.b1"
(command bound to event)

Vincent Verdon

unread,
Dec 23, 2010, 12:24:26 PM12/23/10
to
Bonsoir,

Le 23/12/2010 12:15, hubert a écrit :
> Bonjour à tous
>
> j'appelle gnuplot par l'intermédiaire d'une procédure appelée gnufit
>
> proc gnufit {} {
> set gp [open "|gnuplot" r+]
> puts $gp "set term postscript"
> puts $gp "set output \"monfit.ps\" "
> blablabla
> #FIT#;puts $gp "fit \[3406:3420\] f(x) '$::file' via m,sigma,Imax"
> close $gp
> }
>
> J'ai l'erreur ci-dessous lors de l'éxécution mais je ne l'ai pas si
> j'enlève la ligne du FIT. Cette ligne fonctionne sous gnuplot. Auriez
> vous une explication ?
> Hubert
>
>
> while executing
> "close $gp"
>

Qu'est-ce qui est dit avant "while executing" ? C'est ça qui me semble
intéressant !


Je donne quelques idées, sans être bien sûr toutefois.

Est-il logique d'ouvrir le tube en r+ alors qu'on souhaite uniquement y
écrire ? Un tube est uni-directionnel. Apparemment, dans le man tcl, on
doit utiliser que r ou w et pas autre chose.
S'il y a une erreur pendant "close $gp", 2 possibilités : $gp est déjà
clos (à cause de l'erreur ?) ou $gp n'est pas défini ce qui est
illogique car gp est défini et utilisé dans la proc.
Pour voir si la ligne est bien formattée, remplacer
puts $gp "fit \[3406:3420\] ...
par
puts "fit \[3406:3420\] ... (ou error "fit \[3406:3420\] ...)

Cela va nous donner l'allure de la commande envoyée dans le tube.


Bon voilà mes pensées du soir...

Amicalement, Vincent verdon

hubert

unread,
Dec 24, 2010, 2:32:55 AM12/24/10
to
Bonjour

merci Vincent pour ces conseils, je n'avais pas fait attention à la
spécificité des tubes et je les avais toujours considéré comme des
fichiers. Cependant, que je mette w ou r+, le résultat est le même
car, entretemps j'ai trouvé la source de mon problème. Le tube est
ouvert mais il est bloquant, j'ai ajouté fconfigure $gp -blocking 0 et
tout se passe mieux.
Le résultat de la commande


puts $gp "fit \[3406:3420\] f(x) '$::file' via m,sigma,Imax"

donne
fit [3406:3420] f(x) '...don.txt' via m,sigma,Imax

Bonne journée

hubert

0 new messages