RS232 et Retour chariot VB6

Signaler
Messages postés
9
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
12 août 2007
-
Messages postés
4
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
27 mai 2009
-
Bonjour,


On sait tous que pour faire un retour chariot avec le logiciel "hyper teminal" via une liaison RS232, il suffit d'envoyer le chiffre "13".

Par contre sur VB6, lorsque j'envoie le chiffre "13" après mon message(dans une textbox) j'obtiens le résultat suivant :
"mon message"|
Le retour chariot sur VB6 ne fonctionne donc pas comme sur hyper terminal ??

Pouvez vous m'aidez à atteindre le fonctionnement décrit ci-dessous :

Le message N°1 envoyé sur le port série s'affiche dans une texbox monoligne.
(--> jusque là tous va bien )

Ensuite Le message N°2 vient effacer le message N°1 et s'affiche donc dans la texbox monoligne à la place du message N°1.

J'espère avoir été assez clair...
Merci pour vos réponses.

12 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Salut
Ce n'est pas la connexion RS qui pose problème, mais le composant dans lequel tu l'affiches.
Si c'est un TextBox, assure toi qu'il a bien la propriété Multiline à True.Ensuite, dans une TextBox, le retour à la ligne est un double caractère : 13 (Cr Carriage Return) puis 10 (Lf LineFeed) qui est une constante de vb nommée vbCrLf.
Mais si le TextBox est "monoligne", ce caractère | s'affichera, c'est sûr (dans ce cas, pourquoi l'envoyer ?).
Si tu n'en veut pas, supprime le avec
Text1.Text = Replace(laChaineReçue, vbCr, "")
ou
Text1.Text = Replace(laChaineReçue, vbCrLf, "")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
9
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
12 août 2007

Merci pour ta reponse,

J'ai mit une texbox monoligne volontairement car je souhaite que chaque nouveau message envoyer sur le port série soit afficher dans la texbox et efface le message précédent...

...j'y arrive toujours pas ;- /
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Donc il te suffit de supprimer de ta chaine les caractères de controles comme les Chr(13), avant de l'nvoyer dans ta TextBox.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
9
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
12 août 2007

Ouai j'ai déjà essayer comme sa, mais dans ce cas, sa crée un défilement des messages dans la texbox. Autrement dit, les messages se suivent les uns les autres et défilent de droite à gauche dans la texbox...

Il y a peu être un paramètre de la textbox qui permet d'éviter celà ?
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
23
Ecoute, met-nous ton code d'où tu en es actuellement, ce sera plus clair pour tout le monde!!!

Enjoy


( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
Bonjour


je pense à un code comme :



if instr(ChaineReçue,vbcr)<>0 then

Effacer TextBox

Mettre le nouveau message





Tu peux voir pour un split si plusieurs messages peuvent arrivés en mme tmps.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Re
Non, ça ne vient pas du TextBox mais de la manière dont tu acquières les données de ton MSComm.
En fait, comme pour les Winsock, il est fort possible que tu récupères plusieurs messages à la suite car tu as mis trop de temps à les récupérer.
Dans ce cas, il te suffit de découper ce que tu reçois (en vérifiant s'il y a un Chr(13) au milieu du buffer) et de ne garder que le dernier pour l'afficher.
Comme le dit NHenry, tu peux utiliser Split (voir aide) pour dissocier les messages.
Si tu veux qu'on t'aide plus efficacement, il nous faut à tout prix ton code.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
9
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
12 août 2007

Effectivement sa serai plus clair avec les codes !
je pense que le problème vient de ma façon de traiter les informations reçu sur le port série...( traitement tampon)

Ci- dessous les codes que me permettent de récupérer les trames provenant d'un microcontrôleur PIC, sur le port RS232 du PC et de l'afficher dans une texbox :

-------------------------------------------------------------------------------------

Private Sub Form_Load()

'configuration du port série
With MSComm1
.CommPort = 5
.Handshaking = 0
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen =
True
End With

End Sub

-------------------------------------------------------------------------------------

Private Sub MSComm1_OnComm()

Dim tampon As String ' C'est dans la variable "tampon" que l'on pourra récupérer la trame reçue par le port série

Select Case MSComm1.CommEvent

Case comEvReceiv
'on a reçu des données
tampon = MSComm1.Input

Call Traitement(tampon)
'traitement données

End Select

End Sub

-------------------------------------------------------------------------------------

Sub Traitement(Chaine As String)


'cette procédure sert à traiter l’information reçue dans le tampon
Text1.SelStart = Len(Text1.Text)
Text1.SelText = Chaine 'on affiche ici le résultat dans un champ de texte

End Sub

-------------------------------------------------------------------------------------

Donc avec ce code, je reçois bien les "trames" envoyé par le PIC sur le port série.
Le seule problème est que lorsque le PIC envoi plusieurs trames d'affilé sur le port série RS232, ces dernières s'affiche les unes à la suite des autres dans la texbox . ( trame1trame2,trame3,trameN...)

-------------------------------------------------------------------------------------

Or il faut que chaque trame reçut s'affiche dans la texbox, en effaçent la trame précédente...

Comme je l'ai expliqué plus haut, avec le logiciel Hyper Terminale, lorsque le PIC envoi une trame + un retour chariot (13), sa fonctionne !
Par contre avec VB6, sa ne fonctionne pas

A noter que avec VB6, lorsque le PIC envoie une trame + retour chariot (13) + retour à la ligne(10), sa fonctionne mais dans ce cas, chaque trame reçu sur le port série s'affiche les unes en dessous des autres. ( donc s'est pas bon )
Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
Bonjour


Essaye de faire un Split et récupère le dernier élément de du tableau.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Oui, avec hyperterminal ça fonctionne parce qu'il a une TextBox multiligne pour l'affichage, mais pas toi !
Comme tu ne veux afficher que la dernière trame reçue alors que tu en acquieres plusieurs d'un coup, il faut filtrer !
NHenry insiste avec le Split et il a raison !
Comme il faut tout te macher :
Dim Tablo() As String
Tablo = Split(Chaine, vbCr)
Text1.Text = Tablo(UBound(Tablo))
... et oublie ton SelText ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
9
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
12 août 2007

Cool ! j'ai trouver quelque chose d'interessant sur le site !
la reponse à ma question se trouve là dedans : http://www.vbfrance.com/code.aspx?id=25327

Je n'ai plus qu'as épluché le code...
Merci pour votre aide
A+++
Messages postés
4
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
27 mai 2009

meme probleme mon ami
comment ajouter un retour chariot a la chaine recue
svp quelqu'un peut m'aider....