Bonjour,

Dans le cadre d'un projet de communication série avec un routeur, j'ai besoin d'envoyer une chaine sur le port COM et attendre la réponse du routeur pour pouvoir analyser celle-ci. L'émission/réception fonctionne, quand le programme reçoit des informations sur le port COM sa déclenche un événement et insère le texte reçu dans un TextBox.

Seulement je suis confronté à un problème, mon TextBox n'est pas encore mis à jour que le programme analyse déjà le TextBox. Donc je cherche à faire patienter le programme jusqu'à ce que le TextBox ait changé. J'ai bien tenté un Thread.sleep(100) mais sa ne fonctionne pas. Je pense que la solution doit se trouver du coté du multi-threading mais je ne comprend pas vraiment comment implémenter ceci dans mon programme.

Voici mon code complet :
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
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CheckForIllegalCrossThreadCalls = False
        AddHandler SerialPort1.DataReceived, AddressOf SerialPort1_DataReceived
        Try
            SerialPort1.Open()
        Catch ex As Exception
            MsgBox("Impossible d'ouvrir le port COM")
        End Try
 
    End Sub
 
    Public Sub send(ByVal texte As String)
        SerialPort1.Write(texte)
    End Sub
 
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
        If SerialPort1.IsOpen = True Then
            Read()
        End If
    End Sub
 
 
    Private Sub Read()
        If SerialPort1.IsOpen Then
            Dim data As String = SerialPort1.ReadExisting()
            Me.RichTextBox1.Text += data
        End If
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        send(vbLf)
        'Attendre que RichTextBox.text change avant de continuer
    End Sub
End Class
Merci d'avance pour votre aide