【问题标题】:Receiving data from USRP从 USRP 接收数据
【发布时间】:2021-12-27 14:54:36
【问题描述】:

我编写了一个从 USRP 接收数据的小型 c++ 程序。该程序可以接收 I/Q 数据并将其显示在频谱分析仪上。不过,接收器 LED 并不总是绿色。它有点闪烁和变暗。我怀疑计算机和 USRP 之间的速率不匹配。会是这样吗?如何确保计算机以与 USRP 获取样本相同的速率消耗样本?下面是我用于 I/Q 信号采集的线程函数。

void
USRPDriver::RxEventLoop()
{
    uhd::rx_metadata_t md;
    uhd::stream_cmd_t stream_cmd(uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
    stream_cmd.stream_now = true;
    stream_cmd.num_samps = 1024;
    //std::cout << "Maximum num samps = " << rx_stream->get_max_num_samps() << std::endl;
    std::vector<std::complex<float> > fcpxIQ;
    fcpxIQ.resize(1024);
    usrp->issue_stream_cmd(stream_cmd);
    while(true)
    {
        usrp->issue_stream_cmd(stream_cmd);
        size_t num_rx_samps = rx_stream->recv(&fcpxIQ[0], 1024, md);
        emit ReceiveIQ(fcpxIQ);
        //std::cout << "Rx rate = " << usrp->get_rx_rate(0) << std::endl;
        //fcpxIQ.clear();
    }
}

【问题讨论】:

  • 您是否将OSD 打印到您的控制台?
  • NUM_SAMPS_AND_DONE 不打印 O/S/D。 STREAM_MODE_NUM_SAMPS_AND_MORE 工作了一段时间,然后开始打印 Os 的踪迹。但是,当我禁用频谱分析仪功能(使用 FFT 和绘图功能)时,路径就会停止。那么 STREAM_MODE_NUM_SAMPS_AND_MORE 应该是用于连续流式传输的选项吗?
  • 是的,完全正确。它打印 O 的事实意味着您的 PC 处理样本的速度不够快。

标签: c++ gnuradio usrp


【解决方案1】:

如果您想要连续流式传输,您应该使用NUM_SAMPS_AND_DONE。这正是不是它的用例:它告诉 USRP 在收到 1024 个样本后停止接收。

不要使用那种模式。

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2015-08-14
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多