Problème timer sous VB

InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013 - 6 juin 2011 à 11:13
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 6 juin 2011 à 12:30
Salut je dois réaliser un programme dans le cadre d'un stage et je suis amené à faire un timer, en fait toutes les 5min je lance mon programme pour vérifier la température et toutes les 30 min enregistrer la valeur de la température dans une base de données =)

Et en fait je veux que toutes les 5 min je vérifie, s'il s'est écoulé 30 min depuis la derneire sauvegarde, donc dans mon fichier.ini, j'ai mis une date, et dans mon programme je fais :

Duree = Now - DatVerif

et la j'obtient par exemple: 00:49:11

et je voudrais tout simplement faire un IF duree > 30 minutes then .....

mais comment on fait pour indiquer 30 minutes ?

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 juin 2011 à 11:35
Et pourquoi ne pas faire 2 timer ?
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
6 juin 2011 à 11:44
Salut, au lieu de la date tu met une variable qui s'incrémente à chaque éxécution, puis :
If variable = 5 then .....



_______________________
Imports System.Thinking
'La vie Roxxx un max à qui s'en donne la peine
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juin 2011 à 12:06
Bonjour,
je n'aime aucune de ces deux soloutions;
La 1ère est démesurée
la 2ème est imprécise
Je propose cet exemple (ici deux compteurs : l'un sur 2 secondes et l'autre sur 4 secondes)
un label label1 - un timer Timer1 et un bouton de commande

Private min1 As Date
Private min2 As Date

Private Sub Command1_Click()
  Timer1.Enabled = True
  Timer1.Interval = 100
  min1 = Now
  min2 = Now
End Sub

Private Sub Timer1_Timer()
  Dim seq1 As Integer, seq2 As Integer
  seq1 = 2
  seq2 = 4
  If DateDiff("s", min1, Now) >= seq1 Then
    Label1.Caption = seq1 & " secondes écoulées"
    min1 = Now
  End If
  If DateDiff("s", min2, Now) >= seq2 Then
    Label1.Caption = seq2 & " secondes écoulées"
    min2 = Now
  End If
End Sub

pour faire avec 5 et 30 minutes :
modifier
seq1 = 5
seq2 = 30
et remplacer les "s" par "m"



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juin 2011 à 12:08
non par "m", mais par "n", bien sûr

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juin 2011 à 12:29
et on y verra mieux clair avec ce nouvel exemple qui, en modifiant la couleur toutes les deux secondes, montre bien les différentes "tranches" repérées.
horloge : toutes les 2 et 6 secondes


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juin 2011 à 12:30
ah oui ! le code :
Private min1 As Date
Private min2 As Date

Private Sub Command1_Click()
  Timer1.Enabled = True
  Timer1.Interval = 100
  min1 = Now
  min2 = Now
End Sub

Private Sub Timer1_Timer()
  Dim seq1 As Integer, seq2 As Integer
  seq1 = 2
  seq2 = 6
  If DateDiff("s", min1, Now) >= seq1 Then
    If Label1.ForeColor vbBlack Then Label1.ForeColor vbRed Else Label1.ForeColor = vbBlack
    Label1.Caption = seq1 & " secondes écoulées"
    min1 = Now
  End If
  If DateDiff("s", min2, Now) >= seq2 Then
    Label1.Caption = seq2 & " secondes écoulées"
    min2 = Now
  End If
End Sub




____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Rejoignez-nous