gnuplot实时绘图C实现

时间:2013-09-01 04:41:30

标签: c plot real-time pipe gnuplot

我是gnuplot的新手,并且只学习了开始绘图的基础知识。我正在编写一个执行DSP的C程序,需要实时绘制结果。另外,我已经按照以下方式设置我的程序,以结合gnuplot中的情节' - '功能。父进程将不断执行DSP计算,并使用管道实时将结果发送给子进程。孩子将收到来自父母的信号,醒来,并通过烟斗将结果发送到gnuplot。

基本上,数据路径如下:

父母(计算) - >管道 - >孩子(等待来自父母的输入) - >管道 - > gnuplot(绘图)

例如,在孩子中,包含在条件等待中

getline(&lineBuffer, lineSize, stdin);
printf("%s", lineBuffer);
fflush(stdout);

其中lineBuffer可以是任意char*,将数据从父级重定向到gnuplot。我拥有绘图所需的所有数据,并且可以采用任何格式进行格式化。然而,在尝试以下后,没有成功。

如果尚未定义外观和标签,

set terminal x11 persist noraise
set xlabel "Frequency"
set ylabel "Decibel"
set xrange [0:2000]
set yrange [-100:100]
set style data lines

启动初始绘图命令,

plot '-' using 1:2 smooth unique

开始发送数据,每个点都是一个新行,我将数据格式化为

Frequency Decibel

在特定时间,例如

1000 -30.00
1001 -31.00
....

通过发送结束数据

e\n

然后我重新开始发送数据的过程,并以

结束
replot

这看起来是对的吗?另一方面,我也有兴趣绘制特定频率的时间序列,经过大量搜索后,显然我需要一个缓冲区或临时文件才能完成此任务,这也是正确的吗?

0 个答案:

没有答案