Получите вектор элементов сигнала, излучаемых портом выхода
void *ssGetOutputPortSignal(SimStruct *S, int_T port)
S
SimStruct, представляющий блок S-Function.
port
Индекс выходного порта.
Указатель (void *
) к вектору элементов сигнала, выводимых на порт, заданный индексом port
.
Используйте в любой стандартной программе цикла симуляции, mdlInitializeConditions
, или mdlStart
получение вектора сигнальных элементов, излучаемых портом выхода.
Примечание
Если вы указали, что выходные порты переиспользуются
, тогда вы не можете использовать ssSetOutputPortOptimOpts
ssGetOutputPortSignal
где угодно, кроме mdlOutputs
. Для примера, если выходы были заданы как переиспользуемые со SS_REUSABLE_AND_LOCAL
флаг, mdlUpdate
обычные ошибки, поскольку он пытается получить доступ к недоступной выходной памяти.
Примечание
Если порт выводит сигнал типа double
(real_T
), использовать ssGetOutputPortRealSignal
чтобы получить вектор сигнала и избежать необходимости вводить выход ssGetOutputPortSignal
.
C, C++
Предположим, что типы данных выходного порта int16_T
.
nOutputPorts = ssGetNumOutputPorts(S); for (i = 0; i < nOutputPorts; i++) { int16_T *y = (int16_T *)ssGetOutputPortSignal(S,i); int_T ny = ssGetOutputPortWidth(S,i); for (j = 0; j < ny; j++) { SomeFunctionToFillInOutput(y[j]); } }
Смотрите S-функцию sfun_port_constant.c
используется в sfcndemo_port_constant
для полного примера, который использует эту функцию.