Lire et ecrire sur port parallele [Résolu]

Messages postés
2
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
31 mars 2006
- - Dernière réponse : cs_haske
Messages postés
2
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
31 mars 2006
- 31 mars 2006 à 00:31
Bonjour,
je suis sur un projet qui utlise le port parallele.Je dois pouvoir lire et écrire des données sur le port .J'ai touvé un code utilisant la librairie inpout32.dll et ça compile bien mais je reçois toujours l'adresse du port au lieu du contenu.Quelqu'un pourait m'aider?
Merci
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
3
Merci
Salut
Pour t'aider, il faudrait peut-être déjà connaitre ton langage et tes lignes de code ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Messages postés
2
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
31 mars 2006
0
Merci
#include <stdio.h>
#include <conio.h>
#include <windows.h>



/* Definitions in the build of inpout32.dll are: */
/* short _stdcall Inp32(short PortAddress); */
/* void _stdcall Out32(short PortAddress, short data); */


/* prototype (function typedef) for DLL function Inp32: */


typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);


#define PPORT_BASE 0x378



// Prototypes for Test functions
int read(void);
int readC();
void write(short datum);
void writeC(short datum);
void test ();


/* After successful initialization, these 2 variables
will contain function pointers.
*/
inpfuncPtr inp32fp;
oupfuncPtr oup32fp;



/* Wrapper functions for the function pointers
- call these functions to perform I/O.
*/
short Inp32 (short portaddr)
{
return (inp32fp)(portaddr);
}


void Out32 (short portaddr, short datum)
{
(oup32fp)(portaddr,datum);
}



int main(void)
{
HINSTANCE hLib;


short x;
int i;



/* Load the library */
hLib = LoadLibrary("C:/Documents and Settings/Boubé/Mes documents/info/Dll/inpout32.dll");


if (hLib == NULL) {
fprintf(stderr,"LoadLibrary Failed.\n");
return -1;
}


/* get the address of the function */


inp32fp = (inpfuncPtr) GetProcAddress(hLib, "Inp32");


if (inp32fp == NULL) {
fprintf(stderr,"GetProcAddress for Inp32 Failed.\n");
return -1;
}



oup32fp = (oupfuncPtr) GetProcAddress(hLib, "Out32");


if (oup32fp == NULL) {
fprintf(stderr,"GetProcAddress for Oup32 Failed.\n");
return -1;
}


test();





/* finished - unload library and exit */
FreeLibrary(hLib);
return 0;
}


int read(void) {


short x;
int i=PPORT_BASE;


/* Try to read 0x378 */



writeC(32); /*setting the bit 5 to enable read mode */
x = Inp32(i);
writeC(12); /* reset control register*/
return(x);


}
void writeC(short data) {
short x;
int i;


i=PPORT_BASE;
x = data;


/***** Write the data control register */
Out32(i+2,x);



}


void write(short data) {
short x;
int i;


i=PPORT_BASE;
x = data;


/***** Write the data register */
Out32(i,x);



}
int readC() /* display control registers status*/
{
int i=PPORT_BASE;
int x,y;
x = Inp32(i+1);
y = Inp32(i+2);
printf("\t \n\n Valeurs des Registres de Controle \n\n");
printf("\t Contenu du Port (%04x) est %d\n",i+1,x);
printf("\t Contenu du Port (%04x) est %d\n",i+2,y);
}
void test()
{
int i=PPORT_BASE;


short x=23;
int y;
readC();
y=read();
printf("\t Avant le contenu du Port (%04x) est %d\n",i,y);
write(x);
y=read();
printf("\t Apres le contenu du Port (%04x) est %d\n",i,y);
readC();
}