exponenta event banner

Класс Simulink.CodeImporter.Function

Пакет: Simulink.CodeImporter

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

Описание

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

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 в подсистеме 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