2017-01-25 2 views
-2

UHDライブラリで作業中にエラー「不良割り当て」が発生しました。USRPオブジェクトをC++で作成しようとしたときに割り当てが正しくない

UHDライブラリの詳細については、いくつかの基本的なコードをコンパイルしようとしています。プログラムをコンパイルした後、私はエラーが発生しています。

コード:

int UHD_SAFE_MAIN(int argc, char *argv[]) { 
uhd::set_thread_priority_safe(); 

std::string device_args("addr=192.168.10.2"); 
std::string subdev("A:0"); 
std::string ant("TX/RX"); 
std::string ref("internal"); 

double rate(1e6); 
double freq(915e6); 
double gain(10); 
double bw(1e6); 

//create a usrp device 
std::cout << std::endl; 
std::cout << boost::format("Creating the usrp device with: %s...") %device_args << std::endl; 
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args); 


// Lock mboard clocks 
std::cout << boost::format("Lock mboard clocks: %f") % ref << std::endl; 
usrp->set_clock_source(ref); 

//always select the subdevice first, the channel mapping affects the other settings 
std::cout << boost::format("subdev set to: %f") % subdev << std::endl; 
usrp->set_rx_subdev_spec(subdev); 
std::cout << boost::format("Using Device: %s") % usrp->get_pp_string() << std::endl; 

//set the sample rate 
if (rate <= 0.0) { 
    std::cerr << "Please specify a valid sample rate" << std::endl; 
    return ~0; 
} 

// set sample rate 
std::cout << boost::format("Setting RX Rate: %f Msps...") % (rate/1e6) << std::endl; 
usrp->set_rx_rate(rate); 
std::cout << boost::format("Actual RX Rate: %f Msps...") % (usrp->get_rx_rate()/1e6) << std::endl << std::endl; 

// set freq 
std::cout << boost::format("Setting RX Freq: %f MHz...") % (freq/1e6) << std::endl; 
uhd::tune_request_t tune_request(freq); 
usrp->set_rx_freq(tune_request); 
std::cout << boost::format("Actual RX Freq: %f MHz...") % (usrp->get_rx_freq()/1e6) << std::endl << std::endl; 

// set the rf gain 
std::cout << boost::format("Setting RX Gain: %f dB...") % gain << std::endl; 
usrp->set_rx_gain(gain); 
std::cout << boost::format("Actual RX Gain: %f dB...") % usrp->get_rx_gain() << std::endl << std::endl; 

// set the IF filter bandwidth 
std::cout << boost::format("Setting RX Bandwidth: %f MHz...") % (bw/1e6) << std::endl; 
usrp->set_rx_bandwidth(bw); 
std::cout << boost::format("Actual RX Bandwidth: %f MHz...") % (usrp->get_rx_bandwidth()/1e6) << std::endl << std::endl; 

// set the antenna 
std::cout << boost::format("Setting RX Antenna: %s") % ant << std::endl; 
usrp->set_rx_antenna(ant); 
std::cout << boost::format("Actual RX Antenna: %s") % usrp->get_rx_antenna() << std::endl << std::endl; 

return EXIT_SUCCESS; 

}エラーが発生したコードの

パート:

//create a usrp device 
std::cout << std::endl; 
std::cout << boost::format("Creating the usrp device with: %s...") %device_args << std::endl; 
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args); 

エラー:enter image description here

私が使用している:

  • のMicrosoft Visual C++ Expressの2010
  • C++言語
  • UHDライブラリ、Win32_VS2010.exe、003.007.003-リリース
  • Boostライブラリ1_63_0
  • 私は自分のコンピュータに任意のURSPデバイスを接続しないでください。

エラーがUHDライブラリまたはC++言語に接続されているかどうかわかりません。私は、Microsoft Visual StudioのさまざまなバージョンとUHDライブラリのさまざまなバージョン(最新バージョンを含む)を使用してこのプログラムをコンパイルしようとしていました。私は別のPCでこれをコンパイルしようとしていましたが、結果は似ていました。プログラムを中断したエラーはありませんでしたが、代わりにコンソールに文字列 "error:bad allocation"があり、プログラムが同じ場所で動作しなくなりました。

このプログラムのコンパイルを始めたとき、私は「不正な割り当てエラー」(UHD_003.004.000 - リリース)を取得しませんでした。 "エラー:LookupError:KeyError:デバイスが見つかりません----->。その後、私はUHDライブラリの新しいバージョン(003.007.003)にアップグレードしてからをアップグレードすることにしました。割り当てエラーは、私は、以前のバージョンをバックインストールしようとしていたが、それは助けていない。破壊に対する開始した。

は、私は同じように、 UHD :: device_addr_t文字列から、device_argsの 種類を変更しようとしていましたマニュアルでは http://files.ettus.com/manualと言われていますが、エラーは消えませんでした。

助けていただければ幸いです。

答えて

0

"URSPデバイスをコンピュータに接続しません。"

このコードは、実行中のコンピュータにUSRPを接続しないと実行できません。

あなたがuhd :: usrp :: multi_usrp :: make(device_args)を呼び出すと、 uhdは、あなたがデバイスargsで指定したIPアドレスでUSRPに接続しようとしています。

usrpをコンピュータに接続してもう一度試してみてください。

関連する問題