Конфигурация проекта GNU Radio и UHD с помощью Qt Creator

В настоящее время я реализую интерфейс GUI для очень небольшого приложения GNU Radio. Приложение просто подключится к устройству USRP, получит несколько образцов IQ и перешлет их через сокет TCP. Следуя примеру файла проекта gqrx, я смог запустить несколько примеров блоков gnuradio (пример гудка из gr-analog). Проблемы начались, когда я попытался включить в проект блоки UHD/USRP. По сути, создатель Qt сообщает о следующей ошибке:

/usr/local/lib/libgnuradio-uhd.so:-1: error: undefined reference to `uhd::usrp::multi_usrp::ALL_MBOARDS

Файл .pro настроен, как показано ниже:

 QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = USRPDialog
TEMPLATE = app


SOURCES += main.cpp \
    usrpdialog.cpp

HEADERS  += \
    usrpdialog.h \
    ui_sdrdialog.h

FORMS += \
    sdrdialog.ui
CONFIG += c++11

CONFIG += link_pkgconfig

PKGCONFIG += gnuradio-analog \
             gnuradio-blocks \
             gnuradio-digital \
             gnuradio-filter \
             gnuradio-fft \
             gnuradio-runtime\
             gnuradio-uhd


LIBS += -lboost_system$$BOOST_SUFFIX -lboost_program_options$$BOOST_SUFFIX -lboost_thread$$BOOST_SUFFIX

LIBS += -luhd -lgnuradio-uhd

И это функция, которая вызывает объект uhd::usrp_source

void USRPDialog::createFlowgraph()
{
    tb = gr::make_top_block("usrp");
    d_tcpSource = gr::blocks::tcp_server_sink::make(sizeof(gr_complex),"127.0.0.1",d_rxTCPPort,true);
    d_usrpSource = gr::uhd::usrp_source::make(uhd::device_addr_t(ipAddressLineEdit->text().toStdString()),
                                              uhd::stream_args_t("fc32"));
    //Connecting blocks
    tb->connect(d_usrpSource,0,d_tcpSource,0);
    tb->start();
}

UHD установлен в моей системе (потоковые графы GNU Radio в моей системе могут без проблем подключаться к устройствам USRP). Может ли кто-нибудь пролить свет на то, почему возникает эта проблема?

Заранее спасибо.


person Moses Browne Mwakyanjala    schedule 18.10.2019    source источник


Ответы (1)


слишком поздно ответить , но на будущее ...

Я рекомендую вам использовать эту страницу шаг за шагом: Сборка UHD из исходников

и после этих шагов вы можете использовать все классы методов и uhd API для создания своего проекта на C/C++.

примечание: не забудьте установить winusb для обнаружения устройств usrp.

вы можете использовать примеры в каталоге: uhd/host/examples.

вы можете использовать простой пример для поиска (обнаружения устройства usrp) по имени: uhd_find_devices.exe после сборки uhd и т. д.

person H.M    schedule 08.10.2020