2015-05-29 3 views
0

У меня есть программа на C++ с использованием встроенного сценария lua для записи точек данных из программы в файл, и я хочу одновременно иметь возможность запуска экземпляра gnuplot для построения точек данных ,Gnuplot: пропустить последнюю/неполную строку файла данных

io.output(pfile); 
io.write(t, "\t", p_x, "\t", p_y, "\t", p_z, "\n"); 

Файл Gnuplot выглядит следующим образом:

set termopt enhanced 

set title "Linear Momentum Vector" 
set xlabel "t (s)" 
set ylabel "p (N-s)" 

plot "data/plot_p.dat" using 1:2 title "p_x(t)" with lines, \ 
    "data/plot_p.dat" using 1:3 title "p_y(t)" with lines, \ 
    "data/plot_p.dat" using 1:4 title "p_z(t)" with lines 

set style line 81 lt 0 lc rgb "#808080" lw 0.5 

set grid xtics ytics mxtics mytics 
set grid back ls 81 

pause 0.25 
reread 

выше Gnuplot скрипт работает для полного файла данных, но я хочу, чтобы построить в реальном времени, в то время как программа работает. Хотя сценарий lua записывается в файл, иногда скрипт gnuplot ловит файл с неполной последней строкой. И это порождает ошибку:

"liveplot_p.gnu", line 9: x range is invalid 

Как бы я получить Gnuplot сценарию последнюю строку или недопустимые наборы данных?

Спасибо!

ответ

1

Некоторые беспорядки с lua на самом деле решили это для меня. Вызов функции io.flush() после вызова io.write (...), кажется, каждый раз записывает полную строку в файл.

Это, конечно же, не говорит gnuplot для SKIP или IGNORE последней строки, но гарантирует, что последняя строка будет завершена.

Смежные вопросы