Lire et ecrire sur port parallele [Résolu]

cs_haske 2 Messages postés mardi 20 décembre 2005Date d'inscription 31 mars 2006 Dernière intervention - 30 mars 2006 à 12:38 - Dernière réponse : cs_haske 2 Messages postés mardi 20 décembre 2005Date d'inscription 31 mars 2006 Dernière intervention
- 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
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 mars 2006 à 12:54
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

cs_haske 2 Messages postés mardi 20 décembre 2005Date d'inscription 31 mars 2006 Dernière intervention - 31 mars 2006 à 00:31
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();
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.