从 USRP 接收数据

Posted

技术标签:

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

我编写了一个的小型 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 处理样本的速度不够快。 【参考方案1】:

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

不要使用那种模式。

【讨论】:

以上是关于从 USRP 接收数据的主要内容,如果未能解决你的问题,请参考以下文章

USRP B210 更改A通道或B通道

使用自定义接收器从数据集中接收流数据 [Spark Streaming]

为啥脚本没有从 mosquitto 接收数据?

如何从外部附件异步发送和接收数据

Python代码从串口连续接收可变数据

如何将结果数据从广播接收器发送到活动