begin process at 2012 05 27 18:26:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Périphériques

 > LIRE/ECRIRE SUR LE PORT PARALLELE

LIRE/ECRIRE SUR LE PORT PARALLELE


 Information sur la source

Note :
4 / 10 - par 3 personnes
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Périphériques Niveau :Initié Date de création :22/03/2002 Date de mise à jour :22/03/2002 23:21:29 Vu :43 065

Auteur : Nic.C

Ecrire un message privé
Site perso
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note

 Description


Source

  • #include <iostream.h>
  • char lire(unsigned short adr);
  • void ecrire(unsigned short adr,char out_char);
  • char lire(unsigned short adr)
  • {
  • #pragma inline
  • unsigned char ret_char;
  • asm
  • {
  • mov dx,adr
  • in al,dx
  • mov ret_char,al
  • }
  • return(ret_char);
  • }
  • void ecrire(unsigned short adr,char out_char)
  • {
  • asm
  • {
  • mov al,out_char
  • mov dx,adr
  • out dx,al
  • }
  • }
  • int main()
  • {
  • //ecrit sur le port parallele la valeur 10
  • ecrire(0X0378,10);
  • //lit le port parallele
  • cout<<lire(0X0378);
  • return 0;
  • }
#include <iostream.h>

char lire(unsigned short adr);
void ecrire(unsigned short adr,char out_char);

char lire(unsigned short adr)
{
        #pragma inline
        unsigned char ret_char;
        asm
        {
                mov dx,adr
                in   al,dx
                mov ret_char,al
        }
        return(ret_char);
 }

void ecrire(unsigned short adr,char out_char)
{
        asm
        {
                mov al,out_char
                mov dx,adr
                out dx,al
        }
}

int main()
{
//ecrit sur le port parallele la valeur 10
ecrire(0X0378,10);

//lit le port parallele
cout<<lire(0X0378);

        return 0;
} 



 Sources du même auteur

AFFICHER/CACHER LES ICONES DU BUREAU
CREATION D'AUTORUN
INFORMATION D'UN LECTEUR
CREE UN RACOURCI
CONVERSION DECIMALE -&GT; BINAIRE

 Sources de la même categorie

Source avec Zip Source avec une capture RS232 ET PORT // par morphixx
Source avec Zip Source avec une capture [DEV-C++] GESTION DU PORT PARALLÈLE par victorcoasne
Source avec Zip Source avec une capture FAIRE GLISSER LA SOURIS par shorzy
Source avec Zip COMMUNICATION RS232 VIA PORT COM par MadMax1024
Source avec Zip Source avec une capture EXTINCTION ET REDEMARRAGE DE VOTRE MONITEUR À UNE HEURE PRÉC... par Yost

Commentaires et avis

Commentaire de hamdan le 23/03/2002 00:10:39

Mais t'a etuliser L'assembleur ;)
la primitive Outport est utils aussi ;)

Commentaire de nikko le 19/06/2002 15:32:49

C'est un peu bourin tout ça...!
Profitez-en car c'est foutu pour utiliser ça sous XP...

Commentaire de Tesla93 le 26/09/2002 23:55:55

uen question
//ecrit sur le port parallele la valeur 10
ecrire(0X0378,10);

ok mais sa ecrit la valeur 10 sur quel broche du port parallele sachant que ya 25 broche
et est il possible de mettre une broche du port parrallele sur ecoute genre mettre en variable se que le port parrallele recoit ?

Commentaire de Clem le 16/10/2002 21:02:12

Ca marche pas chez moi : je met le code, je compile, ca me fait juste un warning ( unrecognized pragma, ligne 8 ), j'ouvre le exe, et la erreur du programme, qui plante.
D'après le déboggeur de VC++, ca se passe au niveau du "out dx,al", et l'erreur est "Unhandled exception in io.exe: 0xC0000096: Privileged Instruction."

Quelqu'un peut me dire pourquoi ca fait ca, et surtout comment régler le problème ?
Merci d'avance.
Ps: J'ai WinXP.

Commentaire de jll123 le 13/01/2003 11:07:38

j'ai le meme probleme que Clem mais quand j'essai d'écrire sur le port serie: =&gt; Unhandled exception in io.exe: 0xC0000096: Privileged Instruction."
j'ai ce probleme sur XP et NT

Commentaire de kheon le 19/02/2003 12:22:02

J'ai aussi le meme probleme. Ca plante a "out dx, al".
Quelqu'un aurai t il une solution pour programmer le port parallele sous windows 2000 ????

Commentaire de Alambics le 20/02/2003 14:36:08

