Bonjour,

Je travaille sur une application qui doit pouvoir communiquer en liaison série avec une carte éléctronique. Pour vérifier la présence de la carte, mon logiciel envoi un 0 et la carte répond par un 1. Chaque octet transmis est affiché dans un richtextbox me servant de console de supervision. Je suis confronté à un problème conçernant l'écriture dans la console. A chaque envoi d'un 0, celui-ci s'affiche bien dans la console. Mais le 1 reçu par la carte ne s'affiche pas dans la console.

Voici les différentes méthodes :

Événement de réception série, celui-ci se déclenche à la réception d'une donnée venant du port série

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub RXUART(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If SerialPort1.IsOpen Then
            'data = donnée reçue du port COM 
            Dim data As String = SerialPort1.ReadExisting()
 
            If attenteACK And data = "1" Then
                ACKrecu = True
            End If
            console.addCarTextBox(data)
 
        End If
    End Sub
Méthodes d'envoi de données par port série

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 Public Sub envoiUART(ByVal commande As Char())
        If Not erreurComENCOURS Then
            Try
                For Each car In commande
                    SerialPort1.Write(car)
                    console.addCarTextBox(car)
                Next
            Catch ex As Exception
                erreurCOM()
            End Try
        End If
    End Sub
Méthode pour écriture dans le richtextbox

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Public Sub addCarTextBox(ByVal text As String)
        If text = "1" Then MsgBox("ok")
 
        contenuTextBox &= text
        RichTextBox1.AppendText(text)
        RichTextBox1.SelectionStart = RichTextBox1.Text.Length
        RichTextBox1.ScrollToCaret()
    End Sub
La condition affichant un msgbox si la donnée est égale à 1 se vérifie ... A chaque envoi d'un 0, la carte me répond et je rentre bien dans la méthode pour écrire dans la console. Mais la donnée ne s'ajoute pas dans la console.

L'envoi du 0 se fait toute les 700ms par défaut, donc un 0 est écrit toute les 700ms dans le richtextbox
Je suppose qu'il y a un problème d'accès au contrôle car quand je teste ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
console.addCarTextBox(car)
en dehors de l’événement, celui-ci fonctionne bien.
Il y a t'il une solution pour que je puisse arbitrer l'accès au contrôle ?

Merci d'avance à ceux qui se pencheront sur mon problème

Cordialement