c++ - 从 USRP 接收数据
问题描述
我编写了一个从 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();
}
}
解决方案
如果您想要连续流式传输,则不应使用。NUM_SAMPS_AND_DONE
这完全不是它的用例:它告诉 USRP 在收到 1024 个样本后停止接收。
根本不要使用那种模式。
推荐阅读
- javascript - Implementing BST backed up by Array in Javascript
- node.js - How to pass credit card info via POST
- bash - Extract field using the ‘cut’ command and piping to find the highest value in the extracted field to a separate file
- python - Python using methods from other classes with threads
- 2sxc - 2sxc DnnEnvironment.get_DefaultLanguage()
- angular - 角度测试为什么在单击时需要刷新,但在 triggerEventHandler 中不需要
- reactjs - 如何在 React 应用程序 [typescript] 中从 KeyVault 检索秘密
- c# - C# 在文本文件中搜索字符串并返回不同的字符串
- r - R - 无法从 FTP 服务器下载 gz 文件
- install4j - install4J:重定向不起作用时我在哪里可以看到应用程序日志