2010-09-20 8 views
3

Disons que quelqu'un a fait une interface graphique Matlab en utilisant GUIDE. Maintenant, je veux utiliser ce code dans un environnement programmatique - ce n'est pas humain dans la boucle. Quelle est la manière la plus simple pour moi de "scripter" les interactions humaines avec l'interface graphique de manière à manipuler les différents contrôles dans l'ordre approprié pour que l'outil croise mes nombres et obtienne ses résultats? Je cherche un moyen non invasif de réutiliser les capacités de cet outil. Mon environnement programmatique idéal pour invoquer la fonctionnalité Matlab serait Java.Matlab GUI Automation?

Je peux ouvrir le GUIDE .fig et tracer toutes les fonctions de rappel sur les différentes commandes, mais le motif de conception semble être de pousser toutes les données dans la variable des poignées.

J'ai la possibilité d'utiliser le JA Builder Matlab pour Java pour générer des classes java, si cela est utile de quelque façon. Toute suggestion serait appréciée.

Répondre

4

GUI MTALAB est une interface graphique Java. Pour l'automatisation GUI, il y a un post récent sur le blog de Yair Altman: http://undocumentedmatlab.com/blog/gui-automation-robot/

Ce qui suit ne s'applique que si vous pouvez réécrire l'application.

Il n'y a généralement pas besoin d'une forme d'automatisation de l'interface graphique pour des tâches telles que la vôtre. L'application doit avoir following architecture: Modèle-> Business Logic-> GUI. Chaque couche est découplée des couches au-dessus - Le modèle ne sait rien sur Business Logic qui ne connaît rien à la GUI. Il est alors possible d'appeler Business Logic par programmation sans même afficher l'interface graphique. Here est un exemple d'implémentation MVC dans MATLAB.

Pour ce guide, la raison doit être évitée. Il y a un layout manager non documenté dans MATLAB, il y en a aussi sur l'échange de fichiers.

Dans votre cas, vous pouvez mettre toute logique métier en dehors de la logique GUI faisant callbacks GUIDE ne rien faire appeler vos fonctions de logique métier.

+0

+ 1 réponse parfaite, doit être utilisé ** à des fins de test seulement **, comme vous le mentionnez. – zellus

1

Extrait des post suivant. Utiliser

guiname('pushbutton', object, eventdata, handles) 

pour appeler les rappels dans 'guiname'.

Avez-vous envisagé d'utiliser un modèle MVC? Extraire le 'modèle' de votre GUI pourrait vous laisser avec du code réutilisable.