Использование устройства REDHAWK UHD

Я успешно установил UHD-устройство вместе с REDHAWK версии 1.8.3. Для меня не очевидно, как подключить компонент сигнала к устройству, управляемому диспетчером устройств. Мне также неясно взаимодействие между интерфейсами IDL и портами данных на устройстве USRP.

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


person user2386792    schedule 15.05.2013    source источник


Ответы (2)


Один из способов подключения Компонента к Устройству в работающей среде — через модуль Python REDHAWK. Он может подключаться к работающему домену, запрашивать любые запущенные приложения и подключать порты от компонентов к устройствам. Ниже приведен пример сценария Python (обратите внимание, что порты должны быть одного типа, чтобы соединение было успешным):

from ossie.utils import redhawk
from ossie.cf import CF

# Connect to the running domain
domain = redhawk.attach("REDHAWK_DEV")

# Gets a reference to the running application
for app in domain.apps:
    # Find desired application
    if app.name == 'desired_name':
        application = app

# Gets the component from the application
for comp in application.comps:
    # Find desired component
    if comp.name == 'desired_name':
        component = comp

# Gets the device to connect
for devMgr in domain.devMgrs:
    for dev in devMgr.devs:
        # Find desired device
        if dev.name = 'desired_name':
            device = dev

# Gets the references to the input and output ports
comp_port = component.getPort('port_name')._narrow(CF.Port)
dev_port = device.getPort('port_name')

# Makes the actual connection
comp_port.connectPort(dev_port, 'ConnectionID')

# Make sure device is started
device.start()

# Start application
application.start()

# To disconnect:
# Stop device and application
application.stop()
device.stop()
comp_port.disconnectPort('ConnectionID')
person Adam Anderson    schedule 16.05.2013

Есть несколько способов сделать это в зависимости от вашей ситуации. Вот некоторые из них:

A.) Проблема: вы отлаживаете проблему в IDE и хотите быстро подключить порт устройства к порту компонента.

Решение. Когда компонент и устройство работают либо в домене, либо в изолированной программной среде, разверните компонент и устройство в представлении SCA Explorer, чтобы открыть доступ к портам. Нажмите на выходной порт, затем Ctrl + нажмите на входной порт, к которому вы хотите подключиться. Выделив оба порта, вы можете щелкнуть правой кнопкой мыши и выбрать «Подключиться».

B.) Проблема: вам нужен общий способ подключения входного порта компонентов, независимо от языка реализации, к определенному типу выходного порта устройств, независимо от языковой реализации.

Решение. Это многоэтапный процесс, который поначалу не интуитивно понятен. Я рекомендую вам просмотреть спецификацию SCA на странице D-43 для получения дополнительной информации о шаге 10 и далее ниже.

  1. Откройте компонент в редакторе и перейдите на вкладку Реализации.

  2. Щелкните правой кнопкой мыши реализацию, которую вы хотели бы использовать для этого соединения (например, python).

  3. Выберите «Создать» → «Использует устройство».

  4. Сгенерируйте (или введите) уникальный идентификатор DCE для этого соединения.

  5. Введите тип usesDevice, хотя я не уверен на 100%, имеет ли значение тип, я использовал useDevice

  6. Щелкните правой кнопкой мыши на «Использует устройство», выберите «Ссылка на новое свойство». Вы не будете напрямую подключать компонент X к устройству Y. Вместо этого вы подключаете компонент X к устройству, которое соответствует установленным здесь ограничениям свойств. т.е. модель, тип и т.

  7. В вашем устройстве на вкладке свойств задайте для свойства, такого как device_kind или device_model, поле Name, что-то, с чем вы хотите сопоставиться. Например, мы скажем XYZ123. Сохраните и разверните это в SDR ROOT

  8. Вернитесь в компонент, где мы устанавливали свойство Ref, выберите обзор и выберите свойство на устройстве, которое вы только что установили в качестве соответствующего свойства.

  9. Установите значение на значение, которое вы установили, например, XYZ123. Сохраните и разверните компонент

  10. Теперь в вашем сигнале вам нужно вручную отредактировать файл SAD и добавить что-то вроде этого, где [[TEXT]] указывает, что вам нужно изменить:

    <connections>
    <connectinterface id="[[Connection_Name]]">
      <usesport>
        <usesidentifier>[[Output Port Name]]</usesidentifier>
        <deviceusedbythiscomponentref refid="[[DCE matching the componentinstantiationID]]" usesrefid="[[DCE matching the generated ID from step 4]]"/>
      </usesport>
      <providesport>
        <providesidentifier>[[Input Port Name]]</providesidentifier>
        <componentinstantiationref refid="[[DCE matching the componentinstantiationID]]"/>
      </providesport>
    </connectinterface>
  </connections>

Я рекомендую вам добавить фиктивный компонент в ваш редактор SAD и подключить фиктивный компонент к реальному компоненту, чтобы ваш файл SAD был заполнен блоком connectinterface, и вы могли увидеть пример соединения.

После внесения этих изменений среда IDE может сообщить вам, что в вашем файле SAD существует ошибка, в любом случае сохраните его, закройте редактор SAD и снова откройте его. Если ошибка не отображается, ваш синтаксис в порядке. Разверните сигнал и запустите как обычно.

C.) Проблема: вы хотите подключиться к устройству с помощью скрипта Python вне REDHAWK, службы Python внутри REDHAWK или через компонент Python в вашем сигнале.

Решение: см. решение Адама.

person Youssef Bagoulla    schedule 17.05.2013