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

Windows Forms Discussion :

[FW2.0][VB.net] évenement front montant


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut [FW2.0][VB.net] évenement front montant
    Bonjour

    je voudrais me servir de l'évenement d'un voyant pour éxecuter une fonction, seulement je voudrais le faire que lorsque mon voyant passe à true, et non pas quand il passe à true et à false. En fait j'ai un bit affecté à ce voyant et je veux utiliser juste le front montant, et pas le descendant.

    Merci

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    au debut de ton evenement tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if voyant = false then
    ... tu fais ton code
    si tu veux le faire quand il passe de false à true et pas de true a false bah il suffit de vérifier l'état de ton voyant avant de faire ton code

  3. #3
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    Le problème c'est que mon voyant reste à true quelques millisecondes à peine, et ma fonction est une opération assez longue, ducoup ça va pas marcher le if blabla.value = true then... J'ai déja essayé. Je veux que ma fonction s'execute 1 fois si il detecte un passage à 1 de mon voyant, bref faire une sorte de détection de front montant.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    pourquoi pas faire une boucle dans un thread supplementaire qui incremente une variable volatile ? a chaque voit que l'etat change ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    bool Boucle = true;
    while(Boucle)
    {
    if ((ancienEtat == false )&& (nouveauEtat == true))
       MonCompteur++;
    ancienEtat = nouveauEtat;
    }
    Désolé moi pas être VBiste, mais toi pouvoir utilisé convertisseur C# -> VB.net

  5. #5
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    Dans ce cas il faudrait incrémenter cette variable que lorsque l'état passe a true, mais pas à false, et là le problème est le même ducoup.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    ben oui c'est ce que j'ai fait : reagrde il y a 2 variable une variable qui indique l'etat d'avant et une autre l'etat d'apres autrement dit la boucle detecte un CHANGEMENT d'etat a savoir le passage de l'etat false a l'etat true. C'est ceci un front montant pour moi

  7. #7
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    Oups, j'avais pas bien fait gaffe, pardon

  8. #8
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    Par contre ce que je pige pas c'est comment dire que ces 2 variables correspondent à l'ancien état pour l'une et le nouvel état pour l'autre

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    C'est simple je ne sais pas comment tu fait ton aquisition d'etat mais imaginons que ce soit la fonction GetEtat() qui s'en charge et qui te retourne un boolean qui correspond a l'etat actuel de ton voyant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void DetectFM()
    {
    bool Boucle = true; // Cette variable sera changer dans le thread principal si tu decide que l'on doit arreter de scrupter l'etat du voyant
    ancienEtat=GetEtat(); // on init l'ancienEtat a la valeur actuel de l'etat afin de ne pas detecter de front montant a l'initialisation.
    while(Boucle)
    {
    nouveauEtat=GetEtat(); // On recupere l'etat actuel du voyant
    if ((ancienEtat == false )&& (nouveauEtat == true)) // et ici on detecte si il y a un front montant
       MonCompteur++;// si oui alors on incremente le compteur
    ancienEtat = nouveauEtat; // et on sauvegarde letat actuel du voyant dans la variable de l'ancienEtat
    }
    }
    Voila je pense n'avoir rien oublier apart peut etre comment faire un thread qui tournera en parallele a ton appli (bon allez c'est mon jour de bonté )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Thread MyThread = new Thread(this.DetectFM); // on instancie un nouveau thread pour la boucle de detection de front montant
    // CheckForIllegalCrossThreadCalls = false; // je pense pas que ce soit necessaire en VB ça sert a changer l'etat de d'une variable qui a ete creer dans un autre thread
    MyThread.Start();
    Désolé pour les fautes de frappe mais c'est fait a la va vite ^^
    EDIT : A oui je vien de tester et j'ai aps fait de faute de code aparement : le convertisseur C# -> VB : c'est http://www.developerfusion.co.uk/uti...sharptovb.aspx

  10. #10
    Membre confirmé Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Par défaut
    Ok merci de l'aide, je vais essayer ça.

Discussions similaires

  1. [VB.NET]Convertir un montant numérique en lettres
    Par kinganasius dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/07/2009, 20h13
  2. front montant sur bit dans un mot
    Par Baxter67 dans le forum C++Builder
    Réponses: 0
    Dernier message: 23/01/2008, 23h08
  3. Capture de fronts montants avec un PIC16F876
    Par sylvain42 dans le forum C
    Réponses: 3
    Dernier message: 12/06/2006, 14h48
  4. [FW2.0][VB.net] backgroundworker
    Par grand_prophete dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/05/2006, 15h02
  5. [vb.net] évenement renvoyant un booleen?
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/11/2005, 13h01

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