Bonjour,
J'ai essayé de simuler le modèle simulink :
https://www.mathworks.com/matlabcent...mulink-waitbar
Je reçois l'erreur suivante:
Comment faire pour faire fonctionner le simulink-waitbar?
Bonjour,
J'ai essayé de simuler le modèle simulink :
https://www.mathworks.com/matlabcent...mulink-waitbar
Je reçois l'erreur suivante:
Comment faire pour faire fonctionner le simulink-waitbar?
salut
il suffit de rajouter la ligne suivante :
ceci afin qu'il utilise la fonction waitbar sans essayer de la compiler
Code : Sélectionner tout - Visualiser dans une fenêtre à part coder.extrinsic('waitbar')
Fabien
Merci Fabien,
coder.extrinsic déclare la fonction extrinsèque. Ça permet de tourner le modèle sans compiler la fonction 'waitbar'.
Je veux exploiter le waitbar et voir ce que ça donne comme résultat. Mais quand je lance le modèle Simulink ou bien même le fichier .m je reçois cette erreur. Je comprend pas pourquoi?
l'erreur que tu as recopié viens de là et se corrige avec la ligne que je t'ai donner
chez moi ca marche très bien !
ci dessous le code de ma fonction :
et l'implémentation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 function stop = fcn(t, tfin, NbSimu, iSimu, flagInhib) % fonction de gestion d'une waitbar sous simulink % version compatible avec les handles objets (>2014b) % egalement compatible avec la linéarisation du modèle % % création FGP le 06/03/2015 %#codegen coder.extrinsic('waitbar','close','sprintf','ishandle') % flag arrêt de la simulation sur fermeture waitbar stop = 0; % je sais pas pourquoi il faut le rajouter en plus du gain sur le signal % trigger, mais sinon on passe par là lors d'une linéarisation et ce même % lorsque le flag vaut 1 if flagInhib return end % variable persistente pour le handle de la figure waitbar %(double si version <= 2014a, objet si version >= 2014b) persistent h % création de la waitbar au d"marrage de la simulation if isempty(h) h = waitbar(0,'Please wait...','Name','Progression de la simulation'); set(h,'HandleVisibility','On'); set(h,'Tag','SimulinkWaitBar'); end % si la fenetre waitbar a été fermée, on arrête la simulation if ~ishandle(h) stop = 1; return end % progression de la waitbar progression = ((iSimu-1)*tfin + t)/(tfin*NbSimu); waitbar(progression,h,sprintf('Simulation progress = %.0f%%',100*progression)); % destruction de la waitbar en fin de simulation % destruction faite sur callback maintenant % if t>=tfin % close(h); % end
et si tu es dans une version antérieur à 2014 tu as ceci (que tu as déjà vu, c'est le même lien que le tiens)
Fabien
PS : sinon tu as une erreur de code visiblement
tu mettre ton code ici ?
Merci Fabien pour ta réponse,
le code que je veux tourner est le suivant:
le code que j'ai trouvé dans la fonction Matlab est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 h = waitbar(0,'Please wait...'); End_Time = 1000; myoptions = simset('SrcWorkspace','current','DstWorkspace','current','FixedStep', 0.1); sim('model',End_Time,myoptions) coder.extrinsic('waitbar')
Le modèle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function y = fcn(u1, u2) % This block supports an embeddable subset of the MATLAB language. % See the help menu for details. waitbar(u1/u2) y = 1;
J'ai rien changé par rapport à ce que j'ai trouvé sur le lien :
https://www.mathworks.com/matlabcent...mulink-waitbar
et pourtant je reçois l'erreur. Je veux visualiser les résultats avant d'adapter le code à ce que je veux.
salut
coder.extrinsic doit être utilisé dans la matlab function
dans ton script principal il n'a aucun effet
essayes :
en déclarant h comme paramètre de ta matlab function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function y = fcn(u1, u2, h) % This block supports an embeddable subset of the MATLAB language. % See the help menu for details. %#codegen coder.extrinsic('waitbar'); waitbar(u1/u2, h) y = 1;
(le but est que le waitbar appelé par le simulink soit le même que celui déclaré dans ton script principal : du coup on utilise le handle h)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager