How can I import structures from C and use them as bus elements in a .sldd dictionnary?
19 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
François Lemire
le 2 Août 2023
Commenté : François Lemire
le 1 Sep 2023
Hi,
I would like to import structures from a C header and then export them in a .sldd dictionnary linked to a static library, and use them as bus elements in custom busses used in the library.
I have used Simulink.importExternalCTypes to import the structures into my workspace without issue. I then opened my dictionnary through Simulink.data.dictionary.open and exported my structures into the dictionnary with importFromBaseWorkspace before closing the dictionnary with Simulink.data.dictionary.close, and everything went fine. I can see my structures imported as busses in the dictionnary, I can use them and use my custom busses in my library.
However, once I tried to add my imported structure as a bus element to a custom bus in my dictionnary, I had a lot of compilation errors which I do not understand. Moreover, the bus editor won't let me save my dictionnary when I try to remove the bus element which causes the issue, which means the bus element comes back when I refresh the editor.
Please find below a screenshot of the compilation errors
Is there a way to export those structures and use them as bus editors? If not, what alternatives do I have to get a similar result? I would like for it all to be static and usable directly in a static library, without having to import all of it in my workspace everytime I want to work on my library
Thank you in advance.
0 commentaires
Réponse acceptée
Suman Sahu
le 24 Août 2023
Hi François,
You want to import structures from a C header file and then export them to a SLDD dictionary. Instead of first importing the structures from C header file into the workspace and then exporting it to a SLDD dictionary, you can try to directly import the structures as a “Simulink.Bus” type into a SLDD dictionary. Here is an example code for how you can achieve that:
Consider an example C header file named “struct.h” containing the following struct:
typedef struct {
double coeff;
double init;
} params_T;
Simulink.importExternalCTypes(‘struct.h’, ‘DataDictionary’, ‘dict_name.sldd’, ‘OutputDir’, ‘dir_for_sldd_file’);
This will directly export the struct from C header into the specified SLDD dictionary inside the specified directory.
You can refer to the following documentations to learn more about “Simulink.importExternalCTypes” function and adding bus elements to bus objects:
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Simulink Functions dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!