jobertomeu
Messages postés1186Date d'inscriptiondimanche 19 août 2007StatutMembreDernière intervention 5 février 2015
-
Modifié par jobertomeu le 8/03/2013 à 22:33
Bonjour,
Alors voila, je souhaite réaliser une application qui a pour but de recevoir des données reçues en série, dans le but de le travailler et d'exécuter certaines commandes en fonction du mot envoyé en série. J'ai donc placé ma réception série dans un thread pour avoir accès au programme du temps qu'il recoive les infos. Le problème, c'est que je recois des infos toute les 250ms, donc le thread n'ayant jamais terminé son boulot, je ne vois jamais mes caractères s'afichent, j'aimerai que mes caractères s'affichent en live ! Merci beaucoup !
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
numero_port = portTxt.Text
vitesse_transfert = vitesseTxt.Text
bit_donnees = bitsTxt.Text
indice_sb = 1
SerialPort1.PortName = numero_port
SerialPort1.BaudRate = vitesse_transfert
SerialPort1.StopBits = bStop.Text
SerialPort1.DataBits = bitsTxt.Text
SerialPort1.Open()
point_suspension = 4
Me.RcvData = New Thread(New ThreadStart(AddressOf Me.ThreadProcSafe))
Me.RcvData.Start()
End Sub
Private Sub ThreadProcSafe()
Do
notif_timer = 0
Dim Incoming As String = SerialPort1.ReadLine()
If Incoming Is Nothing Then
Exit Do
Else
returnStr += Incoming & vbCrLf
notif_timer = 1
End If
Loop
Me.SetText(returnStr)
End Sub
Private Sub SetText(ByVal [text] As String)
If Me.receptionTxt.InvokeRequired Then
Dim d As New SetTextCallback(AddressOf SetText)
Me.Invoke(d, New Object() {[text]})
Else
Me.receptionTxt.Text = [text]
End If
End Sub