VB et les execption

abdobergach Messages postés 26 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 juin 2011 - 29 avril 2011 à 15:42
abdobergach Messages postés 26 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 juin 2011 - 30 avril 2011 à 12:54
bonjour
j'ai créé une fonction CBstatus() en VB.net et un timer qui fais l'appel à cette fonction chaque 10 ms
cette fonction permet de recupérer des donné sur un bus CAN ,donc s'il ya pas donné elle présente un erreur que je dois l’afficher une seul fois ,c'est pour cela j'ai mé une condition if pour afficher ce meessage une seul fois mais malheuresemnt ca marche pas tjr il me donne des fenêtre d'erreur suivant le timer
voila le code et merci pour une idée

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

dim i as integer =0
try 
CBstatus()
Catch ex As Exception

 if i=0 then
    msgbox(" pas de donné sur le bus CAN")
    i=1
end if
End Try
End Sub

5 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
29 avril 2011 à 16:09
Bonjour,

Votre variable i est une variable interne à la sub Timer1_Tick.
Donc à chaque fois que le compteur fait un tour et que la sub Timer1_Tick est appelée, i prend la valeur 0. Donc i est toujours égale à 0 ce qui fait que votre message est affiché à chaque fois.

Il faut donc déclarer i comme ceci :
Private i as Integer = 0

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  Try 
     CBstatus()
  Catch ex As Exception

     If i=0 Then
        msgbox(" pas de donné sur le bus CAN")
        i=1
     End if

  End Try
End Sub 
0
abdobergach Messages postés 26 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 juin 2011
29 avril 2011 à 16:25
bonjour pour la réponse
j'ai vérifie ce que ta dis parce que jé déjà essayer comme ça mé malheureusement tjr le même problème
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
30 avril 2011 à 01:42
Oui, désolé. Voici la correction
Private i as Integer = 0

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  Try 
     CBstatus()
  Catch ex As Exception

     If i = 0 Then
        i = 1
        msgbox(" pas de donné sur le bus CAN")
     End if

  End Try
End Sub
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
30 avril 2011 à 01:47
L'explication est que si on affecte 1 à i après le messagebox, la fenetre de message étant modale, i ne passe à 1 qu'après avoir cliqué sur le bouton Ok du message. Ce qui laisse le temps au timer de 10 ms d'en afficher un paquet d'autre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
abdobergach Messages postés 26 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 juin 2011
30 avril 2011 à 12:54
c parfait
merci à vous tous
0
Rejoignez-nous