从 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();
【问题讨论】:
您是否将O
或S
或D
打印到您的控制台?
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 接收数据的主要内容,如果未能解决你的问题,请参考以下文章