8
votes

Comment savoir si Matlab est occupé lorsque vous utilisez Guis?

J'ai créé une petite interface graphique pour manipuler des données et j'ai récemment décidé de déplacer la base de données sur un serveur MySQL. J'ai créé un programme Java pour apporter les données d'avant en avant et j'ai commencé à remarquer le retard lorsque vous accédez aux serveurs à l'étranger.

Lorsque vous exécutez des scripts via la fenêtre de commande MATLAB affiche un texte "occupé" dans le coin inférieur gauche mais pas quand Je couronne des gites.

Alors, comment puis-je savoir si Matlab est occupé lorsque vous utilisez Guis?

Merci d'avance.

EDIT: Exemple rapide.

i Exécutez dans la fenêtre de commande (ou un test de script.m) xxx

le statut La barre dit "occupé".

Lorsque je crée une interface graphique, avec le bouton "Cliquez sur moi" qui exécute le même script exact. Le signe occupé sur la barre d'état n'apparaît pas.

Pourquoi est-ce et que puis-je faire à ce sujet? Je veux pouvoir voir si mon interface graphique est occupée ou non.


1 commentaires

Plutôt que de compter sur le signe occupé dans l'IDE principal, ne pouvez-vous pas implémenter une sorte de barre d'attente ou imprimer votre propre message de progression à l'invite de commande. Ces deux idées sont dicussies ici .


6 Réponses :


4
votes

Il le dit dans la barre d'état de la fenêtre principale!

EDIT:
Donc, la réponse est non, à l'heure actuelle, il n'y a aucun moyen de dire (facilement) si Matlab est occupé à faire quelque chose d'autre qu'un travail de ligne de commande.


5 commentaires

Cela peut être une version dépendante, mais pourquoi avez-vous besoin de savoir cela, je veux dire que je comprends que ce serait très gentil mais cela fait quelque chose de dysfonctionnement?


Non, je voulais juste vous demander s'il y avait un moyen simple de brancher à ce message "occupé" dans la fenêtre principale. Il faut quelques secondes pour récupérer des «grandes» quantités de données, 10 000x10 matrices lorsque le serveur n'est pas à votre porte. Cela rendrait l'interface graphique plus conviviale. L'interface graphique ignore les commandes quand elle est occupée, donc ce n'est pas un gros problème du tout. Merci pour votre réponse.


Pour moi, j'ai des problèmes beaucoup plus ennuyeux avec Matlab que j'ai tendance à ignorer automatiquement ces problèmes plus petits. Nous utilisons MATLAB sur Mac et Windows et Windows et Linux, les guies apparaissent différemment sur chaque plate-forme (c'est une interface utilisateur occupée avec de nombreuses petites cases et ...). Sur Lion, il se bloque tout le temps. Il existe des problèmes ennuyeux avec la boîte à outils PROC parallèle, avec une boîte à outils de conception de filtre ... Un jour où je suis le patron! Je sortirais de Matlab à Python + Sciples ...


Blaming Matlab pour différents guis à la recherche sur différentes plates-formes n'est pas une plainte légitime: c'est une question du système d'exploitation. Si vous avez posté vos problèmes avec les boîtes à outils de conception parallèle et de filtre, vous obtiendrez peut-être des solutions utiles.


C'est une question du système d'exploitation n'est pas une bonne excuse pour un produit qui coûte des milliers de dollars. Sur les autres problèmes que je suis en contact avec Mathworks (avec parcimondière) et je les envoie des rapports d'accident (plus d'un jour que j'utilise Matlab), mais ce sont les uns des bugs qui ne nous bénéficieront pas de leur discussion ici, je devrais discuter avec Les ingénieurs Matlab (s'ils sont autour, je serais heureux de leur parler plus directement)



3
votes

Vous devriez pouvoir modifier le message de barre d'état de la fenêtre principale MATLAB à l'aide de la soumission barre d'état strong> de Yair Alman sur le Mathworks Fiche Exchange . Il discute de la façon dont il fonctionne dans un message sur son blog "Matlab non documenté" .

Avec cet utilitaire, vous devriez être capable de mettre un message "occupé ..." même lorsque Matlab ne le fait pas automatiquement. Votre code pour le bouton "Click Me" Callback aurait probablement ressembler à ceci comme suit: P>

...
statusbar(0, 'Busy...');  %# Set the status message
test;                     %# Run your function/script
statusbar(0, '');         %# Clear the status message
...


1 commentaires

Oui c'est un petit outil soigné, mais quand j'ai dit que j'ai créé une petite interface graphique que j'ai menti. Pour moi, un novice, c'est une jolie graphique et en ajoutant ceci à tous mes rappels (dont besoin) est de beaucoup de tracas. Il corrige le problème que je n'avais que la solution que j'espérais. Je considère que ce problème résolu. Merci pour votre contribution.



2
votes

Vous pouvez ajouter un texte statique sur l'interface graphique elle-même et définir son texte sur "occupé" / "inactif" avant / après que vos calculs sont effectués, si l'interface graphique est plus conviviale.


0 commentaires

2
votes

Probablement ce que vous recherchez:

Entrez n'importe quel code arbriitaire dans la ligne de commande.

E.g. quelque chose comme

asdfasdfasdfasdf

Si la routine de l'interface graphique est toujours en cours d'exécution, elle s'affichera, jusqu'à ce que la fonction GUI soit terminée. Seulement alors il peut commencer à exécuter asdfasdfasdfasdf.

Si l'interface graphique est déjà terminée, il exécutera instantanément ASDFASDFASDFASDF et affichera le message d'erreur en suivant.

Plus tôt Tous les matlabs ont également affiché le message occupé, lors de l'exécution d'une fonction GUI-démarrée. Depuis 2012, cela ne semble plus être le cas.


0 commentaires

0
votes

Ajouter une zone de texte statique à votre interface graphique. Dans votre calcule, écrivez ceci: XXX


0 commentaires