cs_haske
Messages postés2Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention31 mars 2006
-
30 mars 2006 à 12:38
cs_haske
Messages postés2Date d'inscriptionmardi 20 décembre 2005StatutMembreDernière intervention31 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
/* 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;
}
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();
}