Gnuplot:绘图未更新

问题描述 投票:0回答:1

在脚本 bash 中,这就是我所做的:

  1. 每 3 分钟,我创建一分钟的二进制数据以获得瀑布。以下命令创建两个文件:plot.met 和plot.bin。

rtl_power_fftw -f 144100000:146100000 -b 500 -n 100 -g 350 -p 0 -e 1m -q -m plot

  1. 然后,我解析met文件并将.met文件的内容(bin数、扫描数等)与两个变量链接:nb_bins和nb_scans。

  2. 我将瀑布创建为 png 图像:

        gnuplot -persist << EOF
            plot 'plot.bin' binary array=${nb_bins}x${nb_scans} format='%float' with image
            set term png
            set output 'plot.png'
            replot
            set term wxt 
EOF

问题是我的plot.png图像在我的代码(bash script.sh)的第一次启动期间被修改,但是随后,我的代码使用crontab自动运行 * * * * * /my/directory/script.sh 和然后更新图像,但不包含任何内容(大小为 0 字节)。虽然我的文件plot.met和plot.bin刷新没有任何问题。

我已经尝试了不同的事情:使用 gnuplot -e "" 而不是 gnuplot persist,没有设置术语 wxt,尝试 crontab 的不同时间,终止 gnuplot 进程,但还没有任何效果,我没有任何其他想法。非常感谢您的帮助!

bash shell cron gnuplot rtl-sdr
1个回答
0
投票

在不知道你的详细安排的情况下,这里有一个让 gnuplot 无限循环运行的建议(你可以通过按

x
来停止)。我的默认终端也是
wxt

示例脚本将每秒使用一些随机因素和随机颜色绘制一个函数,仅用于说明目的。将其替换为您的绘图命令。

我不确定您是否需要 PNG 来做其他事情,或者只是在 wxt 终端中显示图形是否就足够了。

实际上,我在实验室中有一个简单的设置,其中程序每分钟将温度和湿度附加到每日文件中。 我完全独立地运行 gnuplot,并让它每分钟显示文件的内容。

不确定这是否能解决您的问题。

脚本:

### endless loop for replotting after some waiting time
reset session

stop = 0
bind x "stop=1"

f(x) = sin(x)/x

while (!stop) {

    set title strftime("%Y-%m-%d %H:%M:%S",time(0))
    b0 = rand(0)+1
    plot f(x*b0) w l lw 3 lc rgb 0x1000000*rand(0)
    
    pause 1  # number of seconds
}
### end of script

结果:(wxt终端截图)

© www.soinside.com 2019 - 2024. All rights reserved.