Récupération de trame RS 232 VB6 [Résolu]

JeanLouisBzh - 21 mai 2013 à 13:28 - Dernière réponse :  JeanLouisBzh
- 23 mai 2013 à 08:52
Bonjour à tous,

Je viens vous demander un petit coup de main (malgré plusieurs sites visités ainsi que l'aide de VB6) car je n'arrive pas à récupérer puis à afficher un trame sur une TextBox

voici mon code :
Private Sub BT_ENVOI_Click() 'Lors d'un click sur le bouton
Dim Trame As String
Trame = TXT_ENVOI.Text 'La trame envoyé est ce que j'ai remplis dans ma Textboxx
MSComm1.Output = Trame & (vbCrLf) 'A envoyer avec retour ligne et chariot
TXT_RECOI.Text = TXT_ENVOI.Text 'Affichage de la commande envoyée dans une
                                'autre textbox
End Sub

Private Sub Form_Load()
Dim buffer As String
MSComm1.PortOpen = True 'Port ouvert et la config du port est faite dans le Form1
End Sub


Private Sub MSComm1_OnComm()
buffer = MSComm1.Input 'Reception dans "buffer"
TXT_RS.Text = buffer 'Afficher "buffer"
End Sub



L'envoi des commandes fonctionne très bien.
Mais je voudrais maintenant récupérer la trame de retour.

Merci d'avance!
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
NHenry 14275 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 22 mai 2013 à 12:51
3
Merci
Bonjour,

La variable buffer sert à stocker temporairement les données pour être sûr de tout avoir, à toi de voir comment l'utiliser.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
JeanLouisBzh - 22 mai 2013 à 13:39
3
Merci
Merci NHenry je veux tout simplement l'afficher en entier donc je pensais qu'en l'affichant simplement sur une TextBox ça fonctionnerais mais non ...

Merci JeanLouisBzh 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de JeanLouisBzh
JeanLouisBzh - 21 mai 2013 à 14:51
0
Merci
J'ai modifié le Rthreshold à 1 pour recevoir à partir du premier caractère mais maintenant je reçois ce signe : "|" dans ma textbox alors que je devrais recevoir : "1" ou "0" ou "11111111"

Merci !
Commenter la réponse de JeanLouisBzh
NHenry 14275 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 21 mai 2013 à 18:47
0
Merci
Bonjour,

Tu parles en binaire ou en caractères ?
Car "11111111" en binaire, c'est &hFF en hexa alors que "11111111" en caractères, ça fait &h31 31 31 31 31 31 31 31 en ASCII.

Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Commenter la réponse de NHenry
JeanLouisBzh - 21 mai 2013 à 18:58
0
Merci
Bonjour,

Je cherche à récupérer des caractères (une vingtaine au maximum).

Merci !
Commenter la réponse de JeanLouisBzh
NHenry 14275 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 21 mai 2013 à 23:08
0
Merci
Bonjour,

Il te faut faire un buffer intermédiaire, une variable (globale dans un premier temps) de type String (chaine de caractères) qui servira à stocker les différents caractères reçus.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Commenter la réponse de NHenry
JeanLouisBzh - 22 mai 2013 à 09:12
0
Merci
D'accord, puis-je utiliser ma variable "buffer" déclaré en tant que variable globale?
Est-ce que je dois la traiter dans le programme Form1 ?

Merci
Commenter la réponse de JeanLouisBzh
Utilisateur anonyme - 22 mai 2013 à 16:47
0
Merci
Bonjour,

l'affichant simplement sur une TextBox ça fonctionnerais mais non ...

Et tu mets une réponse acceptée, alors que ton problème n'est pas résolu ???

Tu mets un timer de quelques millisecondes afin de lui laisser le temps de l'envoi des données dans le buffer:

Private Sub Form_Load()
Timer1.Interval = 100
Timer1.Enabled = False
End Sub

Private Sub MSComm1_OnComm()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Text1.Text = MSComm1.Input
End Sub



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
JeanLouisBzh - 23 mai 2013 à 08:52
0
Merci
Merci beaucoup a tous

J'ai trouver comment faire, j'utilise la fonction InBufferCount qui me donne mon nombre de caractère puis je définit InputLen = InBufferCount - 2. Il m’enlève les 2 derniers caractères (Retour chariot puis Nouvelle ligne).
If MSComm1.InBufferCount <> 0 Then
MSComm1.InputLen = MSComm1.InBufferCount - 2
End If
TXT_RS.Text = MSComm1.Input
MSComm1.InBufferCount = 0


Tout simplement

Merci encore d'avoir pris le temps de me répondre!
Commenter la réponse de JeanLouisBzh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.