- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
こんにちはドルフィンシステム福島です。
今回はUHDでUSRPの情報を取得する2回目です。
前回はuhd_usrp_probeを使って値を取得してみました。今回はC++のプログラムで取得してみます。
UHDでUSRPの温度やRSSI、設定値などデバイスの情報を取得する (1/2)
UHDでUSRPの温度やRSSI、設定値などデバイスの情報を取得する (2/2)
関連する過去の投稿
USRP B200がUSB 3.0で接続されているか、2.0で接続されているか判別する。
LibUsbDotNetを使ってUSRP B200の接続情報を取得する
プログラムでデバイス情報を取得する
ツリー名の取得
前回解説したようにUSRPデバイスマザーボードやRXドーターボード等の情報がツリー状に配置されています。このツリーを取得してから、値を取得します。
以下のようにlistメソッドでルートを渡すと、下図のように配下のデバイス名が取得できます。
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args);
auto list = usrp->get_device()->get_tree()->list("/");
auto list = usrp->get_device()->get_tree()->list("/");
auto list = usrp->get_device()->get_tree()->list("/mboards");
auto list = usrp->get_device()->get_tree()->list("/mboards/0/");
とすると、ツリーを徐々にたどっていけます。
以下の様にすると、デバイス名を取得できます。
auto name= usrp->get_device()->get_tree()->access<double>("/mboards/name").get();
auto name = usrp->get_device()->get_tree()->access<double>("/mboards/0/name").get();
取得値
/mboards/name = B-Series Device
/mboards/0/name = B200
/mboards/0/link_max_rate = 500000000
/mboards/0/link_max_rate = 53248000
USB接続の場合は、以下の様にすると接続しているレートを取得できます。
auto maxrate = usrp->get_device()->get_tree()->access<double>("/mboards/0/link_max_rate").get();
cout << maxrate << endl;
複数台のUSRPがあるとき
複数台のUSRPを認識している場合は、mboards以下の数値でデバイス番号を指定します。
デバイス番号は指定した順番になるので、以下の例ではaddr0が0、addr1が1となります。
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make("addr0=192.168.10.1,addr1=192.168.10.2");
auto name0 = usrp->get_device()->get_tree()->access<double>("/mboards/0/name").get();
auto name1 = usrp->get_device()->get_tree()->access<double>("/mboards/0/name").get();
以上、ドルフィンシステム福島でした。
- リンクを取得
- ×
- メール
- 他のアプリ
コメント
コメントを投稿