首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计时的GNURadio问题

计时的GNURadio问题
EN

Stack Overflow用户
提问于 2016-12-07 22:53:01
回答 1查看 316关注 0票数 0

我很难让自定义块在高频下运行。

我想使用的模块将从外部无线电接收数据。

我正在使用一个Ettus USRP块来流式传输来自这个无线电设备的数据,并且我可以在QT作用域上显示它。我可以将此块的采样率设置为15 MHz,并且在此范围内似乎可以正常工作。

问题:

我试着用gnuradio gr_modtool做了一个简单的块,它接受2个浮点数作为输入,输出为0。该块具有私有成员"timer“和”time_t“。在"work“函数中,我的代码只是在此时执行此操作:

代码语言:javascript
运行
复制
const float *in_i = (const float *) input_items[0];
const float *in_q = (const float *) input_items[1];

if (count == 0){
    if (*in_i > 0.5){
        timer = clock();
        count = 30000;
    }
}else{
    count --;
    if(count == 0){
        timer = clock()-timer;
        printf("Count took %d clicks, or %f seconds\n",timer,(float)timer/CLOCKS_PER_SEC);
    }
}
  // Tell runtime system how many output items we produced.
  return 0;

然而,当我运行这段代码时,它花费的时间比预期的要长。对于30000个周期,需要0.872970秒才能完成,而不是所需的0.002秒。目前情况并非如此。

最终,我的目标是能够在一段时间内存储数据流,并以某种格式将其写入文件(已经有一个块可以做到这一点,但有某种bug阻止了该块和USRP块同时工作,所以我正在尝试编写自己的。)。但是,除非我能跟上15 MHz的采样率,否则我将丢失数据。由于这个代码块相当简单,我希望它能够运行得足够快,以便跟上。但是,输入流模块能够从无线电中提取数据并以15 MHz的速度输出,因此我知道我的计算机能够做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2016-12-08 04:34:10

你的区块没有消耗任何样本。我假设您正在编写一个sync_block (work函数,而不是general_work),因此您生产的项目的数量与消费的项目的数量相同。但正如你的源代码所说:

代码语言:javascript
运行
复制
// Tell runtime system how many output items we produced.
return 0;

这意味着GNU无线电不能什么都不做。你必须返回你生产的项数,对于同步块,这是你消费的项数--即使你是一个接收器,输出流为零!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41020587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档