如何从自定义GRC块获取任意GNURadio流程图中的顶部块?

时间:2019-12-24 19:14:45

标签: c++ signal-processing gnuradio gnuradio-companion

我目前正在尝试为GNURadio创建一个自定义块。我希望该块停止流程图直到经过特定时间,然后重新启动它。我这样做是为了自动侦听来自NOAA卫星的APT数据,但我也想了解GNURadio的内部工作方式(我知道已经存在针对NOAA卫星的自动化解决方案)。

例如,让我们说我想在两天的12:34:00 pm收听NOAA-19飞越。该块将像这样工作:

  1. 运行流程图时,我将使用参数块将开始时间和日期传递给自定义块。
  2. 然后,该阻止将停止图形,并在两天内使用boost::this_thread::sleep_until()进行阻止,直到12:34:00 pm。
  3. 时间到了,该块将调用start(),但是由于时间已过去,我的自定义块将不再停止图形,并且可以开始处理数据。

我可以弄清楚如何执行步骤1,但是在尝试执行步骤2时会出现问题。如果我的理解是正确的,我应该能够通过调用顶部的stop()来停止图形。但是,我不知道如何在图中找到顶部的块。是否有一些函数返回对其的引用?还是某种方法可以备份图表以获取顶部块?还是只是有更好/没有办法在这里做我想做的事?

要清楚,我熟悉head块和skip_head块。我如上所述要这样做的原因是,它应该具有以下好处:

  1. 图形将不占用任何CPU时间,因为所有线程都将被阻塞,因此无可监听。
  2. 我可以用它来安排时间,以相当容易地收听经过的卫星。我只需要按计划时间调用top_block.py,操作系统就可以在需要收听通过的卫星时再次处理唤醒图形的问题。

如果由于某种原因我的解决方案无法实现,我想我可以编写脚本来为我做排队。就是说,如果可以的话,如果我可以将其放入GNURadio块,那就太好了。我可以想到很多类似的用途。

-Mynameisspam1

0 个答案:

没有答案