C++ : Utilisation du port parallèle

Transcription

C++ : Utilisation du port parallèle
C++ : Utilisation du port parallèle
Objectifs.
On se propose de construire une application, utilisant le port parallèle, qui permet de lire ou d’écrire sur le port.
L’intérêt de cette présentation est de détailler l’utilisation d’une DLL : Inpout32.dll qui permet de programmer
le port parallèle sous Windows XP.
Prérequis.
Cours sur la mise en uvre des DLL’s
Cours sur les périphériques d’entrées/sorties
Cours sur la programmation du port //
Matériel à disposition
1 PC avec Visual C++
1 maquette d’e/s se connectant au port //
Préparation
On demande de comprendre la procédure décrite ci-dessous.
Procédure
L’application sera écrite en mode console.
Tout d'abord, il s'agit de créer le projet dans VC++ : File/New/Projects/Win32 Application. Donnez ensuite le
nom iopp à votre projet et cliquez 'Ok'. Ensuite, sélectionnez 'An empty project' puis 'Finish' et 'Ok'. Nous
venons de créer un projet vide, il ne contient aucun fichier de code.
Ajoutons maintenant un fichier de code et fichier de ressources. Allez dans File/New/Files/C++ Source File.
Appelez ce fichier main.cpp et validez.
#njc Lycée « la Briquerie »
Programmation C++ : port parallèle
& page 1/3
Le code de l’application.
Occupons-nous maintenant du code qui va constituer le programme.
Nous allons insérer un nouveau fichier de code appelé main.
On y trouve :
les fichiers d'en-tête usuels,
la déclaration des prototypes de fonctions de la bibliothèque inpout32.lib
le programme principal.
Le programme principal :
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
/* ----Prototypes de Inp et Outp de inpout32.lib --- */
short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);
/*--------------------------------*/
void main(int argc, char* argv[])
{
int data;
if(argc<3)
{
printf("Error : trop peu d'arguments\n\n***** Usage *****\n\nInpoutTest read <ADDRESS> \nor
\nInpoutTest write <ADDRESS> <DATA>\n\n\n\n\n");
}
else if(!strcmp(argv[1],"read"))
{
data = Inp32(atoi(argv[2]));
printf("Data lue depuis l'addresse %s is %d \n\n\n\n",argv[2],data);
}
else if(!strcmp(argv[1],"write"))
{
if(argc<4)
{
printf("Erreur pour les arguments");
printf("\n***** Usage *****\n\nInpoutTest read <ADDRESS> \nor \nInpoutTest write
<ADDRESS> <DATA>\n\n\n\n\n");
}
#njc Lycée « la Briquerie »
Programmation C++ : port parallèle
& page 2/3
else
{
}
Out32(atoi(argv[2]),atoi(argv[3]));
printf("data écrite à %s\n\n\n",argv[2]);
}
}
Activités
A1 : On demande de mettre en uvre la procédure présentée ci-dessus et de tester le transfert des données vers
la maquette.
A2 : Modifier le projet ci-dessus pour réaliser un chenillard sur les LEDS.
Compte rendu.
Présenter sous forme d’un PowerPoint :
Les résultats du test effectué dans l’activité 1
Le programme réalisé dans l’activité 2.
#njc Lycée « la Briquerie »
Programmation C++ : port parallèle
& page 3/3