Bonjour à tous,
j'ai écrit un code C permettant l'acquisition et l'envoi de données d'une carte d'E/S connectée sur un port PCIe de mon ordinateur. Le constructeur de cette carte m'a fourni une librairie qui m'a permis d'utiliser des fonctions toutes faites, pour aller "taper" dans le driver de cette carte.
Ce code C est maintenant fonctionnel, il réalise ce que je souhaite.
Maintenant, pour les besoins du projet sur lequel je travaille, ce code doit être exécuté dans Simulink. C'est donc tout naturellement que je me tourne vers une S-function, pour pouvoir intégrer du code C.
N'étant pas du tout familier avec les S-function, on peut dire que j'ai beaucoup de mal à comprendre les mécanismes et le fonctionnement de la structure d'un code C d'une S-function (mdlInitializeSizes, mdlInitializeSampleTimes, mdlOutputs... etc.). Par exemple, je ne comprends pas où je dois initialiser mes variables ? Dans quelle fonction faut-il faire ça ?
Dans mon code C initial, il y a une fonction main qui lance l'exécution d'un thread, qui lui-même exécute une boucle s'exécutant périodiquement (toutes les secondes). Ben, je ne vois pas DU TOUT comment intégrer cela dans une S-function
Bref n'étant pas du tout à l'aise, en cherchant dans la documentation de Matlab, une solution de facilité semble correspondre à mon besoin : la fonction legacy_code qui, d'après ce que j'ai compris, permet de transformer un code C existant directement en code C utilisable par une S-function.
Que pensez-vous de cet utilitaire, réalisant les choses à notre place ? L'idée est quand même de comprendre comment fonctionne une S-function. J'ai peur qu'après coup, je ne sois pas capable de bien m'y retrouver là-dedans.
Merci de vos conseils
Partager