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

Interfaces Graphiques Discussion :

Problème avec la fonction timer


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut Problème avec la fonction timer
    Bonjour à tous,

    je reviens vous voir pour un problème que je n'arrive pas du tout à cerner malgré une recherche sur le net .

    Je veux utiliser la fonction Timer afin de pouvoir, dans un premier temps, détecter la connexion ou non d'un joystick de manière continue.

    Le premier appel dans la fonction se passe bien mais lorsqu'elle est appelée une deuxième fois j'ai une deuxième fenêtre graphique (Figure1) qui s'ouvre et matlab me signal que j'ai un élément introuvable (surement parce-qu'il essaye de l'afficher dans cette nouvelle fenêtre) et donc mon timer s'arrête.


    L'erreur est la suivante : Reference to non-existent field 'text_joystick_number'

    Merci d'avance pour votre aide .

    Voici le bout de code en question :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    function joystick_connection(hObject, eventdata, handles)
    %Create joysticks object and get the number of joysticks connected
        handles = guidata(gcf);
        %Exception on josticks connection
        try
            %VRJOYSTICK Create a joystick object.
            %   JOY = VRJOYSTICK(ID) creates a joystick object capable of interfacing
            %   a joystick device. The ID parameter is one-based joystick ID.
            handles.joystick1 = vrjoystick(1);
            handles.joy_connected = 1;
        catch exception
            handles.joy_connected = 0;
        end
     
        if handles.joy_connected == 1
            try
                handles.joystick2 = vrjoystick(2);
                handles.joy_connected = 2;
            catch exception
                handles.joy_connected = 1;
            end
        end
     
        if handles.joy_connected == 0
            set(handles.text_joystick_number,'String','0');
        elseif handles.joy_connected == 1
            set(handles.text_joystick_number,'String','1');
        else
            set(handles.text_joystick_number,'String','2');
        end
     
        % Update handles structure
        guidata(gcf, handles);
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%TIMERS%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function Timer_config(hObject, eventdata, handles)
        handles = guidata(gcf);
     
        handles.t = timer;
        set(handles.t,'ExecutionMode','fixedRate','Period',1,'TimerFcn',{@Timer,handles});%Timer
        start(handles.t);
     
        % Update handles structure
        guidata(gcf, handles);
     
     
     
    function Timer(hObject, eventdata, handles)
        handles = guidata(gcf); %surement pas utilise car déclaré avant : {@Timer,handles}
     
        joystick_connection(hObject, eventdata, handles)
     
        % Update handles structure
        guidata(gcf, handles);

  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 317
    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 317
    Par défaut
    Je n'arrive pas à savoir si tu utilises le GUIDE.

    Est-ce le cas ?

    Le code que tu nous montre prend place dans un code plus grand, c'est ça ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    oui tout à fait. J'utilise le GUIDE et c'est qu'un bout de code. Vu que mon problème vient de cette partie je me suis dit que mettre l'intégralité du code n'était pas forcément nécessaire.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    Bonjour,

    retire le ";" après ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles = guidata(gcf);
    pour que tu vois si le nom de champs '
    text_joystick_number'
    existe d'avant.

    Cordialement,
    Christophe Halgand

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    déjà fait et cette variable existe bien dans ma structure .

    Comme je le disais dans mon premier poste est-ce que ça viendrait pas du fait que j'ai une nouvelle fenêtre qui se crée (Figure1) et que matlab ne trouve pas cette variable dans le contenu de cette figure ?

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    bon j'ai enfin réussi à faire fonctionner le timer et même finir mon programme.
    J'ai malheureusement un nouveau problème sur le timer.

    Je constate qu'une utilisation plus ou moins prolongée du GUI entraîne un retard sur l'exécution de 'TimerFcn'.
    J'ai définit une période sur le timer de 0.1s mais après un certains temps j'ai un temps d'exécution entre 2 appels de 'TimerFcn' (valeur "InstantPeriod" du timer) qui monte jusqu'à la seconde !

    Mon timer doit actualiser une partie de l'affichage, récupérer des valeurs joysticks (fonction "vrjoystick") et envoyer des données par client UDP (utilisation de MEX).
    Est-ce que je donne trop d'instruction au sein d'un seul timer ou mon problème vient d'autre part ?

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 13h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 21h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 14h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 13h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 10h04

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