【发布时间】: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();
}
}
【问题讨论】:
-
您是否将
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 处理样本的速度不够快。