⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pt_print.c

📁 simulink real-time workshop for dragon12 development board from
💻 C
📖 第 1 页 / 共 3 页
字号:
      /* print each instance to standard output */
      for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
          int16_T *param = (int16_T *)(pMap[mapOffset + paramIdx]);
          
          switch( ptinfoGetClass(ptRec) ) {
            case rt_SCALAR:
              printf("Scalar (instance %d):\n", paramIdx);
              printf("\t%hi\n", (int_T)*param);
              break;
              
            case rt_VECTOR:
              printf("Column Vector[%d] (instance %d):\n", nCols, paramIdx);
              for(colIdx = 0; colIdx < nCols; colIdx++) {
                  printf("\t%d: %hi\n", colIdx, (int_T)param[colIdx]);
              }
              break;
              
            case rt_MATRIX_ROW_MAJOR:
              printf("Matrix[%d][%d] (row major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%hi", (int_T)param[rowIdx*nCols + colIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            case rt_MATRIX_COL_MAJOR:
              printf("Matrix[%d][%d] (column major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%hi", (int_T)param[colIdx*nRows + rowIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            default:
              return(1);
          }
          /* set the parameter to itself (to test rt_ModifyParameter) */
          if(rt_ModifyParameter(mpi, ptRec, (void *)param)) {
              fprintf(stderr, "Problem with rt_ModifyParameter\n");
              return(1);
          }
      }
      break;
    case SS_UINT16:
      /* print each instance to standard output */
      for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
          uint16_T *param = (uint16_T *)(pMap[mapOffset + paramIdx]);
          
          switch( ptinfoGetClass(ptRec) ) {
            case rt_SCALAR:
              printf("Scalar (instance %d):\n", paramIdx);
              printf("\t%hu\n", (int_T)*param);
              break;
              
            case rt_VECTOR:
              printf("Column Vector[%d] (instance %d):\n", nCols, paramIdx);
              for(colIdx = 0; colIdx < nCols; colIdx++) {
                  printf("\t%d: %hu\n", colIdx, (int_T)param[colIdx]);
              }
              break;
              
            case rt_MATRIX_ROW_MAJOR:
              printf("Matrix[%d][%d] (row major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%hu", (int_T)param[rowIdx*nCols + colIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            case rt_MATRIX_COL_MAJOR:
              printf("Matrix[%d][%d] (column major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%hu", (int_T)param[colIdx*nRows + rowIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            default:
              return(1);
          }
          /* set the parameter to itself (to test rt_ModifyParameter) */
          if(rt_ModifyParameter(mpi, ptRec, (void *)param)) {
              fprintf(stderr, "Problem with rt_ModifyParameter\n");
              return(1);
          }
      }
      break;
    case SS_INT32:
      /* print each instance to standard output */
      for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
          int32_T *param = (int32_T *)(pMap[mapOffset + paramIdx]);
          
          switch( ptinfoGetClass(ptRec) ) {
            case rt_SCALAR:
              printf("Scalar (instance %d):\n", paramIdx);
              printf("\t%i\n", *param);
              break;
              
            case rt_VECTOR:
              printf("Column Vector[%d] (instance %d):\n", nCols, paramIdx);
              for(colIdx = 0; colIdx < nCols; colIdx++) {
                  printf("\t%d: %i\n", colIdx, param[colIdx]);
              }
              break;
              
            case rt_MATRIX_ROW_MAJOR:
              printf("Matrix[%d][%d] (row major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%i", param[rowIdx*nCols + colIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            case rt_MATRIX_COL_MAJOR:
              printf("Matrix[%d][%d] (column major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%i", param[colIdx*nRows + rowIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            default:
              return(1);
          }
          /* set the parameter to itself (to test rt_ModifyParameter) */
          if(rt_ModifyParameter(mpi, ptRec, (void *)param)) {
              fprintf(stderr, "Problem with rt_ModifyParameter\n");
              return(1);
          }
      }
      break;
    case SS_UINT32:
      /* print each instance to standard output */
      for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
          uint32_T *param = (uint32_T *)(pMap[mapOffset + paramIdx]);
          
          switch( ptinfoGetClass(ptRec) ) {
            case rt_SCALAR:
              printf("Scalar (instance %d):\n", paramIdx);
              printf("\t%u\n", *param);
              break;
              
            case rt_VECTOR:
              printf("Column Vector[%d] (instance %d):\n", nCols, paramIdx);
              for(colIdx = 0; colIdx < nCols; colIdx++) {
                  printf("\t%d: %u\n", colIdx, param[colIdx]);
              }
              break;
              
            case rt_MATRIX_ROW_MAJOR:
              printf("Matrix[%d][%d] (row major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%u", param[rowIdx*nCols + colIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            case rt_MATRIX_COL_MAJOR:
              printf("Matrix[%d][%d] (column major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%u", param[colIdx*nRows + rowIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            default:
              return(1);
          }
          /* set the parameter to itself (to test rt_ModifyParameter) */
          if(rt_ModifyParameter(mpi, ptRec, (void *)param)) {
              fprintf(stderr, "Problem with rt_ModifyParameter\n");
              return(1);
          }
      }
      break;
    case SS_BOOLEAN:
      /* print each instance to standard output */
      for(paramIdx = 0; paramIdx < nParams; paramIdx++) {
          boolean_T *param = (boolean_T *)(pMap[mapOffset + paramIdx]);
          
          switch( ptinfoGetClass(ptRec) ) {
            case rt_SCALAR:
              printf("Scalar (instance %d):\n", paramIdx);
              printf("\t%hu\n", (int_T)*param);
              break;
              
            case rt_VECTOR:
              printf("Column Vector[%d] (instance %d):\n", nCols, paramIdx);
              for(colIdx = 0; colIdx < nCols; colIdx++) {
                  printf("\t%d: %hu\n", colIdx, (int_T)param[colIdx]);
              }
              break;
              
            case rt_MATRIX_ROW_MAJOR:
              printf("Matrix[%d][%d] (row major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%hu", (int_T)param[rowIdx*nCols + colIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            case rt_MATRIX_COL_MAJOR:
              printf("Matrix[%d][%d] (column major, instance %d):\n", nRows, nCols, paramIdx);
              for(rowIdx = 0; rowIdx < nRows; rowIdx++) {
                  printf("\trow %d:", rowIdx);
                  for(colIdx = 0; colIdx < nCols; colIdx++) {
                      printf("\t%hu", (int_T)param[colIdx*nRows + rowIdx]);
                  }
                  putchar('\n');
              }
              break;
              
            default:
              return(1);
          }
          /* set the parameter to itself (to test rt_ModifyParameter) */
          if(rt_ModifyParameter(mpi, ptRec, (void *)param)) {
              fprintf(stderr, "Problem with rt_ModifyParameter\n");
              return(1);
          }
      }
      break;

    default:
      /* unknown data type */
      return(1);
  }
  return(0);
}

/* =============================================================================
 * Function:
 *   rt_PrintParamInfo
 *
 * Abstract:
 *   This function prints the tunable parameters to standard output.  For
 *   modifiable block parameters the printed information is
 *
 *       o block name
 *       o parameter name
 *       o parameter type
 *       o value
 *
 *   For the modifiable variables the information is
 *
 *       o variable name
 *       o parameter type
 *       o value of each instance
 */
 
void rt_PrintParamInfo(void *mpi)
{
    uint_T i;
    
    ModelMappingInfo *mmi  = (ModelMappingInfo *)mpi;
    
    uint_T nBlockParams = mmiGetNumBlockParams(mmi);
    uint_T nVarParams   = mmiGetNumVariableParams(mmi);
    
    /* block parameters */
    if (nBlockParams == 0) {
        printf("No block parameters in model.\n");
    } else {
        printf("Modifiable block parameters:\n\n");
        for (i = 0; i < nBlockParams; i++) {
            const char_T *bName = mmiGetBlockTuningBlockName(mmi,i);
            const char_T *pName = mmiGetBlockTuningParamName(mmi,i);
            printf("Block: %s\n", bName);
            printf("Parameter: %s\n", pName);
            if (rt_PrintPTRec(mpi, (ParameterTuning*)mmiGetBlockTuningParamInfo(mmi,i))) {
                fprintf(stderr, "Error printing parameter info: %s (%s)\n", bName,pName);
            }
            putchar('\n');
        }
    }
    
    /* variable parameters */
    if (nVarParams == 0) {
        printf("No tunable MATLAB variables in model\n");
    } else {
        printf("Modifiable variables:\n\n");
        for (i = 0; i < nVarParams; i++) {
            const char_T *varName = mmiGetVariableTuningVarName(mmi,i);
            printf("Variable: %s\n", varName);
            if (rt_PrintPTRec(mpi, (ParameterTuning*)mmiGetVariableTuningVarInfo(mmi,i))) {
                fprintf(stderr, "Error printing variable info: %s\n",varName);
            }
            putchar('\n');
        }
    }

}

#endif  /* __PT_PRINT__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -