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
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
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
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 :
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
Partager