J'ai le meme probleme ce serait cool que quelqu'un pensait a trouver la solution j'ai bo consulté la msdn et mes vagues connaissances z
en assembleur je trouve pas d'ou viens le probleme !

Commentaire de Alambics le 21/02/2003 08:56:15

J'ai une solution partielle pour tout ceux qui utilisent unsysteme Nt( Nt4.0 2000 ou XP) le code assembleur ne passe pas. Les primitives pour les lire les valeurs des registres  ou pour ecrire dedans ne sont pas autorisés !!!!
Pour pouvoir lire dans un registre ou sur port sur un systeme NT il faudra vous procurer les drivers Peek Poke de chez Hp qui permettent de contourner le probleme !!!
En esperant que cela vous aidera , a+

Commentaire de Alambics le 21/02/2003 08:56:16

J'ai une solution partielle pour tout ceux qui utilisent unsysteme Nt( Nt4.0 2000 ou XP) le code assembleur ne passe pas. Les primitives pour les lire les valeurs des registres  ou pour ecrire dedans ne sont pas autorisés !!!!
Pour pouvoir lire dans un registre ou sur port sur un systeme NT il faudra vous procurer les drivers Peek Poke de chez Hp qui permettent de contourner le probleme !!!
En esperant que cela vous aidera , a+

Commentaire de asmLooping le 29/01/2004 15:27:55

SCHLAGVUK
je suis etudiant et ja developpe un systeme qui doit lire et/ou écrire sur le port parrallèle; je trouve ce source interessant, pour le faire passer sous XP il va faloir liberer les port... avec USEPORT je rentre l'adresse des port a liberer, et c'est fais...
a+

Commentaire de exterminabur le 09/03/2004 17:28:08

salut nic.C
pas mal ton prog mais marche pas sous xp
normal
sinon moi j'ai un source qui fait marcher des fonctions ne marchant pas sous xp avec VB 6 C++ (donc un .cpp)
avec l'aide du lib
sinon asmlooping apparemment toi aussi tu as réussi d'écrire et de lire sur le port parallele chapeau
a l'occasion si tu pouvais me donner ton source
ou le lien
le mien est à l'adresse:
http://www.cppfrance.com/code.aspx?ID=21060
@+
bonne continuation

Commentaire de jbbeauf le 13/03/2004 19:38:22

Bonsoir à tous !!

Pour ceux qui veulent utiliser ce code en assembleur sous XP :
La technologie NT (donc XP) bloque totalement l'accès aux registres des ports de communication comme ça. il faut donc faire sauter les protections : pour ça utliser un "logiciel" giveio. Cherchez sur le net et téléchargez le : c'est un pilote et boum, ça marche :-)

JB

Commentaire de jbbeauf le 13/03/2004 19:40:26

donc le programme marche PARFAITEMENT sous XP !!!!

(c t pas vraiment précisé dans mon dernier message !)
JB

Commentaire de lpikachu58 le 23/03/2004 16:28:23

l'asm c'est pas ce qu'il y a de plus portable mais je me demande si ça passe réellement sous XP

Commentaire de jbbeauf le 23/03/2004 20:24:54

Ce code passe sans problème sous xp chez moi.
Il existe aussi des fonctions prédéfinies inp et outp en C. Quand on les désassemble ça donne ce code avec en plus des lignes de nop... C'est un copain qui m'a montré ça.
Après il faut bien se brancher sur le port parallèle, avec les docs qu'on peut trouver sur le net dessus c'est assez accessible.
JB

Commentaire de pedrem le 24/03/2004 11:57:54

ce code passe chez moi (xp) apres ouverture des ports
j'arrive à écrire à l'adresse 0x378 donc sur le registre d0-d7 (vérifié au voltmetre) mais dès que je veux écrire sur les registre d'état ou de controle du port (0x379, 0x37A) l'erreur suivante apparait
privileged instrruction at 0x401117 !!

Commentaire de loquior le 07/04/2004 09:33:49

Salut tout le monde,
Moi aussi j'ai rencontré l'erreur Unhandled exception in X.exe: 0xC0000096: Privileged Instruction sous Win Xp ou NT, donc pour resoudre ce probleme il faut utiliser la dll inpout32.dll, et ainsi modifier votre projet en fonction des prototypes associés (style les _outp par out32...) et biensur rajouter les lib necessaires.
Voilou bonne programmation

PS:lien--&gt;http://visual.basic.free.fr/visual/Teleocx.php3
     telechargement direct --&gt;http://visual.basic.free.fr/visual/Zip/Ocx_dll/Inpout32.zip

Bonne chance ^^

Commentaire de DevOnOff le 28/07/2004 16:03:22

