Bonsoir je reçois des données sur le port série, au quel j'applique un traitement, je trouve mon code un peu lourd, pensez vous que je peux le réduire ?

d'abord mon data_received :
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
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
 
        Dim donnee As String = 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
        If Me.InvokeRequired Then
            Me.Invoke(New _Affiche_ASCII(AddressOf Affiche_ASCII), donnee)
        End If
 
        'ici je stocke les données recu dans un fichier 
        Dim monStreamWriter As StreamWriter = New StreamWriter("C:\trame.txt", True, System.Text.Encoding.ASCII)
 
        'Variable permettant l'ecriture et la lecture
        Dim SWrite As StreamWriter
        Dim TexteAEcrire As String = donnee
 
        'Le cree
        SWrite = monStreamWriter
        'Ecrire
        SWrite.WriteLine(TexteAEcrire)
        'Le fermet
        SWrite.Close()
 
        'Reinitialiser la variable d'ecriture
        SWrite = Nothing
    End Sub
ici mon sub affiche_ASCII ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Private Sub Affiche_ASCII(ByVal donnee As String)
        'ici j'affecte les données recu dans mon textbox2.text qui n'est pas visible pour l'utilisateur
        TextBox2.Text = TextBox2.Text & donnee
        For Each ligne As String In TextBox2.Text
            Try
                'ici je met dans ma variable attente je remplace certains caractéres reçus par un vide""
                attente = TextBox2.Text.Replace(Chr(10), ControlChars.CrLf).Replace("W1", "").Replace("W1", "").Replace("W1E", "").Replace("W1E", "").Replace("W0F", "").Replace("E", "").Replace("F", "")
                'ensuite je transfert le tout dans ma textbox1 pour l'afficher à l'utilisateur mais avant j'applique la fonction extraction
                TextBox1.Text = Extraction(attente)
            Catch ex As Exception
 
            End Try
        Next
    End Sub
et enfin ma fonction extraction qui recupére le texte compris entre deux mots de la variable 'attente' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    Public Function Extraction(ByVal attente As String) As String
        Dim motARechercher1 As String = "Intervention"
        Dim motARechercher2 As Char = "Alerte"
        Dim fin1 As Integer = attente.IndexOf(motARechercher1, 0, System.StringComparison.InvariantCultureIgnoreCase)
        Dim fin2 As Integer = attente.IndexOf(motARechercher2, 0)
        Return attente.Substring(fin1, fin2)
    End Function
Voila comme je suis débutant, je trouve ça un peu lourd comme code, peut être qu'il y a moyen de faire plus simple ?