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 en C


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut Port parallèle en C
    Une question, quelles sont les fonctions d'écriture et de lecture sur le port parallele en C utilisant la bibliotheque io.h?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bob74500 Voir le message
    Une question, quelles sont les fonctions d'écriture et de lecture sur le port parallele en C utilisant la bibliotheque io.h?
    Depuis quand un fichier ".h" est-il une bibliothèque ?

    Si tu parles d'un fichier d'entête nommé "io.h", il n'a rien de standard et il est donc impossible de répondre à ta question sans plus de précisions (machine, système, compilateur).

    Sinon, l'accès au port parallèle est généralement pris en charge par le système.

    Si tu cherches à faire un accès bas-niveau sur un PC, il faut soit des extensions permettant d'accéder aux ports I/O, comme inportb()/outportb() de <dos.h> avec les compilateurs Borland pour DOS/Windows en 16-bit mode réel, soit il faut passer par un driver.

    Sous Win32, il existe la DLL tierce inpout32.dll. J'ai écrit une petite interface qui en facilite l'usage :

    http://delahaye.emmanuel.free.fr/clib/pio/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    En fait mon probleme est que je cherche a commander le port parallele en C, je trouve des méthodes mais ce n'est jamais suffisament clair pour que j'arrive a le commander.
    Quelqu'un pourrait-t-il vraiment me guider pas à pas pour arriver à piloter le port parallele (lire/ecrire) en C si possible sans ajout de dll?

    Merci vraiment si vous pouvez m'aider.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bob74500 Voir le message
    Quelqu'un pourrait-t-il vraiment me guider pas à pas pour arriver à piloter le port parallele (lire/ecrire) en C si possible sans ajout de dll?
    Vu que tu n'as pas donné les renseignements demandés, je ne vois pas comment on pourrait t'aider d'avantage. Relis ma réponse précédente.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    En fait je cherche simplement à faire un petit programme console en C qui gere le port parallele. La fason de le gérer m'importe peu tant que j'arrive à faire marcher ce programme sur mon PC.

    Merci de m'aider c'est sympathique.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bob74500 Voir le message
    En fait je cherche simplement à faire un petit programme console en C qui gere le port parallele. La fason de le gérer m'importe peu tant que j'arrive à faire marcher ce programme sur mon PC.
    OK. Il s'agit donc d'un PC. Dans mon premier post, je t'ai demandé quels étaient ton système et ton compilateur. C'est si difficile que ça de répondre à ces simples questions ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    Excusez-moi.
    J'utilise un PC sous Windows XP sp2. Comme logiciel/compilateur, j'utilise Dev-c++ mais je peux utiliser aussi Visual C++ mais il m'est moins familier.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    À haut niveau sous Windows, il y a ceci:
    http://msdn2.microsoft.com/en-us/lib...8VS.85%29.aspx

    C'est principalement dédié aux ports série, mais la doc dit que certaines choses marchent avec le port parallèle...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    merci de cette aide mais ça ne m'aide pas car j'aimerais vraiment être guider comme un nul que je suis parce que ça fait des heures que je cherche, teste,....et que je butte.

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bob74500 Voir le message
    merci de cette aide mais ça ne m'aide pas car j'aimerais vraiment être guider comme un nul que je suis parce que ça fait des heures que je cherche, teste,....et que je butte.
    J'ai donné une solution pour Win32 (ton environnement). Tu as téléchargé inpout32.dll ?

    Montre le code qui ne fonctionne pas.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    Désolé je ne trouve pas votre solution...
    Pour ce qui est de inpout32 j'en ai une version mais suivant les codes source que j'ai tenté de faire fonctionner (sans succès...) cette dll ne faisait pas toujours la même taille....

    Merci de m'aider

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bob74500 Voir le message
    Désolé je ne trouve pas votre solution...
    Pour ce qui est de inpout32 j'en ai une version mais suivant les codes source que j'ai tenté de faire fonctionner (sans succès...) cette dll ne faisait pas toujours la même taille....
    Il s'agit bien d'utiliser inpout32.dll. J'ai donné le lien pour obtenir la dernière version.

    Rappel : http://www.logix4u.net/inpout32.htm

    Montre le code avec lequel tu as un problème.

  13. #13
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Inpout32.dll est une DLL exportant des fonctions permettant de lire et écrire sur le port parallèle. En mode protégé (dans lequel les systèmes d'exploitation modernes fonctionnent), un programme ne peut pas adresser directement certains ports et périphériques physiques. Il faut donc un pilote pour effectuer cette tâche. Un programme communique avec un pilote avec Les fonctions d'entrées/sorties habituelles (sous Windows : CreateFile, WriteFile, ReadFile, etc.) ou en envoyant des commandes spécifiques au périphérique (les IOCTLs) avec la fonction DeviceIoControl (je parle toujours Windows). Tu peux développer ta propre librairie pour s'interfacer avec le matériel (toujours avec le même principe : programme + pilote) mais le plus simple pour commencer c'est d'utiliser des outils déjà existants.

    Télécharge donc Inpout32.dll (la DLL de fonctions) et hwinterface.sys (le pilote) sur http://logix4u.net/Legacy_Ports/Para...000/NT/XP.html.
    Tout est dans le ZIP (ici).

    La DLL (Inpout32.dll) se trouve dans le dossier binaries\Dll
    Le pilote (hwinterface.sys) se trouve dans le dossier kernel_mode_driver_source (en principe tu n'en as pas besoin parce que si je me souviens bien il est déjà embarqué dans la DLL ...).
    La librairie d'importation (Inpout32.lib) se trouve dans le dossier test applications\VC_test_app. Tu dois te lier avec ce fichier pour pouvoir utiliser les fonctions de Inpout32.dll.
    La DLL doit se trouver dans le même répertoire que ton programme (ou dans un répertoire "connu" par le système, comme C:\WINDOWS\system32 par exemple).

    Voici les fonctions que tu devras utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    short _stdcall Inp32(short PortAddress);
    void _stdcall Out32(short PortAddress, short data);
    En ce qui concerne la spécification du prot parallèle lui-même (broches, caractéristiques éléctriques, etc.), ca n'a rien à voir avec le langage C, t'as qu'à faire une recherche sur google.

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tiens, tant qu'on est dans les ports parallèles: J'ai seulement touché au port série dans ma vie. Le port parallèle est-t-il plus, moins ou aussi compliqué ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Plus compliqué sans doute. Ce n'est pas par hasard si le port série est plus documenté par MS que le port parallèle. Avec le port série il y a certes un tas de trucs à configurer,un protocole de communication à respecter, etc. mais au moins on a les APIs qu'il faut et une bonne doc. Ce n'est pas le cas avec le port parallèle où il faut implémenter son propre driver . En fait, Windows est déjà fourni avec un pilote de port parallèle : parport.sys, mais il n'est pas documenté ...

  16. #16
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En effet, ce que je trouve le plus proche d'une doc, c'est ça: http://msdn2.microsoft.com/en-us/library/ms799451.aspx
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Il s'agit bien d'utiliser inpout32.dll. J'ai donné le lien pour obtenir la dernière version.

    Rappel : http://www.logix4u.net/inpout32.htm

    Montre le code avec lequel tu as un problème.
    Quel code dois-je utiliser? pouvez-vous me donner le code précis que je dois compiler pour utiliser cette dll et que ça marche?

    Merci d'avance, je commence à voir le bout du tunnel

  18. #18
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bob74500 Voir le message
    Quel code dois-je utiliser? pouvez-vous me donner le code précis que je dois compiler pour utiliser cette dll et que ça marche?
    Bah, non. J'ai déjà fourni du code qui permet de l'utiliser simplement (pio) si on a pas de bibliothèque d'application. Ensuite, l'usage que du veux faire des fonctions d'accès aux bus I/O ne dépendent que de toi. Je rappelle que la DLL inpout32.dll offre des fonctions de très bas niveau qui permettent d'accéder au bus I/O et n'est pas spécialisée au port //. Les paramètres des 2 fonctions de lecture et d'écriture comportent donc un paramètre 'adresse I/O'. [1]

    T'es tu au moins renseigné sur ce qu'était un port // ? Son mode de fonctionnement ? Quels sont les registres mis en œuvre ? Quelle est la signification de chaque bits des registres ? Quelle est l'adresse du registre de base dans ta machine ?

    Ca, c'était pour la partie purement technique de bas niveau. Maintenant, ton application, c'est quoi ? Quel est le but ? Qu'as-tu l'intention de brancher sur ce port //, et pourquoi faire ?


    ---------------
    [1] Je fais l'hypothèse que tu connais un minimum l'architecture x86 en général et celle des PC Wintel en particulier. Si ce n'est pas le cas, Il faut commencer par te renseigner sur ce qu'est le bus I/O des architectures x86/Wintel... Wikipédia est ton amie...

  19. #19
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Hum, a ta place je chercherais plutôt un vieux PC sous Win 9x et utiliser tout simplement les fonctions _inp (_inp) et _outp (_outp). Elles sont plus faciles à utiliser que printf (sans blaque) ... Ca te permettra de mieux te concentrer sur ce que tu veux faire que sur toute cette histoire de pilote, de DLL, etc. Une fois que tu auras bien compris le fonctionnement, tu pourras ensuite facilement passer à WIndows NT (200, XP, Vista, ...).

    Sinon, j'aimerais aussi savoir ce que tu veux faire exactement : écrire sur le port parallèle ou communiquer avec un périphérique attaché au port parallèle (une vieille imprimante par exemple). Dans le dernier cas, un pilote est déjà fourni et tu n'as qu'à lire sa doc. Tu peux même utiliser des APIs génériques comme la GDI par exemple (dans le cas d'un périphérique graphique) pour récupérer des infos sur le périphérique, configurer le périphérique, imprimer, etc.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut
    Je suis bien renseigné sur le port parallele et son fonctionnement, le but du controle du port parallele est:
    Dans un premier temps allumer quelques diodes pour voir si j'arrive à envoyer et des quelques interrupteurs pour voir si j'arrive à recevoir.
    Ensuite, une foie que l'envoie reception sera gérer je devrais à partir du PC gérer des moteurs pas à pas en passant par le port parallele.

    Pour l'instant mon problème est de communiquer avec le port parallele, ce qui est le départ. Pour l'instant je n'ai trouvé qu'une source qui arrive à faire changer les états du port parallele mais elle n'est ni ne C/C++ ni en Visual Basic, les deux languages que je maitrise un peu.

    Merci de votre attention.

    PS:Si vraiment il le faut je passerais un vieux machin sous 98, mais à vrai dire ça m'embêterai.

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