我正在使用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 编写自己的 GNU Radio 块,并且我想为该块的输入和输出缓冲区设置最小缓冲区大小。
有没有一个函数或一段代码可以做到这一点?
我正在尝试使用GNURadio Companion GUI创建一个Hierarchical块.我在其他帖子中找到的答案说要选择要合并的块,然后转到更多 - >创建Hier.然后应该出现一个新的屏幕.但是,使用所选块的任何组合进行"创建Hier"似乎什么都不做.
我做错了什么,或者我的GRC有问题吗?
由于此处的说明,正在尝试安装rtl-sdr(通过) ,但不能比第一个说明序列中的步骤更进一步:git clone git://git.osmocom.org/rtl-sdr.gitmake
cd rtl-sdr/\nmkdir build\ncd build\ncmake ../\nmake\nRun Code Online (Sandbox Code Playgroud)\n在我第一次尝试时,我收到以下错误:
\n/rtl-sdr/src/librtlsdr.c:30:10: fatal error: libusb.h: No such file or directory\nRun Code Online (Sandbox Code Playgroud)\n找到该文件后:
\n/usr/include$ sudo locate libusb.h\n/usr/include/libusb-1.0/libusb.h\nRun Code Online (Sandbox Code Playgroud)\n我尝试将原始内容替换#include <libusb.h>为#include <libusb-1.0/libusb.h>(如此处和此处建议的那样),这导致了不同的失败:
/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) 我是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) 我试图了解 gnuradio 源块的工作原理。我知道如何制作一个输出常量的简单的,并且我了解采样率的含义,但我不确定如何(或在哪里)将两者结合起来。
源块是否负责调节要输出的数据量?或者它输出的数量是否取决于流程图中的其他块以及它们消耗的量?一些源块将sample_rate作为输入,这让我认为是前者。但其他街区则不然,这让我认为是后者。
如果源块负责其采样率,那么它如何调节它?他们是否检查系统时钟并据此输出样本?
我与野生动植物无线电发射机合作,我想制造一种可以监听这些信号并跟踪其听到声音的东西。信号是通常每分钟发送60次的声音,如果运动传感器指示动物已经死亡,则发送120次。
我的计划是使用GNU Radio侦听并将信号转换为某种类型的矩阵,然后将其保存到文件中,然后在第二个程序中进行分析。有没有一种方法可以获取频率跨过几兆赫兹,频率为500 Hz的信号强度矢量,并将它们放到一个矩阵中?
次级程序将解释该输出并找到野生生物发射器并记录其脉搏率。想法是每隔10秒左右从GNU Radio获取一个新文件,并在收到第二个程序时对其进行处理。
我一直在尝试在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) 如何计算特定带宽内信号的平均功率,并将该值存储在一个变量中供以后参考?
例如,我有一个 15kHz 宽的低通滤波器,我想知道 GNU Radio Companion 中是否有一个工具可以让我计算特定时间的平均功率,以查看功率水平是否超过阈值。
我现在第一次尝试使用 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 也是如此,我还没有篡改任何东西(还)。
gnuradio ×10
python ×4
rtl-sdr ×2
blocking ×1
c++ ×1
cmake ×1
hierarchical ×1
libusb ×1
libusb-1.0 ×1
linux ×1
python-3.x ×1
radio ×1