直接操作USRP属性树

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

编译: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<uhd/usrp/multi_usrp.hpp>
//#include<uhd/property_tree.hpp>
#include<uhd/usrp/multi_usrp.hpp>
#include<iostream>
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<std::string>("mboards/0/name").get();
	std::cout<<mb_name<<std::endl;
	//get time now
	time_spec_t time_now;
	time_now=usrp->get_time_now(0);
	std::cout<<time_now.get_full_secs()<<std::endl;
	std::cout<<time_now.get_frac_secs()<<std::endl;

	time_spec_t time_now1;
	time_now1=usrp->get_device()->get_tree()->access<time_spec_t>("mboards/0/time/now").get();
	std::cout<<time_now1.get_full_secs()<<std::endl;
	//get banks
	std::vector<std::string>banks;
	banks=usrp->get_gpio_banks(0);
	std::cout<<"banks:"<<std::endl;
	for (int i=0;i<banks.size();i++)
		std::cout<<"\t"<<banks[i]<<std::endl;
	std::cout<<std::endl;
	//get dboard name
	std::string db_name=usrp->get_device()->get_tree()->list("mboards/0/dboards").at(0);
	std::cout<<"dboard name:"<<std::endl;
	std::cout<<"\t"<<db_name<<std::endl;
	//get RX antenna
	std::vector<std::string> RX_ANT;
	RX_ANT=usrp->get_device()->get_tree()->access<std::vector<std::string> >("mboards/0/dboards/A/rx_frontends/0/antenna/options").get();
	std::cout<<"RX antenna:"<<std::endl;
	for (int j=0;j<RX_ANT.size();j++)
		std::cout<<"\t"<<RX_ANT[j]<<std::endl;
	//get gain
	const boost::uint32_t rx_gain=usrp->get_device()->get_tree()->access<boost::uint32_t>("mboards/0/dboards/A/rx_frontends/0/gains/PGA0/value").get();
	std::cout<<"RX gain:"<<std::endl;
	std::cout<<"\t"<<rx_gain<<std::endl;
	return 0;
}

时间: 2024-10-29 06:58:37

直接操作USRP属性树的相关文章

属性树提供的操作函数

设备的树状结构为设备的管理提供了一个类似文件系统的方式.设备的每一个具体的子设备映射为一个叶子节点,而每一个叶子节点可进行的操作在property_tree API(property_tree.hpp)中给出. 可以进行的操作有: 1.static sptr make(void);  创建新的.空的属性树 2.sptr subtree(const fs_path &path) const = 0;以当前节点为根节点,创建子树 3.void remove(const fs_path &pat

js操作css属性实现div层展开关闭效果的方法

  本文实例讲述了js操作css属性实现div层展开关闭效果的方法.分享给大家供大家参考.具体分析如下: 最近学javascript接触到js对css属性操作,就写了个展开关闭效果,同时实现了按钮文字切换,很简洁啊!这段Js对象操作css属性实现div层的展开关闭效果.将代码分享给JS前端设计者. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <title>js操作div展开关闭</ti

JavaScript创建一个object对象并操作对象属性的用法

 这篇文章主要介绍了JavaScript创建一个object对象并操作对象属性的用法,实例分析了javascript使用object类定义对象及属性的用法,需要的朋友可以参考下     本文实例讲述了JavaScript创建一个object对象并操作对象属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码创建了一个myMovie对象,并给对象title和director属性赋值,通过Object定义对象,其属性可以不用定义,直接调用即可,非常简单. ? 1 2 3 4 5 6 <sc

大文件 b树 存储-大文件操作利用B树实现的具体原理

问题描述 大文件操作利用B树实现的具体原理 我们做一个图书馆管理系统,要求是书的信息存储在一个文件中,这个文件需要满足2G的大小,也就是说一个文件中可以同时放下几百万本书籍的信息,通过网上查资料,很多是说用B树来实现,可是我想不明白的是建立B树的索引时索引的指针指向的记录地址怎么确定,也就是说在一个文件里我要查找一本书的信息,需要分批读进内存来进行查找,如果使用了B树,怎么实现查找呢,它是直接可以根据索引找到该书在文件中的位置吗? 解决方案 在设计应用软件的时候直接设计数据存储的物理结构,这种做

js-JavaScript 操作querytables 属性设置不了,求各位大侠帮忙

问题描述 JavaScript 操作querytables 属性设置不了,求各位大侠帮忙 js把TXT数据导入到EXCEL中,使用的是QueryTables.Add方法,JS如何设置QueryTable的TextFileColumnDataTypes?用数组赋值总显示是参数不正,着急使用,跪求各位大侠帮忙!!! txt文件的格式是 "01","12","www","002", 想要的EXCEL中数据结果是:01 12 www

js操作css属性实现div层展开关闭效果的方法_javascript技巧

本文实例讲述了js操作css属性实现div层展开关闭效果的方法.分享给大家供大家参考.具体分析如下: 最近学javascript接触到js对css属性操作,就写了个展开关闭效果,同时实现了按钮文字切换,很简洁啊!这段Js对象操作css属性实现div层的展开关闭效果.将代码分享给JS前端设计者. <title>js操作div展开关闭</title> <style> #jb51 { border: solid 1px #EEE; background:#F7F7F7; ma

jQuery学习3:操作元素属性和特性_jquery

先看一个例子: 复制代码 代码如下: <a id="easy" href="#">http://www.jb51.net</a>现在要得到a标签的属性id.有如下方法: 复制代码 代码如下: jQuery("#easy").click(function() {     alert(document.getElementById("easy").id); //1     alert(this.id); /

JavaScript创建一个object对象并操作对象属性的用法_javascript技巧

本文实例讲述了JavaScript创建一个object对象并操作对象属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码创建了一个myMovie对象,并给对象title和director属性赋值,通过Object定义对象,其属性可以不用定义,直接调用即可,非常简单. <script type="text/javascript"> var myMovie = new Object(); myMovie.title = "Aliens"; myM

jQuery .attr()和.removeAttr()方法操作元素属性示例

本文为大家详细介绍下如何使用jQuery的.attr()和.removeAttr()方法读取,添加,修改,删除元素的属性,不会的朋友可以参考下哈,希望对大家有所帮助   今天主要和大家一起分享一下如何使用jQuery的.attr()和.removeAttr()方法读取,添加,修改,删除元素的属性.大家在平时的 Web页面制作中都有碰到如何动态的获取元素的属性和属性值,或者说动态的修改元素的某个(某些)属性的属性值.那么jQuery就可以让我们轻松的读 取,添加,更改或删除一个(或多个)元素中的任