Как я могу запустить программу C++ как блок Simulink?

Я запрограммировал сокет UDP на C++, чтобы получить строку из другой программы. Теперь мне нужно использовать данные в проекте Simulink. Я попробовал блок UDP-приемника в Simulink, но не могу отделить строку данных, поэтому я предпочитаю запускать свой UDP-сокет (на C++) как блок в Simulink. Я знаю, что мне следует использовать S-функцию, но я не знаю, как это сделать и есть ли другая возможность.


person Tapia    schedule 16.04.2012    source источник
comment
Какая у вас проблема с выводом блока приемника Simulink UDP? Это может быть легче решить, чем создавать собственную S-функцию, особенно если вы не знакомы с написанием S-функций.   -  person Praetorian    schedule 17.04.2012
comment
После блока приемника UDP я помещаю блок декодера ASCII. Я отправляю X:3.14 Y:55 и после декодера ASCII получаю (в блоке Display) 00301400055. Одним из решений может быть способ различать буквы, символы и разделять их как переменные.   -  person Tapia    schedule 17.04.2012
comment
Я никогда не использовал наборы инструментов xPC Target и/или Instrument Control, поэтому не могу помочь вам с деталями, но не можете ли вы передать вывод блока UDP в функциональный блок MATLAB и проанализировать данные? Если вас не волнует генерация кода из модели, синтаксический анализ можно легко выполнить с помощью регулярных выражений.   -  person Praetorian    schedule 17.04.2012


Ответы (1)


Существует функция под названием Legacy Code Tool, которая должна делать то, что вам нужно. По сути, это упрощает процесс определения пользовательских блоков S-функции Simulink при использовании существующих C/C++. Кажется, я помню, что есть несколько ограничений при использовании C++ вместо C, но я не думаю, что они слишком значительны...

person BigA    schedule 20.08.2012