Probleme avec ma reception sur mon port com

Résolu
Signaler
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015
-
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015
-
Bonjour et bon dimanche à tous,

Voila, j'affiche dans un textbox la reception des données que j'ai envoyer sur mon port com
l'envoie se fait bien dans sa totalite mais la reception dans mon textbox se fait caractere par caractere
- si j'envoi "1000"
- je recoit "1" puis "0" puis "0" "0"
je dois appuyer a chaque fois sur mon boutton reception pour avoir la suite
pourtant apres controle le probleme n'est pas à l'envoie de mes données mais bien à la reception
Mon code :
        'envoi du contenu du textbox1 sur le port
        SerialPort1.Write(TextBox1.Text)

        'lecture du serialport et mettre le contenu dans textbox2
        TextBox2.Text = System.Convert.ToChar(SerialPort1.ReadChar)
Mes remerciements
A+

8 réponses

Messages postés
14847
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2022
160
Bonjour

C'est donc normal, WriteLine te met un Chr(10) (ou VBLf) en fin de ligne.

Si tu ne veux pas de retour à la ligne, tu peux utiliser WriteLine.
Ou sinon, il y a une propriété (un truc du genre NeLine) que tu peux définit à VbCrLf.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
14847
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2022
160
Bonjour

C'est normal, tu lit les caractères un par un.

Si tu veux tout lire, utiliser Serialport1.ReadExisting.

Conseil, évite les noms par défauts.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Merci NHenry pour ta reponse,

Mais en utilisant ReadExisting, j'affiche un caractere en plus a la fin des caracteres de mon textbox, cela resemble à un petit rectangle horizontal
je ne sais pas d'ou cela sort

Mon code :

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        'Quand il y a quelquechose dans le buffer de réception çà lit les données
        'et les ajoutes à la textbox
        TextBox2.Text = TextBox2.Text & SerialPort1.ReadExisting.ToString

    End Sub

A+
Messages postés
14847
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2022
160
Bonjour

Déjà pas besoin de .ToString, ReadExisting te retourne une String.

Quel est ton équipement/logiciel qui te génère les données que tu reçoit ?

Ou si tu veux vraiment utiliser ReadChar, tu peux utiliser ByteToRead pour connaitre le niombre d'octet à recevoir.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Je n'ai pour l'instant pas d équipement sur mon port juste une boucle entre RX et TX
Je veux me familiarise avec le code pour developper un projet à base de microcontroleur sur le port serie
Mon probleme est que quand je click sur mon bouton je recoit toujours ce caractere en plus (un petit rectangle verticale a la fin)

-"Déjà pas besoin de .ToString, ReadExisting te retourne une String."
cela ne change rien
Merci pour ton aide
A+
Messages postés
14847
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2022
160
Bonjour

Quel code tu utilises pour envoyer ?

WriteLine ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Oui WriteLine

Mon code :

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'Envoi du contenu du textbox1 sur le port
        SerialPort1.WriteLine(TextBox1.Text)

    End Sub

 Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        'Quand il y a quelquechose dans le buffer de réception çà lit les données
        'et les ajoutes à la textbox
        TextBox2.Text = TextBox2.Text & SerialPort1.ReadExisting

        'Affiche le nombre de caracteres envoyer
        Label5.Text = "Nombre de caractères : " & TextBox1.TextLength

    End Sub
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Merci beaucoup pour tous ces renseignements
ca fonctionne
je vais pouvoir continuer mon pojet
Merci encore
A+