IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Gestion d'une liaison série avec une interface graphique


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut Gestion d'une liaison série avec une interface graphique
    Bonjour à tous

    Désolé de devoir encore vous déranger, mais quand on apprend on tombe forcement sur des choses inconnues

    J'ai cette fois besoin d'aide avec GUIDE et la création d'interface graphique.

    Déjà ,je pose les bases: j'ai un programme qui capture en continu des valeurs GPS par le port série et je les affiche dans des 'Static Text' en temps réel.

    J'ai donc créé toute mon interface en suivant des tutos/posts sur le fofo, et j'ai pu rentrer toutes mes options (débit,port,etc...) gràce à des 'popuMenu' et etc..

    Le problème vient du programme et de la boucle principale.
    J'ai deux boutons: un pour démarrer et un pour arrêter l'acquisition.

    Pour le moment il est instauré comme suit, et je pense que c'est de là que vient mon problème.

    Lorsque je clique sur 'Start', la partie de code dans mon callback de ce bouton s'éxecute et c'est là que j'ai mis une boucle pour afficher en continu mes valeurs.

    Dans le bouton 'Stop', je voulais fermer la conexion série et le fichier de log.

    Mais le problème est là: lorsque je suis dans ma boucle, plus moyen d'en sortir. Je pense que je n'utilise pas la bonne maniere pour afficher mes valeurs en continu. Dois-je placer le code autre-part? existe-t-il d'autres moyens?

    Je débute tout juste avec Guide et j'ai déjà compris 2 ou 3 trucs sur les objets mais là je sèche complètement et pas moyen de trouver d'exemple ou de cas similaires sur le forum.


    voilà, merci de m'avoir lû et de répondre


    Edit:

    Ou si vous préférez: me dire comment vous feriez pour:
    -clik sur un bouton => une variable s'incrémente et s'affiche dans un 'StaticText'
    -clik sur un autre bouton => on stop l'incrémentation

    voilou

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    La question est trop spécifique à ton problème.

    Je ferai néanmoins quelquechose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    s=serial(...);
    fopen(s);
     
    while strcmpi(get(s,'statut'),'open')
    % Afficher les valeurs
    end
     
    fclose(s)
    Mais bien entendu cela reste une idée très générale.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Rebonjour

    Je te remerci Dutmatlab d'avoir répondu.
    Mais cette solution ne mache pas puisque je ne parvient même pas à cliquer sur un bouton lorsque le programme est dans sa boucle

    Cependant j'ai eu une autre réponse par un ami,
    J'utilise une condition while(a==1) pour ma boucle,
    dans la fonction callback de mon bonton stop j'ai un setappdata(0,'a',0);
    et à la fin de mon while j'ai pause(0.2); a=getappdata(0,'a'); end;

    Ceci marche, même si c'est une peu 'à l'arrache' comme diraient les jeun's

    Voilou, si ça peut servir à quelqu'un; et encore merci d'avoir réfléchi au problème.


    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
     
    function go_Callback(hObject, eventdata, handles)
     
        setappdata(0,'a',1);
        test=getappdata(0,'a);
     
        while test==1,
     
            % Mon affichage ici        
     
            pause(0.2);
            test=getappdata(0,'pouet');
        end;
     
     
     
    function stop_Callback(hObject, eventdata, handles)
     
        setappdata(0,'a',0);

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Ce serait plus "propre" de faire :
    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
    function go_Callback(hObject, eventdata, handles)
     
       s=serial(...);
       fopen(s)
       setappdata(0,'s',s);
     
        while ~strcmpi(get(s,'status'),'closed')
     
            % Mon affichage ici        
     
            pause(0.2);
            s=getappdata(0,'s');
        end;
     
     
     
    function stop_Callback(hObject, eventdata, handles)
     
        s=getappdata(0,'s');
        fclose(s);
        setappdata(0,'s',s)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Très bien merci de ta réponse

    Il est vrai que c'est plus 'propre' et simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Reception de données + Attente avec une Liaison Série (VSB2010)
    Par loicb38 dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/05/2015, 08h21
  2. Problème avec une liaison série
    Par Coco47 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/08/2009, 15h13
  3. Liaison série avec une imprimante Imaje(S8)
    Par laeti23 dans le forum C#
    Réponses: 0
    Dernier message: 29/12/2008, 15h39
  4. Réponses: 2
    Dernier message: 15/10/2008, 15h49
  5. gestion de la liaison série avec VBA
    Par riquet90 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/08/2008, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo