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

wxWidgets Discussion :

Utilisation du Timer


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Utilisation du Timer
    Systeme Windows xp
    Language C++
    IDE wxDev-C++

    Bonjour,

    Suite a un problème, je me suis rendu compte qu'il me fallait un Timer pour l'envoi de donnée de mon programme.
    Je dois envoyer les valeurs de mes wxslider sur le bus DMX pour interagir avec strobo, mojo etc...

    Je n'y arrive pas correctement, les valeurs augmentent mais ne diminuent pas quand je baisse le curseur du wxslider.

    J'avance à tâton étant un novice en programmation, mais celui ci semble vain.

    Merci d'avance pour les informations que vous pourriez me donner.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Désolé. Je ne comprends pas bien ta question. Pourrais-tu préciser ton problème ?

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Eh bien.

    Je suis sur un Mini-Projet devant gérer une rampe de projecteur etc... via Bus DMX.
    J'ai fait une IHM doté de plusieurs slider et le problème c'est que lorsque je monte le curseur d'un slider, la valeur envoyé sur le bus DMX augmente mais l'inverse n'est pas valable, quand je baisse le curseur du slider, la valeur envoyé ne veut pas diminuer.

    Donc plutôt que de faire 150 lignes de code supplémentaire, je voudrais mettre un timer qui "rafraîchira" l'envoi de données sur le bus DMX.

    Voici le code que je voudrai "rafraîchir" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void IHM_DMXDlg::WxSlider1Scroll(wxScrollEvent& event)
    {
        char* ValeurEdit1;
        ValeurSlider1=WxSlider1->GetValue();     // valeur du slider
        itoa(ValeurSlider1,ValeurEdit1,10);     // conversion pour l'affichage
        WxEdit1->SetValue(ValeurEdit1);        //dans ce edit (au passage, ne fonctionne pas)
        PushData(60,ValeurSlider1);         // envoi la donnée sur le bus DMX
     
    }
    Il y en a 8 de plus, car les 4 appareils dont dispose mon BTS Iris utilise 9 canaux sur le bus DMX.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        WxEdit1->SetValue(ValeurEdit1);        //dans ce edit (au passage, ne fonctionne pas)
    Ca ne peut pas fonctionner car ValeurEdit1 n'est pas alloué/initialisé. Tu as même de la chance que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    itoa(ValeurSlider1,ValeurEdit1,10)
    ne plante pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PushData(60,ValeurSlider1);
    La valeur de ValeurSlider1 n'est pas la bonne ?

    Sinon : tu pourrais utiliser une variable membre de ta boîte de dialogue et la lier au contrôle avec un validateur. Et utiliser le mécanisme TransferDataTo/FromWindow pour les mises à jour.

    Enfin, pour répondre à ta question première :
    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
     
    class IHM_DMXDlg
    {//...
     wxTimer m_oTimer;
    puis 
    IHM_DMXDlg::IHM_DMXDlg(....)
    :m_oTimer(this, ID_TIMER)
    {}
    et 
    m_oTimer.Start(FREQUENCE,wxTIMER_CONTINUOUS);
    dans l'init
    et
    m_oTimer.Stop();
    dans la destruction
     
    enfin 
    EVT_TIMER(ID_TIMER,IHM_DMXDlg::OnTimer)
    dans la table d'évènement.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Et merci pour tes réponses !

    Pour le bout de code :
    C'est quand je l'initialise que tout plante.
    Le fameux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    itoa(ValeurSlider1,ValeurEdit1,10);
    Ne plante pas mais que j'affiche le résultat de la conversion, des carrés blanc sont affichés.
    Je ne comprend pas...

    J'ai déjà mi un Timer dans mon programme donc toutes les lignes de code citées sont présentes. Maintenant je ne sais pas exactement comment m'en servir le seul professeur qui aurait pu m'aider n'était pas la hier...
    J'en ai marre du tâtonnement cela me provoque des erreurs là ou il n'y en avait pas avant !

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PushData(60,ValeurSlider1);
    Cette valeur est la bonne, le matériel ayant un pb technique, j'ai décidé de démarrer les adresses à 60.
    Quand j'ai testé par la suite seul le stroboscope situé canaux 60 et 61 fonctionne.
    J'ai encore du boulot.


    "Sinon : tu pourrais utiliser une variable membre de ta boîte de dialogue et la lier au contrôle avec un validateur. Et utiliser le mécanisme TransferDataTo/FromWindow pour les mises à jour."

    Je ne comprend pas bien ce que tu dis ici je ne pense pas avoir de boite de dialogue. J'ai un wxEdit, est-ce pareil ?

    Pour le validateur, n'ayant pas vu cela en cour et ne connaissant que superficiellement wxDev-C++ je ne sais pas ce que c'est ni comment m'en servir.

    Pour finir avec mes questions (qui ont bien l'air stupide...), "TransferDataTo/FromWindow" ceci pourrait être utile, peux-tu m'en dire plus lors de ton prochain passage.

    Merci !

Discussions similaires

  1. utilisation des timers
    Par iwio dans le forum Allegro
    Réponses: 1
    Dernier message: 25/06/2006, 23h55
  2. Utilisation de Timer dans Python
    Par aliassaf dans le forum Général Python
    Réponses: 5
    Dernier message: 17/06/2006, 19h06
  3. [C#.net] utiliser un timer
    Par Mandalar dans le forum DirectX
    Réponses: 4
    Dernier message: 26/01/2006, 22h17
  4. Utiliser un timer dans une application console
    Par chavers dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2005, 14h07
  5. Utilisation de Timer
    Par Freakazoid dans le forum DirectX
    Réponses: 1
    Dernier message: 07/07/2004, 23h27

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