Запись Выхода значения

Предположим, что вам нужно записать значение выхода сигнала в выход порт в вашей S-функции. Необходимо записать код так, чтобы указатель на выход значение был правильно введен. Для этого можно использовать следующие шаги, которые приведены в коде примера ниже:

  1. Создайте пустой указатель на значение выходного сигнала.

  2. Получите идентификатор типа данных порта выхода используя ssGetOutputPortDataType.

  3. Используйте идентификатор типа данных, чтобы получить тип контейнера памяти выхода.

  4. Иметь регистр для каждого типа выходного контейнера хранения, который необходимо обработать. В каждом случае вам потребуется выполнить следующее каким-либо образом:

    • Создайте указатель правильного типа в соответствии с контейнером хранилища и приведите исходный указатель на пустое поле в новый полностью введенный указатель (см. a и c).

    • Теперь можно записать значение, разыменовав новый, полностью набранный указатель мыши (см. b и d).

Для примера,

static void mdlOutputs(SimStruct *S, int_T tid)
{
    <snip>

    void *pVoidOut = ssGetOutputPortSignal( S, 0 ); (1)

    DTypeId dataTypeIdY0 = ssGetOutputPortDataType( S, 0 ); (2)
      
    fxpStorageContainerCategory storageContainerY0 =
					ssGetDataTypeStorageContainCat( S, 
					dataTypeIdY0 ); (3)

    switch ( storageContainerY0 )
    {
      case FXP_STORAGE_UINT8: (4)
        {
            const uint8_T *pU8_Properly_Typed_Pointer_To_Y0; (a)

            uint8_T u8_Stored_Integer_Y0; (b)

          <snip: code that puts the desired output stored integer
				value in to temporary variable u8_Stored_Integer_Y0>
					
            pU8_Properly_Typed_Pointer_To_Y0 = 
					(const uint8_T  *)pVoidOut; (c)

            *pU8_Properly_Typed_Pointer_To_Y0 = 
					u8_Stored_Integer_Y0; (d)
            
        }
        break;

      case FXP_STORAGE_INT8: (4)
        {
            const int8_T *pS8_Properly_Typed_Pointer_To_Y0; (a)

            int8_T s8_Stored_Integer_Y0; (b)

          <snip: code that puts the desired output stored integer
				value in to temporary variable s8_Stored_Integer_Y0>
					
            pS8_Properly_Typed_Pointer_To_Y0 = 
					(const int8_T  *)pVoidY0; (c)

            *pS8_Properly_Typed_Pointer_To_Y0 = 
					s8_Stored_Integer_Y0; (d)
            
        }
        break;

    <snip>

Похожие темы