Matlab/Simulink S-Function : Comment obtenir le chemin complet du bloc de l'S-function
Dans Matlab/Simulink, vous pouvez obtenir le chemin complet du bloc d’une S-function en utilisant ssGetPath().
ssgetpath_example.c
// Récupérer le chemin du bloc
const char* blockPath = ssGetPath(S);
// Journaliser le chemin du bloc
fprintf(stderr, "The full path of the block is: %s\n", blockPath);Exemple complet
Cet exemple utilise une S-Function sans aucune entrée ni sortie qui imprime le chemin complet du bloc dans la ligne de commande pendant mdlStart().
sfunction_full_example.c
#define S_FUNCTION_NAME BlockName
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Function: mdlInitializeSizes ==============================================
static void mdlInitializeSizes(SimStruct *S) {
ssSetNumSFcnParams(S, 0); // Pas de paramètres
if (!ssSetNumInputPorts(S, 0)) return;
if (!ssSetNumOutputPorts(S, 0)) return;
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, 0);
}
#define MDL_START
static void mdlStart(SimStruct *S) {
// Récupérer le chemin du bloc
const char* blockPath = ssGetPath(S);
// Journaliser ou utiliser le chemin du bloc
fprintf(stderr, "The full path of the block is: %s\n", blockPath);
}
// Function: mdlInitializeSampleTimes =========================================
static void mdlInitializeSampleTimes(SimStruct *S) {
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
}
// Function: mdlOutputs ======================================================
static void mdlOutputs(SimStruct *S, int_T tid) {
}
// Function: mdlTerminate ====================================================
static void mdlTerminate(SimStruct *S) {
// Aucune tâche de terminaison requise
}
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // Mécanisme d'interface de fichier MEX
#else
#include "cg_sfun.h" // Fonction d'enregistrement de génération de code
#endifAjoutez ceci comme n’importe quelle S-Function normale (souvenez-vous qu’elle n’a pas d’entrées ni de sorties donc placez-la n’importe où dans le modèle)
Exemple de sortie :
ssgetpath_example_output.txt
The full path of the block is: MySimulinkModel/MySubsystem/TheSFunctionCheck out similar posts by category:
Matlab/Simulink, C/C++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow