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 Access Discussion :

VBA RS232 ASCII


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut VBA RS232 ASCII
    Bonjour,
    Je me permet de vous contacter car je dois faire une application afin de recuperer une valeur ASCII sur un codeur en RS232
    en hyperterminal quand je fais un test la communication se deroule bien
    je dois lui envoyer une chaine de caractere ASCII commencant par ctrl+b 0001 ctrl+c et l'automate me repond de la meme maniere
    voici le code que j'ai tapé mais je n'ai pas de reponse mais pas de message d'erreur non plus?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande9_Click()
        NETComm8.CommPort = 1		   il est bien branché sur le com 1
        NETComm8.Settings = "4800,N,7,1"	   ce codeur fonctionne en 4800b sur 7 bit parité paire bit de stop 1
     
        NETComm8.PortOpen = True
        NETComm4.RThreshold = 1
        NETComm8.Output = Asc("02000103")
        NETComm8.PortOpen = False
     
    End Sub
    merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 416
    Par défaut
    Je ne sais pas si cela viens de là mais Asc() ne renvoit que le code ascii du 1er caractère, dans ton cas le 1er '0'.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 247
    Par défaut
    salut,

    Je dis ça comme ça,

    Tu fermes le port à la fin, es tu sur que l'automate ouvre le port pour communiquer.

    A+

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut RS232
    Effectivement vos remarque sont bonnes, en fait avec qques jours de recul
    j'ai meiu compris le fonctionnement mais je n'arrive toujours pas à communiquer avec! En effet pour avoir une réponse de l'automate je dois lui envoyer une commande dans mon cas c'est de l'ascii : ctrl+b 0001 ctrl+c
    avec cette valeur l'automate me renvois la valeur afficher sur son ecran
    mais je ne c'est pas comment lui envoyer une chaine ascii???
    D'avance merci

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 416
    Par défaut
    Suggestion :

    - envoyer chaque caractère individuellement avec une rafale de commandes NETComm8.Output

    - essayer d'utiliser les fonctions de manipulations de fichier (open, print #, input #) et les vieux ports "COMx" du temps du DOS. Un truc du genre open "COM1:" for binary as #1.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut
    je ne comprends pas du tout votre explication desole.

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 416
    Par défaut
    Comme tu utilises Asc() pour écrire un caractère, si tu mets plusieurs instructions NETComm8.Output l'une endessous de l'autre tu devraiis pouvoir envoyer toute ta chaine. Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim instruction as string:instruction="02000103"
    dim i as integer:for i=1 to len(instruction)
       NETComm8.Output = Asc(mid(isntruction, i, 1))
    next i
    - essayer d'utiliser les fonctions de manipulations de fichier (open, print #, input #) et les vieux ports "COMx" du temps du DOS. Un truc du genre open "COM1:" for binary as #1.
    Il existait en DOS et de GW-BASIC un moyen de déclarer les ports de communications RS232 (COM1: ou COM2: généralement) comme des fichiers textes et ensuite d'utiliser les instructions Open, Print # et Input # pour écrire ou lire à partir de ces ports.

    Le code devrait ressembler à cela mais je ne l'ai pas validé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    open "COM1:" for binary as #1.
    print #1, "02000103"
    close #1
    Pour les détails de syntaxe et de paramètres, la touche magique : [F1].

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut Merci bcp de prendre la temps de répondre
    Bonjour,
    Je vais faire un test et je vous tiens au courant, mais c'est pas clair du tout pour moi je dois l'avouer.

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 416
    Par défaut
    Qu'est-ce qui n'est pas clair ?

    Le fait de traiter tes ports de communication comme des fichiers ?

    Ou l'appel aux vielles fonctions du DOS ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut Du nouveau
    Bonjour, je suis toujours dans une belle galere avec mon histoire !
    je pense savoir d'ou vient mon probleme
    le commande envoyer est celle ci :

    MSComm0.Output = Chr$(2) + "0001" + Chr$(127) + Chr$(3)

    cette commande sert à remettre un compteur à 0.
    En fait je pense qu'il y a un probleme de communication le port ne doit pas etre bien configurer car il ne reçois meme pas cette information.
    Dans la doc constructeur j'ai juste 7 bit et paire

    voici mon code :

    Private Sub Commande1_Click()
    MSComm0.CommPort = 1
    MSComm0.Settings = "4800,E,7,1"
    MSComm0.PortOpen = True
    MSComm0.Output = Chr$(2) + "0001" + Chr$(127) + Chr$(3)
    MSComm0.PortOpen = False
    End Sub


    je ne connais pas tout les autres parametres du port serie ....
    En voici qques un mais ca ne marche pas mieux!

    MSComm1.CommPort = 1
    MSComm1.Settings = "4800,E,7,1"
    MSComm1.Handshaking = 0 'RTS
    MSComm1.InputLen = 0
    MSComm1.RTSEnable = True
    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True

    Merci pour votre aide...

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 416
    Par défaut
    Quel est la définition de MSComm1 ? C'est quelle classe d'objet ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [XL-2010] Lire données RS232 en VBA
    Par Dudulle32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2014, 16h43
  2. [AC-2003] Piloter RS232 avec VBA Access
    Par abde17-s dans le forum VBA Access
    Réponses: 0
    Dernier message: 22/12/2011, 16h11
  3. [XL-2000] Fonction VBA qui renvoie le caractère ascii d'un nombre
    Par franky7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/09/2011, 09h31
  4. Activx RS232 en VBA
    Par Guig74 dans le forum Général VBA
    Réponses: 3
    Dernier message: 23/04/2007, 18h24
  5. [vba] Envoi de fichier ascii client Windows => server Lin
    Par kremvax dans le forum Général VBA
    Réponses: 3
    Dernier message: 28/11/2005, 13h00

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