Канал RX вне диапазона для настроенных интерфейсов RX

У меня есть простая тестовая программа c ++ на Ettus x310, которая раньше работала, но не работает. Я пытаюсь просто установить две центральные частоты двух каналов одного USRP. Вышеуказанная ошибка Out of range возникает, когда я пытаюсь установить что-либо на 2-м канале.

Я получаю сбой с ошибкой канала вне диапазона:

    $ ./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 ++.

Я использую Ubuntu 14.04.4 и UHD 3.9.1 с gnuradio 3.7.8.1 (я также пробовал 3.7.9.2) с тем же результатом.

Аппаратное обеспечение — Ettus x310 с двумя дочерними платами BasicRx.

1

Решение

Кто-то из списка рассылки gnuradio / uhd помог мне. Похоже, что инициализация вектора была неправильной:

Заменить:
stream_args.channels = std :: vector (0, 1);
С этими двумя строчками:
stream_args.channels.push_back (0);
stream_args.channels.push_back (1);

Есть и другие, более лаконичные методы, но пока это работает.

-боб

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]