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

Excel Discussion :

lecture port serie rs232 vba


Sujet :

Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Par défaut lecture port serie rs232 vba
    Bonjour
    je suis bloquer sur l'acquisition de mesure d'une balance sur vba
    voila j'ai réussie a mettre le mscomm sur le userform grace a se forum et aux opération de registre que j'ai effectuer , maintenant j'ai fait un petit programme qui permet de faire l'acquisition mais un message d'erreur s'affiche (Erreur 8005 . "port already open" a la ligne MSComm1.PortOpen = True en sachant que j'utilise windows 7 ,balance - 9600bauds,8bits de données,pas bit de parité,1 bit de stop ,
    j'ai utiliser hyperterminal pour tester le port com1 en reliant la sortie et l'entrée (txd,rxd) par un trombone la communication est efficace
    donc le problème est il :
    dans l’appareille de mesure ou liaison rs232 non croiser ?
    version mscomm32.ocx qui n'est pas bonne ?
    le pilote port serie ?
    le code effectuer ?
    Merci de vouloir m'eclairsire la situation
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Private Sub CommandButton1_Click()
    'Vider le buffer
    MSComm1.InBufferCount = 0
    'Numéro port série
    MSComm1.CommPort = 1
    'Vitesse, parité, nb bits
    MSComm1.Settings = "9600,N,8,1"
     
    'ouvre le port
    MSComm1.PortOpen = True
     
    'Lecture de la trame
    Dim Reponse As Variant, Msg$
    On Error Resume Next: Err.Clear
    Do: If Err Then Exit Do
    MSComm1.InputLen = 15
    Msg$ = Msg$ & MSComm1.Input
    Reponse = MsgBox("Appuyer sur le bouton PRINT de la balance et cliquer sur OK" & vbCrLf & Msg$, vbOKCancel, "Annuler pour quitter")
    If Reponse <> vbOK Then Exit Do
    Loop
     
    'Traitement de la pesée
    If (Msg$ <> "") Then
        'Affichage dans l'userform
        Label1.Caption = Msg$
        'Lecture à partir du 8ème bit
        Msg$ = Mid(Msg$, 8)
        'Lecture de 6 bits
        Msg$ = Left(Msg$, 6)
        'Ecriture du poids dans la cellule active
        ActiveCell.Value = Msg$
    End If
     
    'ferme le port
    MSComm1.PortOpen = False
     
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    n'y connaissant rien, je me permet une suggestion parfaitement triviale, qu'on voudra bien m'excuser (c'est pour faire avancer le schmilblick)

    si l'erreur c'est "port déjà ouvert", tu peux essayer de mettre la ligne de code qui l'ouvre en commentaire pour la neutraliser ?

    j'ai également l'impression que dans ton code, tu as des gestion d'erreur et des conditions qui te font sortir de la procédure .... instructions étant toutes située avant la ligne de code qui ferme le port ... qui pourrait peut être expliquer qu'il est déjà ouvert après avoir lancé une première fois le code ?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    n'y connaissant rien, je me permet une suggestion parfaitement triviale, qu'on voudra bien m'excuser (c'est pour faire avancer le schmilblick)

    si l'erreur c'est "port déjà ouvert", tu peux essayer de mettre la ligne de code qui l'ouvre en commentaire pour la neutraliser ?

    j'ai également l'impression que dans ton code, tu as des gestion d'erreur et des conditions qui te font sortir de la procédure .... instructions étant toutes située avant la ligne de code qui ferme le port ... qui pourrait peut être expliquer qu'il est déjà ouvert après avoir lancé une première fois le code ?
    Merci ,
    j'ai changer pas mal de fois le code j'ai même esseyer juste de forcer la fermeture et l'ouverture avec des codes simple, mais je pense que c'est une question de communication si quelqu'un a eux se genre de problème avec le mscomm vba

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    De ce que j'ai rapidement vu sur internet, il est possible que le port soit utilisé par une autre application

    je te laisse chercher comment tester ça

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    De ce que j'ai rapidement vu sur internet, il est possible que le port soit utilisé par une autre application

    je te laisse chercher comment tester ça
    sa dois être sa oui , bon quelqu'un est venu pour rajouter des port série RS232 je pense qu'il a fait quelque chose pour les relier
    mais le problème c'est que j'ai pas trouver une méthode concrète de déterminer quel application est elle utiliser par le com1 , avez vous une sur le bios ou autre ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5

  7. #7
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Merci c'est intéressant , mais cette article s'applique a windows xp , moi je travaille sur windows7 , bon je me suis débarasser du message d'erreur c'est une boucle qui ne s'est pas exécuter dans le programme précédent qui a laisser le port ouvert , donc pour l'instant j'ai modifier un code que j'ai trouver pour correspondre au instruction fournie par le fabriquant , c'est d'envoyer le numéro 1 en ASCCI suivi d'un retour chariot , et toujours pas de résultat.
    le code
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     Private Sub CommandButton1_Click()
     
    'Exécution du code ci-dessous sur clic du bouton "Command1"
     
        'Test des paramètres de communications
        If (MSComm1.Settings <> "9600,N,8,1") Then
            MSComm1.Settings = "9600,N,8,1"
        End If
     MsgBox "les paramétres sont bon"
        'Si le port est ouvert, on le ferme pour le réouvrir avec les nouveaux paramètres.
        If (MSComm1.PortOpen = True) Then
            MSComm1.PortOpen = False
            MSComm1.InBufferSize = 1024
            MSComm1.OutBufferSize = 512
            MSComm1.PortOpen = True
        ElseIf (MSComm1.PortOpen = False) Then
            MSComm1.InBufferSize = 1024
            MSComm1.OutBufferSize = 512
            MSComm1.PortOpen = True
        End If
     
        'La ligne Terminal de données prêt est activée lors de l'ouverture du port (si = TRUE)
        MSComm1.DTREnable = True
     
        ' La ligne Demande pour émettre est active au moment de l'ouverture du port et inactive lors de sa fermeture
        MSComm1.RTSEnable = False
     
        'Si RThreshold = 1, le contrôle MSComm génère l'événement OnComm chaque fois qu'un caractère est
        'placé dans le tampon de réception
        MSComm1.RThreshold = 1
     
     
     
        'Indique le mode d'extraction des données par la propriété Input
        MSComm1.InputMode = comInputModeText
     
        'Envoie d'une information pour que l'appareil retourne la valeur de la mesure
       MSComm1.Output = Chr$(1) + Chr$(13)
       MsgBox "la mesure a étais relever "
     
    End Sub
     Sub MSComm1_OnComm()
    'OnComm est exécuté chaque fois que la valeur en paramètre est modifiée (MSComm1)
     
        Dim str_tampon As String
     
        str_tampon = ""
     
        'La ligne Terminal de données prêt est activée lors de l'ouverture du port (si = TRUE)
        MSComm1.DTREnable = False
     
        ' La ligne Demande pour émettre est active au moment de l'ouverture du port et inactive lors de sa fermeture
        MSComm1.RTSEnable = False
     
        'Si RThreshold = 1, le contrôle MSComm génère l'événement OnComm chaque fois qu'un caractère est
        'placé dans le tampon de réception
        MSComm1.RThreshold = 1
     
        'Indique le mode d'extraction des données par la propriété Input
        MSComm1.InputMode = comInputModeText
     
        str_tampon = str_tampon & str_tampon & MSComm1.Input
     
        MsgBox str_tampon
     
     
    End Sub

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

Discussions similaires

  1. lecture port serie tcomport
    Par STEPH42160 dans le forum C++Builder
    Réponses: 30
    Dernier message: 22/02/2007, 00h19
  2. r/w par port serie rs232
    Par marouane2010 dans le forum MFC
    Réponses: 5
    Dernier message: 24/08/2006, 09h40
  3. [Info] Port serie RS232 recuperer une frame ...
    Par wfs-TiBaL dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/03/2006, 14h24
  4. Besoin de communiquer avec un port serie RS232 ?
    Par MonsieurAk dans le forum Linux
    Réponses: 2
    Dernier message: 01/02/2006, 17h13
  5. [TP] port série rs232
    Par cyb33 dans le forum Turbo Pascal
    Réponses: 44
    Dernier message: 13/01/2003, 15h49

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