Simulink.CodeImporter class

Пакет: Simulink

Импорт пользовательского кода C/C + + в Simulink

Описание

Используйте Simulink.CodeImporter класс для импорта пользовательского кода C/C + + в Simulink® для моделирования, верификации и валидации. Образцы этого класса используются для задания пользовательского кода для импорта в Simulink.

Класс включает следующие методы:

  • save - Сохраните настройки импорта в текстовый файл формата JSON

  • load - Загрузка параметров импорта из сохраненного файла параметров импорта

The Simulink.CodeImporter класс является handle класс.

Создание

Описание

obj = Simulink.CodeImporter() создает образец CodeImporter с LibraryFileName значение свойства установлено в "untitled".

obj = Simulink.CodeImporter(LibName), где LibName - имя файла, выбранное пользователем и заданное как строковый или символьный вектор, создает образец CodeImporter с LibraryFileName значение свойства установлено в LibName.

Свойства

расширить все

Имя файла библиотеки Simulink и сгенерированные программные продукты, созданные для импортированного кода, заданные как строка или вектор символов. Имя должно быть допустимым MATLAB® имя переменной. То же имя файла используется с различными расширениями для словаря данных и других программных продуктов, сгенерированных при импорте кода.

Пример: "pumpController"

Типы данных: string | character vector

Расположение сгенерированного файла библиотеки и сгенерированных программных продуктов в виде строки или вектора символов. Если оно не заполнено, используется текущая папка MATLAB.

Расположения файлов, являющиеся частью CustomCode свойство может быть задано относительно этой папки.

Пример: "C:\HeatPump\Controller"

Типы данных: string | character vector

Файлы кода C or C++ и связанные свойства для импорта, заданные как объект класса Simulink.CodeImporter.CustomCode. Используйте это свойство для задания опций импорта кода, таких как исходные файлы и файлы заголовков, пути к папкам, библиотеки и флаги компилятора и линкера. Для получения дополнительной информации смотрите Simulink.CodeImporter.CustomCode.

%% Create code importer object
obj = Simulink.CodeImporter;

%% Set the custom code to import
obj.CustomCode.InterfaceHeaders = ["pumpController.h"];
obj.CustomCode.IncludePaths = ["./include"];
obj.CustomCode.SourceFiles = ["src/pumpController.c" "src/utils.c"];
obj.CustomCode
ans = 

  CustomCode with properties:

                SourceFiles: ["src/pumpController.c"    "src/utils.c"]
           InterfaceHeaders: "pumpController.h"
               IncludePaths: "./include"
                  Libraries: [1×0 string]
                    Defines: [1×0 string]
                   Language: "C"
              CompilerFlags: [1×0 string]
                LinkerFlags: [1×0 string]
    GlobalVariableInterface: 0
        FunctionArrayLayout: NotSpecified

Информация о проанализированном пользовательском коде, заданная как объект класса Simulink.CodeImporter.ParseInfo. Это свойство доступно только для чтения. Чтобы получить информацию о пользовательском коде, синтаксический анализ должен быть успешным. Для получения дополнительной информации смотрите Simulink.CodeImporter.ParseInfo.

Пример:

s = obj.parse;
obj.ParseInfo
ans = 

  ParseInfo with properties:

               Success: 1
    AvailableFunctions: ["Controller"    "setFanTempThreshold"    "setPumpTempThreshold"]
        EntryFunctions: ["Controller"    "setFanTempThreshold"    "setPumpTempThreshold"]
        AvailableTypes: "pump_control_bus"
                Errors: []

Дополнительные опции, используемые Code Importer во время импорта для создания библиотеки, заданные как объект класса Simulink.CodeImporter.Options. Используйте этот объект, чтобы изменить значения по умолчанию для размера аргумента, переданного указателем на функцию, и имя браузера библиотеки Simulink. Для получения дополнительной информации смотрите Simulink.CodeImporter.Options.

Пример:

>> obj.Options
ans = 

  Options with properties:

    PassByPointerDefaultSize: "-1"
           CreateTestHarness: 0
          LibraryBrowserName: ""
>> obj.Options.LibraryBrowserName = "Controller Library";
>> obj.Options
ans = 

  Options with properties:

    PassByPointerDefaultSize: "-1"
           CreateTestHarness: 0
          LibraryBrowserName: "Controller Library"

Методы

расширить все

Примеры

Импорт пользовательского кода

Укажите местоположение и опции для пользовательского кода.

%% Create code importer object
obj = Simulink.CodeImporter('PumpController');

%% Set the custom code to import
obj.CustomCode.InterfaceHeaders = ["pumpController.h"];
obj.CustomCode.IncludePaths = ["./include"];
obj.CustomCode.SourceFiles = ["src/pumpController.c" "src/utils.c"];

%% Specify name for Library Browser
obj.Options.LibraryBrowserName = "Controller Library";

Проанализируйте пользовательский код и исследуйте результаты.

%% Parse custom code
s = obj.parse;
obj.ParseInfo
ans = 

  ParseInfo with properties:

               Success: 1
    AvailableFunctions: ["Controller"    "setFanTempThreshold"    "setPumpTempThreshold"]
        EntryFunctions: ["Controller"    "setFanTempThreshold"    "setPumpTempThreshold"]
        AvailableTypes: "pump_control_bus"
                Errors: []

Импорт проанализированного кода в Simulink

%% Import code
s = obj.import;
Введенный в R2021a