IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

[Débutant] Port Com MSComm1.Output et Input


Sujet :

VBA

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 106
    Points : 66
    Points
    66
    Par défaut [Débutant] Port Com MSComm1.Output et Input
    Bonjour

    J'essaie de créer un programme pour une liaison série entre un périphérique (capteur) et le PC via le port com (rs232). J'ai écrit quelques lignes de code en m'inspirant des différents tutoriaux trouvés sur le net.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
    MSComm1.PortOpen = True
    MSComm1.Output = "abc" & Chr$(13)
    MSComm1.InputLen = 0
    TextBox1.Text = MSComm1.Input
    MSComm1.PortOpen = False
    End Sub
    Quand j'appuie sur le bouton voilà ce qui s'écrit dans la zone de texte:‪6*‬*‫‪6
    (un carré, un 6, un carré, un 6)

    Comment décoder ça (ça veut dire quelque chose ?)

    J'ai essayé d'écrire ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=MSComm1.Input
    ChrB(a)
    et de placer un espion sur la variable a pour voir ce que ça donne mais il semble qu'il y a une incompatibilité de type.

    L'objectif de mon programme est d'envoyer une donner (avec Output via un buffer) puis de récuper une donnée du port (avec Input et de lire le buffer).

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    essai plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=MSComm1.Input
    debug.print asc(a)

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 106
    Points : 66
    Points
    66
    Par défaut
    a prend la valeur décimale 21 (ça correspond au code ASCII NAK)

    Dites moi si je me trompe mais je voudrais savoir :
    lorsque j'utilise MSComm1.Output="abcde" est-ce que la chaine abcde est envoyée sur le port ?
    Et si oui comment récupérer cette valeur avec la fonction MSComm1.Input ?
    (faut-il utiliser l'évènement OnComm ?)

    Merci

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    as-tu lu :

    Programmer le port série avec le contrôle MsComm par Alexandre Lokchine

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 106
    Points : 66
    Points
    66
    Par défaut
    Oui plusieurs fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do
      DoEvents 'indispensable sinon ça marche pas!!!
      Tampon$ = Tampon$ & MSComm1.Input
    Loop Until InStr(Tampon$, "OK" & vbCrLf)
    je sens que ces lignes de code sont importantes mais dans mon code ça ne fonctionne pas.

    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
    Dim tampon As String
     
    Private Sub CommandButton1_Click()
    With MSComm1
       .CommPort = 1
       .Handshaking = 2                
       .RThreshold = 1                
       .RTSEnable = True               
       .Settings = "9600,n,8,1"
       .SThreshold = 0               
    End With
     
    MSComm1.InputLen = 0
    MSComm1.PortOpen = True
    MSComm1.Output = "111111111"            'OutBufferCount vaut bien 9
    MSComm1.PortOpen = False
     
    End Sub
     
    Private Sub MSComm1_OnComm()
        Case comEvReceive       ' Si on reçoit des données
            tampon = tampon + MSComm1.Input
            Call Traitement(tampon$) ' Routine de traitement
    End Sub
     
    Sub Traitement(tampon As String)
    TextBox1.Text = TextBox1.Text & tampon
    End Sub
    Le probleme c'est que le programme ne sort jamais de la boucle (peut-être parce qu'il ne reçoit pas de données). Donc, à quoi doit ressembler le code qui contiendrait MSComm1.Input ?

    Merci

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    attention tu ne peu pas mélanger les 2 méthodes données .. dans le lien ... soit tu utilise une boucle, soit tu fonctionne par événements...

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 106
    Points : 66
    Points
    66
    Par défaut
    OK. Merci pour cette précision.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant]Lecture port COM avec configue
    Par kyoleroi dans le forum C++
    Réponses: 0
    Dernier message: 22/04/2008, 12h02
  2. [socket] envoyer des données vers un port com
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 20/07/2004, 17h35
  3. [debutant][Port COM]
    Par Shooter dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/07/2004, 09h43
  4. [javaComm]Communication port COM
    Par gui4593 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 04/06/2004, 12h35
  5. port com
    Par jeremi dans le forum C
    Réponses: 12
    Dernier message: 16/09/2002, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo