Итак, вы пытаетесь использовать общее пространство процессов внутри узла для связи между устройствами и службами?Потому что я не верю, что есть специальные инструменты для этого, но я думаю, что есть способ сделать это.Просто чтобы прояснить ситуацию, я не пробовал этого, но, основываясь на тесте, используемом портами bulkio для определения использования локального и удаленного транспорта, думаю, это будет работать.
Если вы посмотрите на шаблон персоны, вы увидите, что есть программируемое устройство, которое отвечает за загрузку устройств Persona.Большинство деталей для этого не обязательно для того, что вы пытаетесь сделать, но шаблон должен быть полезным.Для осуществления связи между устройствами с использованием общей памяти вы можете сгенерировать программируемое устройство, единственной целью которого является пересылка параметров из DeviceManager в Personas.Затем Personas будет действовать как обычные устройства, просто запущенные в том же пространстве процессов, что и другие.
Генераторы кода для программируемых устройств и устройств Persona еще не интегрированы в IDE, поэтомунеобходимо создать новый проект устройства в eclipse для каждого устройства, которое вы хотите (чтобы у вас были файлы spd).Обязательно добавьте соответствующий интерфейс AggregateDevice к вашим устройствам.Это дает платформе понять, что несколько устройств технически могут рассматриваться как одна сущность, но вы также можете индивидуально общаться с каждым.Также убедитесь, что Программируемое устройство является Исполняемым Устройством, так как оно требует запуска Персональных Устройств.Затем из командной строки вы можете запустить redhawk-codegen - - pgdevice </path/to/programmable/spd>
, чтобы сгенерировать программируемое устройство, и redhawk-codegen - - persona </path/to/persona/spd>
, чтобы сгенерировать ваши устройства (ы) Persona.
Как только все это будет сделано, вы заметитеОсновная функция вашего Программируемого запускает Устройство, как вы описали в своем вопросе.Тем не менее, основная функция для Personas имеет код для запуска устройства как отдельного устройства или просто как объекта в его собственном потоке.
Это должно позволить портам оптовых портов Программируемого и Персона взаимодействовать с каждымдругие через общую память.Очевидно, что это сломается, если вы попытаетесь вытолкнуть данные из процесса, по крайней мере, до тех пор, пока кто-нибудь не добавит разделяемую память между процессами через что-то вроде shm.Не уверен, что это на дорожной карте, но это, безусловно, будет аккуратно.
Обновление. Похоже, что разделяемая память между процессами была добавлена в RH 2.1.2, поэтому вы должны иметь возможность обмениваться данными между совместно расположенными устройствами, службами и компонентами, используя этот механизм.Это делает вышеперечисленное ненужным, но я собираюсь оставить его для более ранних версий RH.
Дайте мне знать, если у вас есть какие-либо вопросы!