Probleme avec ma reception sur mon port com

Résolu
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022 - 11 mai 2008 à 08:09
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022 - 11 mai 2008 à 10:59
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

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 mai 2008 à 10:53
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
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 mai 2008 à 08:52
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
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
11 mai 2008 à 09:49
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+
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 mai 2008 à 10:19
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
11 mai 2008 à 10:27
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+
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 mai 2008 à 10:41
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
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
11 mai 2008 à 10:44
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
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
11 mai 2008 à 10:59
Merci beaucoup pour tous ces renseignements
ca fonctionne
je vais pouvoir continuer mon pojet
Merci encore
A+
0
Rejoignez-nous