我是使用usrp设备的新手,我正在尝试学习如何使用C ++ API调整E310设备的接收器或发射器的中心频率,所以我有几个问题:
1)我在下面的代码中遗漏了什么
2)如何让我的脚本编译并正常运行。使用cmake还是g ++? (尝试过两者,对我来说都不起作用。)或者甚至,我将如何编译我从github存储库获取的示例,以确保我做得对。
我也试图用一些例子作为起点。
由于
#include <uhd/utils/safe_main.hpp>
#include <uhd/usrp/multi_usrp.hpp>
#include <boost/format.hpp>
#include <uhd/types/tune_request.hpp>
#include <iostream>
#include <csignal>
#include <cstdio>
int UHD_SAFE_MAIN()
{
double freq;
printf("Enter RX frequency in Hz");
scanf("%lf",&freq);
//create a USRP
uhd::usrp::multi_usrp::sptr usrp;
//set the frequency
usrp->set_rx_freq(freq);
//Read the frequency
usrp->get_rx_freq();
return 0;
}
当我使用g ++ -luhd Example.cpp -o test编译时,我得到的错误消息是
/usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2 /../../../../臂-OE-Linux的gnueabi / bin中/ LD: /usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2/../../../libuhd.so:undefined 引用符号'_ZN5boost6system15system_categoryEv' //usr/lib/libboost_system.so.1.55.0:添加符号时出错:DSO丢失 从命令行collect2:错误:ld返回1退出状态。
我不确定这是关于语法还是缺少一些参数或其他我还不了解的东西。
答案 0 :(得分:0)
如何让我的脚本编译并正常运行。使用cmake还是g ++? (尝试过两者,对我来说都不起作用。)或者甚至,我将如何编译我从github存储库获取的示例,以确保我做得对。
CMake和g ++是完全不同的东西。第一个用于生成构建脚本(所谓的Makefile),第二个用于编译器(通常从构建脚本调用)。
你应该看看init_usrp project example,从README开始,然后修改init_usrp.cpp,直到你有足够的感觉回家基于CMake的项目构建,你可以调整你自己的项目需要。
作为一个额外的节点:你正在以 hard 的方式做这件事。与任何非E系列USRP不同,E310是嵌入式Linux计算机,因此您需要为其编译软件并在USRP上运行,而不是能够使用您的PC。对于刚刚掌握构建系统的人来说,这真的很麻烦。如果我有更多的时间,我会添加一些关于你不应该如何在E310本身上构建软件的信息,而是在你的PC上使用交叉编译工具链,但这只会让事情变得更复杂。 如果可以(例如,如果您的实验室碰巧有另一个实验室),请使用任何其他USRP;如果您实际在带有屏幕的PC上工作,那么调试代码和信号处理会更容易。
1)我在下面的代码中遗漏了什么
很难说。它看起来很小,但对我来说还可以。您没有包含任何有关出错的信息。我的意思是,你可能应该有一个#include <cstdio>
,因为你正在使用scanf
和printf
,但是因为你需要习惯C ++才能用UHD开发信号处理软件在嵌入式设备上,我认为这些琐碎的信息对你没什么帮助。