Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionA chaque fois, vous faites des boucles de lecture du buffer en attente de données.
While donnee = "" If ProgressBar1.Value <> ProgressBar1.Maximum Then Timer1.Interval = 1000 Timer1.Start() End If Application.DoEvents() End While
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Timer1.Stop() ProgressBar1.Value += 1 End Sub
Timer1.Interval = 1000 Timer1.Enabled = True Do While donnée = "" Application.DoEvents() Loop ProgressBar1.Value = ProgressBar1.Maximum End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If ProgressBar1.Value < ProgressBar1.Maximum Then ProgressBar1.Value += 1 Else Timer1.Enabled = False End If End Sub
Obtient ou définit le nombre d'octets dans la mémoire tampon d'entrée interne avant qu'un événement DataReceived ne se produise.
Les événements reçus en série peuvent être provoqués par l'un des éléments de l'énumération SerialData. Étant donné que le système d'exploitation détermine s'il convient ou non de déclencher cet événement, toutes les erreurs de parité peuvent ne pas être signalées.
Les événements PinChanged, DataReceived et ErrorReceived peuvent être appelés de façon désordonnée et il peut y avoir un léger délai entre le moment où le flux sous-jacent signale l'erreur et le moment où le gestionnaire d'événements est exécuté. Un seul gestionnaire d'événements peut s'exécuter à la fois.
L'événement DataReceived n'est pas forcément déclenché pour chaque octet reçu. Utilisez la propriété BytesToRead pour déterminer combien de données restent à lire dans la mémoire tampon.
L'événement DataReceived est déclenché sur un thread secondaire lorsque des données sont reçues de l'objet SerialPort. Cet événement étant déclenché sur un thread secondaire et non sur le thread principal, toute tentative de modification d'éléments inclus dans le thread principal, tels que les éléments de l'interface utilisateur, peut lever une exception de thread. S'il est nécessaire de modifier des éléments dans le Form ou Control principal, renvoyez les demandes de modification à l'aide de Invoke, qui réalisera la tâche sur le thread approprié.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim NbreDeSecQuiDureLeTest As Integer = 10 'Le test dure 10 sec SerialPort1.Write("?") 'démarrage du test ProgressBar1.Maximum = NbreDeSecQuiDureLeTest ProgressBar1.Value = 0 Timer1.Interval = 1000 Timer1.Enabled = True End Sub 'Juste un exemple d'une sub car je ne sais pas comment tu reçois ce caractère: Private Sub DonnéesRecuesDeLAutomate() If Caractere "fin" Then ProgressBar1.Value ProgressBar1.Maximum 'et tu peux même laisser tourner le timer End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If ProgressBar1.Value < ProgressBar1.Maximum Then ProgressBar1.Value += 1 End Sub