Bonjour,
je reçois du texte ASCII par un port série, et je souhaite effectuer un traitement sur ce texte, (c'est à dire remplacer certains caractère par " ")
donc voici ma méthode :
je déclare un delegate dans ma classe :
Private Delegate Sub _Affiche_ASCII(ByVal donnee As String)
ensuite mon datareceived du port série :
1 2 3 4 5 6 7 8 9 10 11 12 13
| 'Evènement se déclenchant lors de l'arrivée de données sur le port RS232
Private Sub RS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived
Dim nb_octet As Integer = RS232.BytesToRead ' on récupère le nombre d'octet présent dans le tampon
Dim trame(nb_octet - 1) As Byte ' Tableau acceuillant les données au format byte
RS232.Read(trame, 0, nb_octet) 'on lit le port
donnee = System.Text.Encoding.ASCII.GetString(trame) ' on récupère les données au format ASCII
'L'évènement DataReceived se situe sur un thread différent que le form, nous devons donc appelé un délégué pour afficher le résultat à l'écran
Me.Invoke(New _Affiche_ASCII(AddressOf Affiche_ASCII), donnee)
End Sub |
et ma fonction Affiche_ASCII :
1 2 3 4 5 6 7 8 9 10
| Private Sub Affiche_ASCII(ByVal donnee As String)
TextBox2.Text = TextBox2.Text & donnee 'affecte a la textbox2 les données recu à modifier
For Each ligne As String In TextBox2.Text
Try
attente = TextBox2.Text.Replace(Chr(10), ControlChars.CrLf).Replace("W1", "").Replace("W1", "").Replace("W1E", "").Replace("W1E", "").Replace("W0F", "").Replace("E", "").Replace("F", "") 'attente est la variable qui contient les données propre, avec les caractère remplacé
TextBox1.Text = attente 'j affiche le tout à l'utilisateur
Catch ex As Exception
End Try
Next |
sur ma form j'ai deux Textbox :
Textbox2.Text (visible=false) qui reçoit les donnée brut sans remplacement de caractère par " "
et Textbox1.Text visible pour l'utilisateur qui affiche les donnée avec les caractère remplacé
Je trouve ma méthode un peu lourde, voyer une solution pour raccourcir tout ca ?
Partager