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

VB.NET Discussion :

Attendre un changement avant de continuer


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Par défaut Attendre un changement avant de continuer
    Bonjour,

    Je n'ai aucune idée et peut etre en avez vous une.
    Je recherche une idée pour :

    -Envoyer une commande string sur le port série ( ca je sais faire )
    -Lire une réponse string sur le port série ( ca je sais faire )
    et tant que ma string de réponse ne contiens pas une certaine chaine recommencer l'envoi. Et il ne faut pas que je sorte de cette boucle tant que ma réponse ne contiens pas une certaine chaine.

    si je fais un do loop while ou until ca ira beaucoup trop vite et me feezera le pc, de plus le port série ne suivra pas

    peut etre avec un timer ou quelque chose comme ca ?
    si je met un sleep, est ce que les interruptions le lecture du port série fonctionnerons ou seront elles aussi endormies ?

    exemple de code :
    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
     
     
    ...
    'mes opérations précédentes
    Do
       SerialPort1.Write("SI" & vbCrLf)
    Loop Until (stable = True)
    'mes opérations suivantes
    ...
     
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles    SerialPort1.DataReceived
            Static inBuff
            inBuff = SerialPort1.ReadLine
            Call handleInput(inBuff)
            inBuff = ""
        End Sub
     
        Private Sub handleInput(ByVal myString)
            If Microsoft.VisualBasic.Left(myString, 3) = "S S" Then
                stable = True
                weight = CSng(Microsoft.VisualBasic.Mid(myString, 4, 11))
            ElseIf Microsoft.VisualBasic.Left(myString, 3) = "S D" Then
                stable = False
                weight = -1
            End If
        End Sub





    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 91
    Par défaut
    Pour attendre on utilise la fonction Sleep(nbMillisecondes)
    Voici un exemple qui provoque une attente de 5 secondes sans bloquer ton PC :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim cpt as integer
    For cpt = 0 to 5000
        System.Threading.Thread.Sleep(1)
        Application.DoEvents()
    Next

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    J'ai fait un truc comme ca pour le boulot, un système de flashage de codes barre pour le suivi de produits...
    J'utilise une boucle while dans un thread, qui écoute tout le temps le port série. Tu es obligé d'écouter tout le temps sinon tu ne pourras pas récupérer si jamais quelque chose se passe.

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Tu peux aussi créer ta propre fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Friend Sub wait(ByVal ms_to_wait As Long)
            Dim hb As Double
            hb = Environment.TickCount + ms_to_wait
            While Environment.TickCount < hb
                Application.DoEvents()
            End While
        End Sub
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Par défaut ok
    ok merci beaucoup a vous
    c'est sympa

    j'ai pu résoudre mon problème

    ++
    Diffy

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/09/2009, 18h03
  2. Réponses: 11
    Dernier message: 26/06/2008, 22h41
  3. Attendre qu'une fenetre soit fermée avant de continuer.
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/05/2007, 17h43
  4. [FLASH MX2004] [AS2] Attendre la fin de chargement d'un fichier avant de continuer.
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 01/03/2007, 15h13
  5. attendre la fin de chargement d'une page avant de continuer le script
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2006, 09h50

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