2016-06-27 7 views
1

私は今使用していたEttus x310上で簡単なC++テストプログラムを持っています。私は単なるUSRPの2つのチャンネルから2つの中心周波数を設定するようにしています。上記の範囲外エラーは、第2チャンネルで何かを設定しようとすると発生します。設定されたRXフロントエンドのRXチャネルが範囲外です

私は範囲エラー外のチャンネルでクラッシュを得る:ここで

$ ./t2j.out 
    linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.009.001-0-gf7a15853 

    -- X300 initialization sequence... 
    -- Determining maximum frame size... 1472 bytes. 
    -- Setup basic communication... 
    -- Loading values from EEPROM... 
    -- Setup RF frontend clocking... 
    -- Radio 1x clock:200 
    -- Initialize Radio0 control... 
    -- Performing register loopback test... pass 
    -- Initialize Radio1 control... 
    -- Performing register loopback test... pass 
    terminate called after throwing an instance of 'uhd::index_error' 
     what(): LookupError: IndexError: multi_usrp: RX channel 140445275195320 out of range for configured RX frontends 
    Aborted (core dumped) 

は私のテストプログラムです:

int main(void) 
{ 
// sources 
gr::uhd::usrp_source::sptr usrp1; 

const std::string   usrp_addr = std::string("addr=192.168.10.30"); 
uhd::stream_args_t   usrp_args = uhd::stream_args_t("fc32"); 
usrp_args.channels = std::vector<size_t> (0, 1); 
usrp1 = gr::uhd::usrp_source::make(usrp_addr, usrp_args); 
usrp1->set_subdev_spec(std::string("A:AB B:AB"), 0); 
usrp1->set_clock_source("external"); 
usrp1->set_samp_rate(5.0e6); 

usrp1->set_center_freq(70e6, 0); // this is OK 
usrp1->set_center_freq(70e6, 1); // crashes here With RX Chan out of Range Error! 

printf("test Done!\n"); 

return 0; 
} 

アイブ氏は、これまでの検索で見つかった唯一のものは、PYTHONPATHがあることを確認しています正しく設定されています(そして、それは、site_packagesを指していることを確認しました)が、GRCと関連しているようでC++ではないようです。

gnuradio 3.7.8.1でUbuntu 14.04.4とUHD 3.9.1を使用しています(同じくIveも3.7.9.2を試しました)。

ハードウェアは、2つのBasicRxドーターボードを備えたEttus x310です。

答えて

0

gnuradio/uhdメーリングリストの誰かが私を助けました。

置き換え: stream_args.channels = std :: vector(0、1);ベクトルの初期化が間違っているようです。 これら2つの行では、 stream_args.channels.push_back(0);
stream_args.channels.push_back(1);

他のより簡潔な方法がありますが、これは今のところトリックです。

-Bob