Simulink.CodeImporter.Function class

Пакет: Simulink .CodeImporter

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

Описание

Получите подробную информацию о проанализированных функциях пользовательского кода, полученных из Simulink.CodeImporter или sltest.CodeImporter образец класса. Сконфигурируйте информацию о функциях пользовательского кода для импорта в Simulink®.

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

Создание

Один или несколько объектов этого класса создаются автоматически при вызове getFunctions метод объекта класса Simuink.CodeImporter.ParseInfo. A Simulink.CodeImporter.Function создается для каждой функции в проанализированном пользовательском коде, для которого getFunctions вызывается. Не создавать объект класса Simulink.CodeImporter.Function непосредственно.

Свойства

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

Имя функции, возвращаемое как строковый скаляр.

Пример: "Controller"

Типы данных: string scalar

Прототип C для функции, возвращенный как строковый скаляр.

Пример: "pump_control_bus Controller(real_T Tset, real_T Troom_in);"

Типы данных: string scalar

Спецификация порта функции, заданная как объект класса Simulink.CodeImporter.SimulinkPortSpecification.

Является ли функция функцией точки входа, возвращается как логический скаляр. Функция точки входа не вызывается другими функциями в пользовательском коде.

Задана ли функция, возвращается как логический скаляр. Этот скаляр указывает, содержит ли пользовательский код тело функции, определяющее функцию в дополнение к прототипу функции, заданному в заголовке.

Является ли функция детерминированной, задается как логический скаляр. Детерминированная функция всегда производит те же выходы для тех же входных значений. Установка функции как детерминированной позволяет использовать соответствующий C Caller блок в подсистеме For Each и с непрерывным шагом расчета, и оптимизирует использование блока в выполнении условной входной ветви. См. Детерминированные функции.

Является ли функция упорной, возвращается как логический скаляр. Этот скаляр указывает, был ли для модульного теста сгенерирован заглушка для неопределенных символов для функции (Simulink Test™ требуется лицензия).

Размещение массива для функции, возвращенный как NotSpecified, ColumnMajor, RowMajor, или Any. Если NotSpecified, затем настройка по умолчанию для пользовательского кода, заданная в FunctionArrayLayout свойство соответствующего SimulinkCode.CustomCode используется объект. В противном случае значение, заданное для функции, переопределяет значение по умолчанию.

Типы данных: enum

Методы

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

Примеры

свернуть все

Задайте и проанализируйте пользовательский код, а затем запросите информацию о функциях пользовательского кода.

obj = Simulink.CodeImporter;

%% Set library file name and output folder
obj.LibraryFileName = "pumpController";
obj.OutputFolder = ".";

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

%% Parse code
obj.parse;
parseobj = obj.ParseInfo
ans = 

  ParseInfo with properties:

               Success: 1
    AvailableFunctions: ["Controller"    "setFanTempThreshold"    "setPumpTempThreshold"]
        EntryFunctions: ["Controller"    "setFanTempThreshold"    "setPumpTempThreshold"]
        AvailableTypes: "pump_control_bus"
                Errors: []
fcnobj = parseobj.getFunctions(["Controller"])
fcnobj = 

  Function with properties:

                 Name: "Controller"
           CPrototype: "pump_control_bus Controller(real_T Tset, real_T Troom_in);"
    PortSpecification: [1×1 Simulink.CodeImporter.SimulinkPortSpecification]
              IsEntry: 1
            IsDefined: 1
               IsStub: 0
          ArrayLayout: NotSpecified
      IsDeterministic: 0

Введенный в R2021a