直接操作USRP属性树

在multi_usrp.hpp中以API的方式为用户提供了对USRP的操作方法,用户可以定义usrp指针后直接调用这些方法:即usrp.xxx()。然而,如果如果用户想进行API中没有提供的设置,就需要直接对USRP的属性树进行操作,通过属性树的根节点进入到叶子节点,然后调用叶子节点相应的方法:如usrp->get_device->get_tree()->access("path").get()/set()等。

直接操作USRP属性树_第1张图片

编译:g++ tree.cpp -o tree -luhd

运行结果:

注意,对于射频子板的操作需要使用list()方法,比如得到射频子板的名称的程序如下:

std::string db_name=usrp->get_device()->get->tree()->list("mboards/0/dboards").at(0);

否则直接向上面使用access()会出现未进行初始化的错误。

其他的节点参考multi_usrp.cpp中的函数。

#include
//#include
#include
#include
using namespace uhd;
using namespace uhd::usrp;

int main(){
	std::string args="";
	uhd::usrp::multi_usrp::sptr usrp=uhd::usrp::multi_usrp::make(args);
	//get mother board name
	std::string mb_name;
	//mb_name=usrp->get_mboard_name(0);
	mb_name=usrp->get_device()->get_tree()->access("mboards/0/name").get();
	std::cout<get_time_now(0);
	std::cout<get_device()->get_tree()->access("mboards/0/time/now").get();
	std::cout<banks;
	banks=usrp->get_gpio_banks(0);
	std::cout<<"banks:"<get_device()->get_tree()->list("mboards/0/dboards").at(0);
	std::cout<<"dboard name:"< RX_ANT;
	RX_ANT=usrp->get_device()->get_tree()->access >("mboards/0/dboards/A/rx_frontends/0/antenna/options").get();
	std::cout<<"RX antenna:"<get_device()->get_tree()->access("mboards/0/dboards/A/rx_frontends/0/gains/PGA0/value").get();
	std::cout<<"RX gain:"<
直接操作USRP属性树_第2张图片

你可能感兴趣的:(直接操作USRP属性树)