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

C++ Discussion :

Port parallèle et C++


Sujet :

C++

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut Port parallèle et C++
    Bonjour a tous !

    Je suis étudiante en 3eme année de licence informatique et j'ai un projet à développer.

    Il s'agit de communiquer avec le port parallèle via la dll inpout32.dll jusqu'ici tout va bien.

    Le but est la communication avec un lecteur de badge et c'est la que ca se complique.

    J'arrive a envoyer des données via la fonction Out32 et a les relire via l'autre fonction de la dll.

    Le soucis cest que je n'ai pas l'impression que le lecteur soit impliqué, il dispose d'un beeper lié a la broche 14 et une led sur la broche 1 et malgré que jenvoi un code hexa avec des états différents sur ces broches je n'ai ni bip ni allumage de led. Je pense donc n'avoir pas bien compris le principe de l'échange entre le lecteur et le pc.

    Je cherche donc a comprendre et a coder la reception des données du badge une fois que l'on a badgé.

    Je vous remercie d'avance et si besoin je peux fournir quelques details supplémentaires

    Joyeuses fêtes

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut
    Je me permet juste de rajouter un détail que je viens de constater et qui me panique encore plus... mon code fonctionne lorsque de le lecteur est déconnecté ce qui prouve que je n'ai pas d'échange avec le lecteur mais uniquement le port

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonsoir,

    comment as-tu testé ton port parallèle sans le lecteur ? Y as-tu branché des LED pour vérifier l'état des sorties (par exemple) ?
    inpout32.dll ne fonctionne que sur une machine 32 bits.

    Je pense que tu peux essayer cette méthode mais cela nécessite un petit bricolage.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut
    Dans un premier temps j'ai branché le lecteur, j'ai codé une classe avec une méthode qui charge la dll avec LoadLibrary et ai défini des pointeurs vers les fonctions de la dll.
    J'ai ensuite fait des tests de ce style : Out32(0x378, 0x26) ou Inp32(0x379) et je n'ai aucune erreur de de compilation, la fonction de lecture lit d'ailleurs un caractère ascii ... seul hic, meme en debranchant le lecteur la classe fonctionne... je n'y comprend rien

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut
    Pour info c'est un lecteur de tag RFID

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par Yunie68 Voir le message
    J'ai ensuite fait des tests de ce style : Out32(0x378, 0x26) ou Inp32(0x379) et je n'ai aucune erreur de de compilation
    L'absence d'erreurs de compilation ne veut pas dire que le code fonctionne.

    Citation Envoyé par Yunie68 Voir le message
    , la fonction de lecture lit d'ailleurs un caractère ascii ... seul hic, meme en debranchant le lecteur la classe fonctionne... je n'y comprend rien
    Si tu peux lire un caractère c'est que ton lecteur répond, non ?

    Peux-tu poster ton code ? Et quel est le modèle de lecteur ?

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut
    Bonjour,

    Merci pour tes réponses, le lecteur est un Lecteur RFID avec interface TTL Wiegand 26 et le tag est un transpondeur compatible EM4100.

    Voici le .cpp de ma classe "RFID" qui s'occupe de la liaison entre la futur application et le lecteur.

    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
     
    void RFID::InitRFID()
    {
    	//Chargement de la DLL
    	hLib=LoadLibrary("inpout32.dll");
     
    	if(hLib)
    	{
    	     if(inportb=(inpfuncPtr) GetProcAddress(hLib, "Inp32"))
                       cout<<"Chargement de Inp32 reussi !"<<endl;
                 else
                       cout<<"Echec du chargement de Inp32 !"<<endl;
     
                 if(outportb=(oupfuncPtr) GetProcAddress(hLib, "Out32"))
                       cout<<"Chargement de Out32 reussi !"<<endl;
                 else
                       cout<<"Echec du chargement de Out32 !"<<endl;   
     
    		//Initialisationh des ports
     
    		outportb(CTRL_ADDR, 0xCC);
    		cout<<"Port CTRL initialise !"<<endl;
     
    		outportb(DATA_ADDR, 0x26);
    		cout<<"Port DATA initialise !"<<endl;
     
    		byte test =inportb(DATA_ADDR);  
     
    		cout<<" test byte = "<<test<<endl;
    	}
    	else
    		cout<<"Echec du chargement de la DLL !"<<endl;
    }
    Ce code fonctionne même en ayant le lecteur débranché et juste la rallonge de branchée

  8. #8
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    D'après le document PDF (pièce jointe) que j'ai récupéré sur Wikipédia à propos de l'interface Wiegand, le protocole de communication ressemble plus à celui du port série que celui du port parallèle.

    Autres liens :
    http://en.wikipedia.org/wiki/Wiegand_interface

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut
    Oui voilà c'est un peu ce qui est décrit fans le sujet du projet mais n'y connaissant rien aux communications avec les ports je n'avais pas fait le lien.

    J'ai bien compris le concepte du 1 et 0 logique en fonction de DATA1 et DATA0 mais cela dit je ne voit toujours pas comment communiquer avec le recepteur ni comment expliquer que mon code fonctionne sans qu'il soit branché

  10. #10
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    A partir du moment où la DLL est chargée, le programme fonctionne. La DLL pilote le port parallèle, c'est tout. inpout32.dll ne vérifie pas la présence du matériel.

    Citation Envoyé par Yunie68
    mais cela dit je ne voit toujours pas comment communiquer avec le recepteur ni comment expliquer que mon code fonctionne sans qu'il soit branché
    En utilisant le port série ?

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Par défaut
    Le soucis est que le matériel fournit n'est conçu pour n'être branché que sur un port LPT qui est un port parallèle si je dis pas de bêtises.

  12. #12
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Pas forcément.
    • Tu as le port "série" avec 9 broches, qui utilise le protocole RS232.
    • Le port DB-25 (25 broches). Ce port était utilisé pour les imprimantes avant l'arrivée de l'USB. Et dans ce cas c'est effectivement une liaison parallèle : 8 bits de données (et des bits de contrôle et la masse).
      Mais ce port DB25 peut être utilisé comme liaison série selon le protocole RS232, et dans ce cas tu as 2 fils pour les données (Rx et Tx). Regarde le document que j'ai mis en pièce jointe précédemment.

Discussions similaires

  1. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 19h47
  2. [C#] Communication avec les ports parallèle et RS232
    Par jejerome dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/07/2004, 22h57
  3. Port parallèle et ou logique
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2004, 19h02
  4. ecriture vers le port parallèle
    Par Luther13 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 19/03/2004, 22h46
  5. Port Parallèle EPP ou ECP, hardware vs software ?
    Par TONIAPEL dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/08/2003, 01h39

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