j ai envie de savoir si on peut controller uniquement 2 ou 3 pins du port parallèle, j en a besoin pour alimenter un registre a décalage , j ai donc besoin d un pin pour les data, un pin d horloge et un autre de validation

c est a dir que je vais sérialiser des paquets a travers le pin data

Commentaire de jbbeauf le 28/07/2004 18:54:32

DevOnOff : il y a pas de problème pou ne controler que certaines broches, fais juste gaffe aux conventions (lecture seul, écriture seules etc... toutes sont pas accèssibles). je l'ai déjà utilisé avec un registre à décalage !!! (si un jour tu me lis Ju ou Clem et bien tu te reconnaitras là :-D ça a tout déchiré !!!!!) bref ça marche, pour controler une broche qui correspond à un bit dans un octet utlise des masques ~ ou autre chose
JB

Commentaire de gaillus le 08/02/2005 11:42:18

Bonjour,
moi aussi je cherche un moyen pour ecrire sur le port parallele avec win XP.
J'ai trouvé pas mal de source qui permette de contouner le bloquage de fait windows XP a ce niveau : un tutorial avec WINIO.DLL, un autre avec INPOUT32.DLL les prog compile correctement mé les valeurs ecrite ou lu ne sont pas les bonnes. Je pense que c peut etre moi qui lés utilise mal mé je garde les source telle quelle sont é malgré ca ca ne mache pas correctement.

JBBEAUF tu a réussi en utilisant "giveio" peut tu me dire ou a tu trouvé ce logiciel?

Sinon ASMLOOPING tu utilise "useport" pourrait-tu expliquer comment ca marche? et ou le trouver?

Merci d'avance a tous ceux qui pourront m'aider.

Commentaire de jbbeauf le 08/02/2005 19:07:57

Attention : giveio c'est pas vraiment un soft : ça autorise un programme à utiliser les ports com et //.
Quand vous exécutez un programme sous xp et qu'il essait d'accéder aux ports le systeme d'exploitation bloque ça !!!!
En fait giveio va intercepter l'accès aux ports demandés par le programme et va s'en occuper : comme il a le droit d'y accéder (il fonction en mode système , enfin un truc comme ça, je sais plus trop bien) et bien ça marche.
bref c super :-)
par contre je ne l'ai jamais trouvé sur le net, on me l'a passé. Pour ceux qui sont intéressés (gaillus !!) contactez moi par mail : jbbeauf@hotmail.com
JE NE SUIS PAS UN SPECIALISTE DE GIVEIO : LES INFOS DONNEES NE SONT PAS GARANTIES (je reste prudent)

JB

Commentaire de fabricolo le 12/04/2005 13:34:48

Apres avoir essayé pas mal de choses, pour moi le mieux pour piloter le port parallèle en C++ Builder 6.0 sous XP, c'est d'utiliser l'assembleur comme dans le code de Nic.C en ayant au préalable autorisé l'accès au port LPT1 grâce à l'itilitaire USERPORT.EXE disponible à l'adresse http://www.embeddedtronics/design&ideas.html

Bon courage à tous

Commentaire de habibdu70 le 12/04/2005 14:38:09

On peut utiliser ton code sous XP en utilisant les MFC, en essayant, le compilateur VC++ ne comprend pas le code assembleur.
Quelqu'un a une solution ?

Commentaire de gaillus le 17/04/2005 17:19:12

Salut a tous,
a force de chercher j'ai finalement trouvé un prog qui permet de lire et d'ecrire sur le port parallèle ; il fonctionne à partir de 'winio.dll'. il y a au moins une source sur le site mé je ne me souvient pas laquelle.
le prog fonctionne trés bien avec VC++ sous XP (sans MFC pour mon cas), il y également une fichier d'aide qui explique comment l'utilisé avec d'autre compilateur.

Je vé fouiller dans mes fichier et essayer de retrouver la source.

De souvenir je me souvient que je l'avais trouvé en faisant une recherche sur le site avec "ecrire sur le port parallèle".

Sinon 'useport' marche bien aussi. il donné l'acces au port que l'on veut, il suffit de choisir les adresses qu'on veut utiliser.

Bonne prog a tous.

Commentaire de gaillus le 19/04/2005 12:50:31

J'ai retrouvé le prog permetant d'ecrire et de lire sur le port //. Elle n'etait pas sur le site (désolé si vous avez chercher en vain) mais je viens de la mettre : http://www.cppfrance.com/code.aspx?ID=30849.

Sinon vous allez direct sur le site : http://www.internals.com c'est la que je l'ai trouvé.

Bonne prog à tous.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales