Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Contribuez
Contribuez Proposez vos tutoriels, FAQ, sources, astuces MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/06/2010, 16h11   #1
tubaas
Membre émérite
 
Avatar de tubaas
 
Homme Mathieu Martinez
Acousticien
Inscription : août 2009
Messages : 641
Détails du profil
Informations personnelles :
Nom : Homme Mathieu Martinez
Âge : 28
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Acousticien
Secteur : Industrie

Informations forums :
Inscription : août 2009
Messages : 641
Points : 864
Points : 864
Par défaut Utilité de DRAWNOW dans les fonctions de fermeture des fenêtres d'application multi-fenêtres

Bonjour,
suite à un problème rencontré je poste ce message.
L'idée est que la fermeture d'une fenêtre peut prendre un certain temps et empêcher la bonne exécution de fonctions qui devraient s'exécuter ensuite (en supposant l'appel d'une fenêtre suivi de l'attente d'une réponse).
Le cas précis dans lequel j'ai rencontré ce problème est le suivant :
lors de l'exécution du programme une nouvelle fenêtre peut être ouverte (par exemple demande de validation d'action). Une fois la réponse de l'utilisateur obtenue (clic sur OK), la fenêtre se ferme et le programme doit envoyer des données via le port série. Problème : pour quelques-unes des premières trames Matlab renvoie un 'Timeout' (normalement Matlab attend une réponse dans les 5s mais ne la voit pas).
Ce problème est éliminé en forçant le raffraîchissement graphique dans la fonction de fermeture ou avant l'envoi de trames ou à tout autre endroit adéquat.
ex dans le callback d'un bouton de validation :
Code :
1
2
delete(gcbf);
    drawnow;
ou dans le programme principal
Code :
1
2
3
choice = questdlg('Are you sure you want to delete the profile?', ...
        'Delete Profile', 'Yes', 'No', 'No');
    drawnow;
Je suppose que cela peut poser problème dans d'autres cas de figure c'est pourquoi je poste ici.
Si quelqu'un sait exactement ce que fait Matlab lors de la fermeture d'une fenêtre ou à des remarques à faire sur les problèmes de raffraîchissement graphiques, elles sont les bienvenues.
tubaas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2010, 16h24   #2
tug83
Expert Confirmé Sénior
 
Avatar de tug83
 
Homme Aurélien Queffurust
MATLAB Geek !
Inscription : juin 2006
Messages : 1 778
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Queffurust
Âge : 33
Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : MATLAB Geek !
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 1 778
Points : 4 294
Points : 4 294
Tout est résumé dans cette note technique:
How do I set up a uicontrol callback to interrupt a routine? et explique pourquoi drawnow résout ce type de problème.
Et c'est là que la propriété "Interruptible" des callbacks devient intéressante pour gérer les priorités des actions.
__________________
MATLAB 8.1 (R2013a Prerelease)

le blog des MATLAB geeks
tug83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h07.


 
 
 
 
Partenaires

Hébergement Web