Même Microsoft n'utiliserait pas une barre de progression dans le cas ici exposé.J'ai déjà vu des barres de progressions Microsoft avancer lentement et se remplir brusquement à la fin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionse remplir brusquement à la fin
Comment gérer tout cela sinon?
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
Public Sub RS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived 'Fonction permettant de lire sur le port RS232 Me.Invoke(New EventHandler(AddressOf Affiche_reception)) End Sub Public Sub Affiche_reception() 'Fonction permettant de récupérer ce qui est lu sur le port RS232 donnee = RS232.ReadExisting End Sub
Option Strict On Public Class Form1 Dim NbreDeSecQuiDureLeTest As Integer = 10 'Le test dure 10 sec Dim TimerCom As New Timer Dim DonnéeReçue As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click RS232.Write("?") '"?" = caractère de démarrage du test ProgressBar1.Maximum = NbreDeSecQuiDureLeTest ProgressBar1.Value = 0 End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 'ici il faut fermer le port If RS232.IsOpen Then RS232.Close() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Interval = 1000 Timer1.Enabled = True TimerCom.Interval = 100 TimerCom.Enabled = False AddHandler TimerCom.Tick, AddressOf TimerCom_Tick 'ici il faut parametrer et ouvrir le port RS232.BaudRate = 9600 RS232.StopBits = CType(1, IO.Ports.StopBits) RS232.Parity = IO.Ports.Parity.None RS232.PortName = "COM1" If RS232.IsOpen = False Then RS232.Open() End Sub Private Sub TimerCom_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) DonnéeReçue = RS232.ReadExisting If DonnéeReçue.Contains("-") Then '("-" = caractère qui signifie la fin) ProgressBar1.Value = ProgressBar1.Maximum End If TimerCom.Enabled = False 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 Private Sub RS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived TimerCom.Enabled = True End Sub End Class