标签: gnuradio

在Python中处理阻塞函数调用

我正在使用Gnuradio框架.我处理我生成的流程图来发送/接收信号.这些流程图初始化并启动,但它们不会将控制流程返回给我的应用程序:

我进口了 time

while time.time() < endtime:
        # invoke GRC flowgraph for 1st sequence
        if not seq1_sent:
            tb = send_seq_2.top_block()
            tb.Run(True)
            seq1_sent = True
            if time.time() < endtime:
                break

        # invoke GRC flowgraph for 2nd sequence
        if not seq2_sent:
            tb = send_seq_2.top_block()
            tb.Run(True)
            seq2_sent = True
            if time.time() < endtime:
                break
Run Code Online (Sandbox Code Playgroud)

问题是:只有第一个if语句调用流图(与硬件交互).我陷入了困境.我可以使用一个Thread,但我没有经验,如何在Python中超时线程.我怀疑这是可能的,因为似乎杀死线程不在API中.这个脚本只需要在Linux上工作......

如何正确处理Python的阻塞函数 - 不会破坏整个程序.这个问题的另一个更具体的例子是:

import signal, os

def handler(signum, frame):
        # print 'Signal handler called with signal', signum
        #raise IOError("Couldn't open device!")
        import time
        print "wait"
        time.sleep(3) …
Run Code Online (Sandbox Code Playgroud)

python multithreading gnuradio blocking

4
推荐指数
1
解决办法
9312
查看次数

GNU Radio:设置 Python 块的最小输入/输出缓冲区大小

我正在用 Python 编写自己的 GNU Radio 块,并且我想为该块的输入和输出缓冲区设置最小缓冲区大小。

有没有一个函数或一段代码可以做到这一点?

gnuradio gnuradio-companion

4
推荐指数
1
解决办法
5091
查看次数

如何使用GNURadio Companion创建Hierarchical块?

我正在尝试使用GNURadio Companion GUI创建一个Hierarchical块.我在其他帖子中找到的答案说要选择要合并的块,然后转到更多 - >创建Hier.然后应该出现一个新的屏幕.但是,使用所选块的任何组合进行"创建Hier"似乎什么都不做.

我做错了什么,或者我的GRC有问题吗?

gnuradio hierarchical gnuradio-companion

4
推荐指数
1
解决办法
3447
查看次数

致命错误:libusb/libusb.h:没有用于 GNU 无线电的 librtlsdr 安装的文件或目录

由于此处的说明,正在尝试安装rtl-sdr(通过) ,但不能比第一个说明序列中的步骤更进一步:git clone git://git.osmocom.org/rtl-sdr.gitmake

\n
cd rtl-sdr/\nmkdir build\ncd build\ncmake ../\nmake\n
Run Code Online (Sandbox Code Playgroud)\n

在我第一次尝试时,我收到以下错误:

\n
/rtl-sdr/src/librtlsdr.c:30:10: fatal error: libusb.h: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n

找到该文件后:

\n
/usr/include$ sudo locate libusb.h\n/usr/include/libusb-1.0/libusb.h\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试将原始内容替换#include <libusb.h>#include <libusb-1.0/libusb.h>(如此此处建议的那样),这导致了不同的失败:

\n
/rtl-sdr/build$ make\n[  6%] Built target convenience_static\nScanning dependencies of target rtlsdr\n[  9%] Building C object src/CMakeFiles/rtlsdr.dir/librtlsdr.c.o\n[ 12%] Linking C shared library librtlsdr.so\n[ 28%] Built target rtlsdr\n[ 31%] Linking C executable rtl_test\nlibrtlsdr.so.0.6git: undefined reference to …
Run Code Online (Sandbox Code Playgroud)

gnuradio cmake libusb libusb-1.0 rtl-sdr

4
推荐指数
1
解决办法
1万
查看次数

gnuradio`ImportError undefined symbol`

我是GNU Radio和python的新手.我正在尝试编写一个关联块,在我的代码中的某处我使用fft过滤器:

gr::filter::kernel::fft_filter_ccc  *d_filter;
d_filter = new gr::filter::kernel::fft_filter_ccc(1, x_vector);
d_filter->filter(noutput_items,in_y,out);
Run Code Online (Sandbox Code Playgroud)

我跑

cmake ../
make 
Run Code Online (Sandbox Code Playgroud)

并且它完全符合,但是当我尝试

make test
Run Code Online (Sandbox Code Playgroud)

我会收到这个错误:

 Traceback (most recent call last):
