Доступ к пользовательскому коду С в нелибральных графиках

Вы можете интегрировать пользовательский код, написанный на C или C++ с Stateflow® графики в Simulink® модели. Путем обмена данными и функциями между вашим пользовательским кодом и диаграммой Stateflow, можно расширить возможности Stateflow и использовать программное обеспечение, чтобы использовать преимущества вашего ранее существующего кода. Для получения дополнительной информации смотрите Повторно использовать Пользовательский код в Диаграммах Stateflow.

Задача 1: Включите пользовательский код С в цель симуляции

Задайте пользовательские опции кода в цели симуляции для вашей модели:

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).

  2. В диалоговом окне Model Configuration Parameters выберите панель Simulation Target.

    Отображаются опции пользовательского кода.

  3. Укажите свой пользовательский код в подпанелях.

    Следуйте инструкциям в разделе «Задание относительных путей к пользовательскому коду».

    • Source file - Вводите линии кода для включения в верхнюю часть сгенерированного файла исходного кода. Эти кодовые линии появляются в верхней части сгенерированной model.c исходный файл, вне любой функции.

      Для примера можно включать extern int объявления для глобальных переменных.

    • Header file - Введите линии кода для включения в верхнюю часть сгенерированной model.h заголовочный файл, который объявляет пользовательские функции и данные в сгенерированном коде. Эти линии кода появляются в верхней части всех сгенерированных файлов исходного кода и видны всему сгенерированному коду.

      Примечание

      Когда вы включаете пользовательский файл заголовка, необходимо заключить имя файла в двойные кавычки. Для примера, #include ''sample_header.h'' является допустимым объявлением для пользовательского файла заголовка.

      Поскольку код, указанный в этой опции, появляется в нескольких исходных файлах, которые связываются в один двоичный файл, существуют ограничения на то, что вы можете включить. Например, не включать глобальное определение переменной, такое как int x; или тело функции, такое как

      void myfun(void)
      {
      ...
      }
      

      Эти кодовые линии вызывают ошибки связывания, потому что их определения символов появляются несколько раз в исходных файлах сгенерированного кода. Однако можно включать extern объявления переменных или функций, таких как extern int x; или extern void myfun(void);.

    • Initialize function - Вводите операторы кода, которые выполняются один раз в начале симуляции. Используйте этот код для активации функций, которые выделяют память или выполняют другие инициализации вашего пользовательского кода.

    • Terminate function - Вводите операторы кода, которые выполняются в конце симуляции. Используйте этот код для вызова функций, которые освобождают память, выделенную пользовательским кодом, или выполняют другие задачи очистки.

    • Include directories - Введите разделенный пробелом список путей к папкам, содержащих пользовательские файлы заголовков, которые вы включаете непосредственно (см. Header file опцию) или косвенно в скомпилированный целевой объект.

    • Source files - Введите список исходных файлов для компиляции и связи с целевым объектом. Можно разделить исходные файлы запятыми, пространством или новой линией.

    • Libraries - Введите разделенный пробелом список статических библиотек, которые содержат пользовательский объектный код, чтобы связать его с целевым объектом.

  4. Нажмите OK.

Задача 2: Моделируйте модель

Симулируйте модель, нажав кнопку воспроизведения на панели инструментов редактора.

Для получения информации об установке опций симуляции с помощью API командной строки, смотрите Command-Line API, чтобы Задать параметры симуляции и генерации кода.

Похожие темы