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)
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
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