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
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
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/
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.
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.
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.
À 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.
merci de cette aide mais ça ne m'aide pas car j'aimerais vraiment être guider comme un nul que je suisparce que ça fait des heures que je cherche, teste,....et que je butte.
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![]()
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.
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data);
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.
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é ...
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.
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...
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.
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.
Partager