Cours:Tp II : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
 
(9 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
=Tp 1=
+
={{bleu|Tp 1}}=
  
 
le fichier [[SVGlib.h]]
 
le fichier [[SVGlib.h]]
Ligne 7 : Ligne 7 :
 
Une autre solution en utilisant des structures [[tp1struct_II_B2.c]]
 
Une autre solution en utilisant des structures [[tp1struct_II_B2.c]]
  
=TP 2=
+
={{bleu|TP 2}}=
  
 
On se base sur la correction du Tp 1 utilisant les structures.
 
On se base sur la correction du Tp 1 utilisant les structures.
Ligne 13 : Ligne 13 :
 
Voici 2 solutions, [[tp2_II_B2.c|sans pointeurs]] et une autre [[tp2p_II_B2.c|avec pointeurs]];
 
Voici 2 solutions, [[tp2_II_B2.c|sans pointeurs]] et une autre [[tp2p_II_B2.c|avec pointeurs]];
  
=TP 3=
+
={{bleu|TP 3}}=
  
 +
==fichiers==
 
Dans ce TP nous utilisons le port parallèle. On utilisera les 2 fichiers suivants :
 
Dans ce TP nous utilisons le port parallèle. On utilisera les 2 fichiers suivants :
 
* [[commcarte.h]] qui contient les prototypes des fonctions
 
* [[commcarte.h]] qui contient les prototypes des fonctions
 
* [[commcarte.c]] qui contient les déclarations des fonctions
 
* [[commcarte.c]] qui contient les déclarations des fonctions
  
 +
Classiquement, le fichier [[commcarte.h]] contient les déclarations des fonctions, et le fichier [[commcarte.c]] contient leur implémentation.
 +
 +
==description==
 +
Les fonctions définies sont les suivantes :
 +
 +
{{Boîte déroulante/début|titre=Description des fonctions}}
 +
*'''int openParPort(char * parport);'''
 +
**permet d'avoir accès au port parallèle.
 +
**'''ex''' : device=openParPort("/dev/parport0");
 +
*'''int ecrireParPortp(int device,unsigned char *val);'''
 +
**changer la valeur des données du port parallèle
 +
**retourne un code d'erreur
 +
**'''ex''' : ecrireParPortp(device,val); // avec val de unsigned char *
 +
*'''int ecrireParPort(int device,unsigned char val);'''
 +
**changer la valeur des données du port parallèle
 +
**retourne un code d'erreur
 +
**'''ex''' : ecrireParPort(device,val); // avec val de unsigned char *
 +
*'''int closeParPort(int device);'''
 +
**fermer l'accès au port parallèle
 +
**retourne un code d'erreur
 +
**'''ex :''' closeParPort(device);
 +
{{Boîte déroulante/fin}}
 +
 +
==exemple==
 
Pour utiliser ces fichiers, on compilera un fichier tp3.c en faisant :
 
Pour utiliser ces fichiers, on compilera un fichier tp3.c en faisant :
  gcc -o monexecutable tp3.c commcarte.c
+
  gcc -o tp3 tp3.c commcarte.c
 +
On lancera donc le programme, en restant dans le même répertoire, par ./tp3
 +
 
 +
[[testportpar|'''un exemple d'utilisation''']]
 +
 
 +
==conseils==
 +
Afin de mettre au point votre programme, vous pourrez utiliser une fonction pour [[C#valeur binaire | afficher la valeur binaire d'un nombre]].
 +
 
 +
==exercices==
 +
On branche sur le port parallèle une carte avec des 8 leds. Chaque led est reliée sur une des pattes de donnée de la liaison. Si un bit de donnée est à l'état logique '1', la led associée est allumée.
 +
 
 +
Ainsi :
 +
*ecrireParPort(device,0xFF); allume toutes les leds.
 +
*ecrireParPort(device,0x00); éteint toutes les leds.
 +
*ecrireParPort(device,0xAA); en allume une sur 2.
 +
 
 +
===Chenillard simple===
 +
Ecrire un programme permettant de réaliser un chenillard simple : une seule led qui s'allume et qui se déplace de gauche à droite.
 +
 
 +
[[Cours:tpiiChenillardSimple|'''Solutions''']]
 +
 
 +
===Chenillard double===
 +
Ecrire un programme permettant de réaliser un chenillard double : 2 leds allumées qui se déplacent en sens opposé, l'une de gauche à droite et l'autre de droite à gauche.
 +
 
 +
[[Cours:tpiiChenillardDouble|'''Solutions''']]
 +
 
 +
===Chenillard à entassement===
 +
Ecrire un chenillard réalisant un chenillard à entassement : c'est un chenillard simple avec une led qui se déplace, mais une fois arrivée à l'extrémité la led reste allumée et on en rajoute une au départ, qui se déplace et s'empile sur la précédente ....
  
[[testportpar|un exemple d'utilisation]]
+
[[Cours:tpiiChenillardEntassement|'''Solutions''']]

Version actuelle datée du 20 décembre 2012 à 21:36

Tp 1

le fichier SVGlib.h

Une correction possible du Tp qui servira de base au TP 2 : tp1_II_B2.c

Une autre solution en utilisant des structures tp1struct_II_B2.c

TP 2

On se base sur la correction du Tp 1 utilisant les structures.

Voici 2 solutions, sans pointeurs et une autre avec pointeurs;

TP 3

fichiers

Dans ce TP nous utilisons le port parallèle. On utilisera les 2 fichiers suivants :

  • commcarte.h qui contient les prototypes des fonctions
  • commcarte.c qui contient les déclarations des fonctions

Classiquement, le fichier commcarte.h contient les déclarations des fonctions, et le fichier commcarte.c contient leur implémentation.

description

Les fonctions définies sont les suivantes :

Description des fonctions

  • int openParPort(char * parport);
    • permet d'avoir accès au port parallèle.
    • ex : device=openParPort("/dev/parport0");
  • int ecrireParPortp(int device,unsigned char *val);
    • changer la valeur des données du port parallèle
    • retourne un code d'erreur
    • ex : ecrireParPortp(device,val); // avec val de unsigned char *
  • int ecrireParPort(int device,unsigned char val);
    • changer la valeur des données du port parallèle
    • retourne un code d'erreur
    • ex : ecrireParPort(device,val); // avec val de unsigned char *
  • int closeParPort(int device);
    • fermer l'accès au port parallèle
    • retourne un code d'erreur
    • ex : closeParPort(device);

exemple

Pour utiliser ces fichiers, on compilera un fichier tp3.c en faisant :

gcc -o tp3 tp3.c commcarte.c

On lancera donc le programme, en restant dans le même répertoire, par ./tp3

un exemple d'utilisation

conseils

Afin de mettre au point votre programme, vous pourrez utiliser une fonction pour afficher la valeur binaire d'un nombre.

exercices

On branche sur le port parallèle une carte avec des 8 leds. Chaque led est reliée sur une des pattes de donnée de la liaison. Si un bit de donnée est à l'état logique '1', la led associée est allumée.

Ainsi :

  • ecrireParPort(device,0xFF); allume toutes les leds.
  • ecrireParPort(device,0x00); éteint toutes les leds.
  • ecrireParPort(device,0xAA); en allume une sur 2.

Chenillard simple

Ecrire un programme permettant de réaliser un chenillard simple : une seule led qui s'allume et qui se déplace de gauche à droite.

Solutions

Chenillard double

Ecrire un programme permettant de réaliser un chenillard double : 2 leds allumées qui se déplacent en sens opposé, l'une de gauche à droite et l'autre de droite à gauche.

Solutions

Chenillard à entassement

Ecrire un chenillard réalisant un chenillard à entassement : c'est un chenillard simple avec une led qui se déplace, mais une fois arrivée à l'extrémité la led reste allumée et on en rajoute une au départ, qui se déplace et s'empile sur la précédente ....

Solutions