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 :

problème de Timer


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 76
    Par défaut problème de Timer
    Bonjour,

    mon application se connecte à un modem via le port série, et sur un richtextbox j'affiche les le nombre de trame envoyé et reçu avec deux compteurs qui décompte en millisecondes, j'utilise un timer.

    Au démarrage ça marche normal avec les compteurs en millisecondes,mais après quelques minutes ça devient lent de plus en plus ce qui engendre l'enregistrement des durées fausses dans la base de données.

    J'ai essayé de réduire l'intervalle en le mettant(timer.intervalle=1) mais ça change rien.

    Je veux savoir s'il y a possibilité de rafraîchir le timer ou quelque chose de ce genre,ou bien s'il y a d'autres types de timer en vb.net

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Un p'tit bout de code de l'event du timer ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 76
    Par défaut
    Je peux pas mettre tout le code parce que c'est long,mais l’essentiel:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    Private WithEvents FormTimer1 As New Windows.Forms.Timer
    '................
    Private Sub Form_Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles FormTimer1.Tick
            Dim Tnow1 As Long
            Tnow1 = TickCount
     
            If Not Serialport1.PortOpen Then
                'MsgBox("Port MRM fermé")
                Exit Sub
            End If
            Select Case ApplState1
                Case "SEND_FRAME1"
     
                    If ((Tnow1 - T11) > 60000 And FirstTrameOK1 <> 65555) Then
                        FormTimer1.interval=vbnull
                        'StopCom1()
                        Exit Sub
                    End If
                    'b7.Text = "Stop sending" AndAlso
                    If ((Tnow1 - Tsend1) > Twait1) Then
     
                        Tsend1 = Tnow1
                        sendFrame1()
                        sendFrame1()
     
                        send1_Clicked = False
     
                    End If
                    data1.Text = " Last received OK : " & LastTrameOK1 & "  / Last sent : " & (numeroTrame21 * CLng(256) + numeroTrame11)
                    FormTimer1.Interval = 125
                    'G1 = 20
                Case "INIT_MRM_1"
     
                    Serialport1.Output = "ATS2=43&D0&K0&C0+CUUS1=1,1,0," & Chr(34) & vbCrLf
                    EcrireEvtAt1("sent : ATS2=43&D0&K0&C0+CUUS1=1,1,0," & Chr(34))
                    tx1.Text = "ATS2=43&D0&K0&C0+CUUS1=1,1,0," & Chr(34) & vbCrLf
                    ApplState1 = "INIT_MRM_2"
                    FormTimer1.Interval = 300
     
                Case "INIT_MRM_2"
     
                    Serialport1.Output = "AT+CNUM" & vbCrLf
                    EcrireEvtAt1("sent : AT+CNUM")
                    tx1.Text = "AT+CNUM" & vbCrLf
                    ApplState1 = "INIT_MRM_3"
                    FormTimer1.Interval = 300
     
                Case "INIT_MRM_3"
     
                    Serialport1.Output = "AT+CBST=70,0,0" & vbCrLf
                    EcrireEvtAt1("sent : AT+CBST=70,0,0")
                    tx1.Text = "AT+CBST=70,0,0" & vbCrLf
                    ApplState1 = "INIT_MRM_4"
                    FormTimer1.Interval = 300
     
                Case "INIT_MRM_4"
     
                    Serialport1.Output = "AT+COPS=1,2," & Chr(34) & "20814" & Chr(34) & vbCrLf
                    EcrireEvtAt1("sent : AT+COPS=1,2," & Chr(34) & "20814" & Chr(34))
                    tx1.Text = "AT+COPS=1,2," & Chr(34) & "20814" & Chr(34) & vbCrLf
                    ApplState1 = "NOTHING"
                    FormTimer1.interval=vbnull
     
                Case "DISCONN_1"
     
                    data1.Text = "Disconnecting..."
                    Serialport1.Output = "+"
                    EcrireEvtAt1("sent : +")
                    ApplState1 = "DISCONN_2"
                    FormTimer1.Interval = 150
     
                Case "DISCONN_2"
     
                    Serialport1.Output = "+"
                    EcrireEvtAt1("sent : +")
                    ApplState1 = "DISCONN_3"
                    FormTimer1.Interval = 150
     
                Case "DISCONN_3"
     
                    Serialport1.Output = "+"
                    EcrireEvtAt1("sent : +")
                    ApplState1 = "DISCONN_4"
                    FormTimer1.Interval = 2000
     
                Case "DISCONN_4"
     
                    Sleep(300)
                    Serialport1.Output = "ATH"
                    EcrireEvtAt1("sent : ATH")
                    tx1.Text = "ATH" & vbCrLf
                    StopCom1()
     
            End Select
     
        End Sub
     
     Private Sub open1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles open1.Click
     
            Dim com As String = Com1.SelectedItem
     
            PortGSM1 = Int(com.Substring(3, 1))
     
            If Not Serialport1.PortOpen Then
                With Serialport1
                    .CommPort = PortGSM1
                    .InputMode = MSCommLib.InputModeConstants.comInputModeText
                    .Settings = baud1.SelectedItem & ",N,8,1"
                    '.Handshaking = MSCommLib.HandshakeConstants.comNone
                    '.RTSEnable = False
                    .RThreshold = 1
                    '.SThreshold = 1
                End With
                Try
                    Serialport1.PortOpen = True
                    MsgBox("Le port est connecté")
                Catch ex As Exception
                    MsgBox("Le port " & PortGSM1 & " est occupé ")
                End Try
     
                FormTimer1.Start()
                FormTimer1.Interval = 30
            End If
        End Sub
    :

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    A l'aveugle, je suspectais une fuite mémoire ou un truc récursif mais c'est apparemment pas le cas (j'ai regardé en diagonale j'avoue).

    Par contre, c'est normal ça ?
    FormTimer1.interval=vbnull
    J'avoue ne pas savoir ce qu'il se passe si on ne met pas d'interval mais bon, ça me semble louche quand même.

    Aussi, faudrait vérifier si l'event se redéclenche lorsqu'il encore en cours d'exécution.

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    + 1 avec Kropernic

    Aussi, faudrait vérifier si l'event se redéclenche lorsqu'il encore en cours d'exécution.
    Je rajouterais en début et fin de Form_Timer1_Tick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Form_Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles FormTimer1.Tick
     
            Dim Tnow1 As Long
            Tnow1 = TickCount
     
            Form_Timer1.Stop()
     
            ... 
     
            Form_Timer1.Start()
     
    End Sub
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

Discussions similaires

  1. Toujours un problème avec Timer
    Par adidas40 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/10/2006, 11h04
  2. Problème de Timer
    Par nikus_knx dans le forum MFC
    Réponses: 7
    Dernier message: 18/05/2006, 14h27
  3. Problème de Timer
    Par hammag dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/04/2006, 17h52
  4. [VC++ - MFC] Problème de Timer
    Par Alice9 dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2006, 13h51
  5. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36

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