2015-03-15 6 views
5

Uso il seguente script per stampare le letture da un file .csv. Il grafico viene aggiornato ogni secondo per mostrare nuovi dati quando è in esecuzione una simulazione. Funziona piuttosto bene, anche se è un po 'brutto dato che l'intero set di dati viene riletto (se avete una soluzione migliore fatemelo sapere)Gnuplot exit on window close

Tuttavia, quando chiudo la finestra gnuplot lo script non esce, ma dopo 1 secondo mettere in pausa una nuova finestra genera, che è un po 'fastidioso. Preferirei che il mio copione si chiudesse quando chiudo la finestra. C'è un modo per ottenere questo?

#!/usr/bin/gnuplot 
set t wxt enhanced noraise 
set datafile separator ";" 
plot "../build/inputLink.csv" using 1:5 title 'Input Gear' with lines ,\ 
    "../build/inputLink.csv" using 1:7 title 'Input Gear Ratio' with lines,\ 
    ; 
pause 1 
reread 

risposta

4

Non c'è esattamente un tale funzionalità in gnuplot, per legare il pulsante della finestra close per uscire dal programma. Tuttavia, è possibile utilizzare bind per definire una hot-key, che esce dal ciclo:

#!/usr/bin/gnuplot 
set t wxt enhanced noraise 
set datafile separator ";" 
set style data lines 

done = 0 
bind all 'd' 'done = 1' 
while(!done) { 
    plot "../build/inputLink.csv" using 1:5 title 'Input Gear',\ 
     "" using 1:7 title 'Input Gear Ratio' 
    pause 1 
} 

E no, non c'è altro modo per aggiornare la trama diverso rileggendo i dati intero set ogni volta.

2

di lettura/rilettura ultime 100 righe scritte al file che aggiunge qualsiasi nuovi dati è arrivato

plot "< tail -n 100 ../build/inputLink.csv" using 1:5 title \ 
'Input Gear' with lines , \ 
, "< tail -n 100"../build/inputLink.csv" using 1:7 title \ 
'Input Gear Ratio' with lines,\ 
    ; 

Non ho terminale tipo WXT sul mio sistema Debian, utilizzando un terminale x11 posso legare il chiave 's' e usarlo per uscire dalla finestra gnuplot

pause 1 
bind "s" "unset output ; exit gnuplot" 
reread