2:   File "/home/mohammad/projects/FD/implementation_tests/oot_modules/gr-full_duplex/python/qa_fd_correlation_cc.py", line 25, in <module>
2:     import full_duplex_swig as full_duplex
2:   File "/home/mohammad/projects/FD/implementation_tests/oot_modules/gr-full_duplex/build/swig/full_duplex_swig.py", line 28, in <module>
2:     _full_duplex_swig = swig_import_helper()
2:   File "/home/mohammad/projects/FD/implementation_tests/oot_modules/gr-full_duplex/build/swig/full_duplex_swig.py", line 24, in swig_import_helper
2:     _mod = imp.load_module('_full_duplex_swig', fp, pathname, description)
2: ImportError: /home/mohammad/projects/FD/implementation_tests/oot_modules/gr-full_duplex/build/lib/libgnuradio-full_duplex.so: undefined symbol: _ZN2gr6filter6kernel14fft_filter_cccC1EiRKSt6vectorISt7complexIfESaIS5_EEi
1/1 Test #2: qa_fd_correlation_cc .............***Failed    1.30 sec
Run Code Online (Sandbox Code Playgroud)

c++ python gnuradio

3
推荐指数
1
解决办法
1703
查看次数

gnuradio 源块如何知道要输出多少个样本?

我试图了解 gnuradio 源块的工作原理。我知道如何制作一个输出常量的简单的,并且我了解采样率的含义,但我不确定如何(或在哪里)将两者结合起来。

源块是否负责调节要输出的数据量?或者它输出的数量是否取决于流程图中的其他块以及它们消耗的量?一些源块将sample_rate作为输入,这让我认为是前者。但其他街区则不然,这让我认为是后者。

如果源块负责其采样率,那么它如何调节它?他们是否检查系统时钟并据此输出样本?

signal-processing gnuradio

3
推荐指数
1
解决办法
2070
查看次数

GNU广播和野生动植物追踪

我与野生动植物无线电发射机合作,我想制造一种可以监听这些信号并跟踪其听到声音的东西。信号是通常每分钟发送60次的声音,如果运动传感器指示动物已经死亡,则发送120次。

我的计划是使用GNU Radio侦听并将信号转换为某种类型的矩阵,然后将其保存到文件中,然后在第二个程序中进行分析。有没有一种方法可以获取频率跨过几兆赫兹,频率为500 Hz的信号强度矢量,并将它们放到一个矩阵中?

次级程序将解释该输出并找到野生生物发射器并记录其脉搏率。想法是每隔10秒左右从GNU Radio获取一个新文件,并在收到第二个程序时对其进行处理。

我一直在尝试在GNU Radio中使用文件接收器块,并意识到它是二进制文件。也不确定确切包含什么。

任何建议的方法,我应该如何做到,将不胜感激!

linux signal-processing gnuradio radio gnuradio-companion

3
推荐指数
1
解决办法
876
查看次数

使用 GNU Radio 加扰器和解扰器

我正在尝试使用 GNU Radio 解扰块。我有一个由第三方编写的需要解扰的块。使用的多项式为 x 17 + x 12 + 1。

代码如下

descrambler_cc_impl::descrambler_cc_impl()
  : gr::sync_block("descrambler_cc",
          gr::io_signature::make(1, 1, sizeof(unsigned char)),
          gr::io_signature::make(1, 1, sizeof(unsigned char)))
{
    lsr = 0;
}

/*
 * Our virtual destructor.
 */
descrambler_cc_impl::~descrambler_cc_impl()
{
}

int
descrambler_cc_impl::work(int noutput_items,
    gr_vector_const_void_star &input_items,
    gr_vector_void_star &output_items)
{
  const unsigned char *in = (const unsigned char *) input_items[0];
  unsigned char *out = (unsigned char *) output_items[0];
  int i;
  for (i = 0; i < noutput_items; i++) {
out[i] = (lsr & 1) ^ …
Run Code Online (Sandbox Code Playgroud)

gnuradio gnuradio-companion

3
推荐指数
1
解决办法
2714
查看次数

GNU Radio Companion - 如何计算信号的平均功率

如何计算特定带宽内信号的平均功率,并将该值存储在一个变量中供以后参考?

例如,我有一个 15kHz 宽的低通滤波器,我想知道 GNU Radio Companion 中是否有一个工具可以让我计算特定时间的平均功率,以查看功率水平是否超过阈值。

python signal-processing gnuradio lowpass-filter

3
推荐指数
1
解决办法
3534
查看次数

GNU Radio (Companion) 在变量替换时给出 Python 语法错误

我现在第一次尝试使用 GNU Radio(Compantion),购买了 RTL SDR(NooElec 的 SDR SMARt)并尝试构建一个简单的 FM 收音机。我有一个(相当正确的)流程图并且编译运行没有错误,但是当我尝试运行它时,我收到以下错误:

Generating: '/home/fl0wless/.grc_gnuradio/Radio.py'

Executing: /usr/bin/python3 -u /home/fl0wless/.grc_gnuradio/Radio.py

  File "/home/fl0wless/.grc_gnuradio/Radio.py", line 42
    self.samp_rate = samp_rate = 2M
                                  ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

samp_rate似乎只是插入了整个表达式,而不是替换 的值。如果我删除当前的另一个变量,这也会发生在所有其他变量中。

这是一个已知的错误?GNU Radio 安装是全新的,python3 也是如此,我还没有篡改任何东西(还)。

python gnuradio python-3.x gnuradio-companion rtl-sdr

3
推荐指数
1
解决办法
1405
查看次数