Получите указатель на выходной сигнал типа double (real_T)
real_T *ssGetOutputPortRealSignal(SimStruct *S, int_T port)
SSimStruct, представляющий Блок s-function.
портИндекс выходного порта.
Непрерывный вектор real_T длины равняется ширине выходного порта.
Используйте в любой стандартной программе цикла моделирования, mdlInitializeConditions или mdlStart, чтобы получить доступ к сигналу выходного порта, где индекс выходного порта запускается в 0 и должен быть меньше, чем количество выходных портов.
Вы не можете использовать ssGetOutputPortRealSignal нигде кроме mdlOutputs, если вы указали, что выходные порты являются допускающим повторное использование использованием . Например, если выходные параметры были заданы как допускающие повторное использование с флагом ssSetOutputPortOptimOptsSS_REUSABLE_AND_LOCAL, ошибки стандартной программы mdlUpdate, когда он пытается получить доступ к выводу memory, который недоступен.
C, C++
Чтобы записать во все выходные порты, вы использовали бы
int_T i,j;
int_T nOutputPorts = ssGetNumOutputPorts(S);
for (i = 0; i < nOutputPorts; i++) {
real_T *y = ssGetOutputPortRealSignal(S,i);
int_T ny = ssGetOutputPortWidth(S,i);
for (j = 0; j < ny; j++) {
y[j] = SomeFunctionToFillInOutput();
}
}
Смотрите S-функцию sfun_atol.c, используемый в sfcndemo_sfun_atol для полного примера, который использует эту функцию.