exponenta event banner

FunctionPortSpecification

Запрос и конфигурирование свойств блока вызывающего абонента C

Описание

Запрос и конфигурирование определения функции блока вызывающего абонента C и возвращаемого аргумента. Программно сконфигурируйте входные аргументы блока вызывающего абонента C.

Создание

myCCallerObj = get_param(gcb, 'FunctionPortSpecification') создает объект конфигурации блока вызывающего абонента C для выбранного блока вызывающего абонента C.

Свойства

развернуть все

Отображает сопоставление ввода функции C с блоком C Caller в модели. Изменить это свойство с помощью командной строки невозможно. Для редактирования отображения функции C отредактируйте исходный код блока C Caller.

Пример: real_T add(real_T u1, real_T u2);

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

Возвращает список входных аргументов функции в объекте FuncureArgument.

Возвращает скаляр или пустой объект FureArgument.

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

Возвращает скаляр или пустой объект FureArgument.

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

FunctionArgument Объект

FunctionArgument является классом, который несет информацию о спецификации порта блока вызывающего абонента C программным путем. FunctionArgument объект имеет следующие свойства:

  1. Name - имя переменной в исходном коде, указанное как символьный вектор. Это свойство доступно только для чтения.

  2. PortNumber - Номер порта InputArgument который был отредактирован, указан как uint32. Это свойство доступно только для чтения.

  3. Size - Размер размеров порта Simulink ®, указанный как символьный вектор. Это свойство можно изменить, если оно разрешено в определении функции.

  4. Type - тип данных Simulink для указанного порта, указанного как символьный вектор. Это свойство можно изменить, если оно разрешено в определении функции.

  5. Label - метка порта в блоке Simulink, указанная как символьный вектор. Можно изменить метку порта программным путем, например:

    myCCallerObj.my_CCaller.InputArguments(1).Label = 'inputport1'
    my_CCallerObj = 
    
      FunctionPortSpecification with properties:
    
            CPrototype:  'real_T add(real_T u1, real_T u2);'
        InputArguments:  [1×2 Simulink.CustomCode.FunctionArgument]
        ReturnArgument:  [1×1 Simulink.CustomCode.FunctionArgument]
        GlobalArguments: [1×0 Simulink.CustomCode.FunctionArgument]

  6. Область - сопоставление области Simulink с входным аргументом, указанным как символьный вектор. Если переменная определена как квалификатор константы, аргументом может быть ввод или параметр. Если постоянный квалификатор не существует, можно изменить выходной аргумент на input, inputoutput, или к parameter. Если область действия соответствует любому из приведенных выше сценариев, ее можно изменить программным путем:

    my_CCallerObj.InputArguments(1).Scope = 'parameter'
    my_CCallerObj = 
    
      FunctionPortSpecification with properties:
    
            CPrototype:  'extern real_T add(real_T u1, real_T u2);'
        InputArguments:  [1×2 Simulink.CustomCode.FunctionArgument]
        ReturnArgument:  [1×1 Simulink.CustomCode.FunctionArgument]
        GlobalArguments: [1×0 Simulink.CustomCode.FunctionArgument]

Функции объекта

getGlobalArgПолучение определения объекта глобальной переменной в блоке вызывающего абонента C

Примеры

Создание объекта конфигурации вызывающего абонента C

В этом примере создается объект конфигурации вызывающего абонента C с помощью 'slexCCallerExample' демонстрационная модель.

my_CCallerObj = get_param('slexCCallerExample/C Caller','FunctionPortSpecification')
my_CCallerObj = 

  FunctionPortSpecification with properties:

        CPrototype:  'real_T add(real_T u1, real_T u2);'
    InputArguments:  [1×2 Simulink.CustomCode.FunctionArgument]
    ReturnArgument:  [1×1 Simulink.CustomCode.FunctionArgument]
    GlobalArguments: [1×0 Simulink.CustomCode.FunctionArgument]
Создать FunctionArgument объект для 1-го входного порта:
inargone = my_CCallerObj.InputArguments(1)
inargone = 

  FunctionArgument with properties:

          Name: 'u1'
    PortNumber: 1
          Size: '1'
          Type: 'double'
         Label: 'u1'
         Scope: 'Parameter'
Измените метку для первого входного порта:
inargone.Label = 'inputport1'
inargone = 

  FunctionArgument with properties:

          Name: 'u1'
    PortNumber: 1
          Size: '1'
          Type: 'double'
         Label: 'inputport1'
         Scope: 'Parameter'

Представлен в R2019b