Changes between Version 6 and Version 7 of SujetTP4-2016


Ignore:
Timestamp:
Mar 11, 2016, 8:34:30 AM (9 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP4-2016

    v6 v7  
    33== Objectif ==
    44
    5 Le but de ce TME est de créer un site web consultable par un browser web permettant de changer l'état des leds et le consulter l'état du bouton poussoir. Le serveur web est écrit en Python, à la réception des requêtes du client, il exécute des scripts CGI (Common Gateway Interface) écrit également en Python pour produire des pages HTML dynamiques. Les scripts CGI devront communiquer avec le programme écrit en C contrôlant les LEDs et le bouton poussoir. La communication entre les scripts et le programme de contrôle se fera par fifo.
     5Le but de ce TME est de créer un site web consultable par un browser web permettant de changer l'état des leds. Le serveur web est écrit en Python, à la réception des requêtes du client, il exécute des scripts CGI (Common Gateway Interface) écrit également en Python pour produire des pages HTML dynamiques. Les scripts CGI devront communiquer avec le programme écrit en C contrôlant les LEDs. La communication entre les scripts et le programme de contrôle se fera par fifo.
    66
    77Pour ce faire, nous allons procéder en deux temps.
     
    992. Nous allons créer un serveur local sur le PC de développement et le faire communiquer avec le programme C.
    10103. Nous allons mettre le serveur sur une raspberry PI et communiquer avec le programme C
    11 4. Nous allons remplacer le programme C par le programme de contrôle des LEDs et du bouton poussoir.
     114. Nous allons remplacer le programme C par le programme de contrôle des LEDs.
    1212
    1313== 1. Communication par FIFO ==
     14
     15Pour démarrer, vous allez récupérer une [attachment:writer_reader.tgz archive] constituer de 4 fichiers: 2 lecteurs et 2 écrivains.
     16Les deux lecteurs sont interchangeables, le premier est en C, le second en Python.
     17Les deux écrivains sont aussi interchangeables.
     18{{{
     19writer_reader
     20├── Makefile
     21├── reader.c    : lit une fifo et affiche le message reçu jusqu'à recevoir le message end
     22├── reader.py
     23├── writer.c    : écrit dans une fifo 5 fois et écrit le message end
     24└── writer.py
     25}}}
     26
     27Vous pouvez tester les programmes qui vous sont proposés.
     28Vous allez remarquer que lorsque le vous lancer un écrivain (en C ou en Pyhton) rien ne se passe tant que vous n'avez pas lancé un lecteur.
     29Expliquez le phénomème.
     30
     31== 2. Création d'un serveur fake ==
    1432
    1533Le but de cette première partie est de réaliser le programme suivant
     
    2846  - puis il lit la fifo s2f et affiche le résultat.
    2947
    30 Pour démarrer, vous allez récupérer une [attachment:writer_reader.tgz archive] constituer de 4 fichiers: 2 lecteurs et 2 écrivains.
    31 Les deux lecteurs sont interchangeables, le premier est en C, le second en Python.
    32 Les deux écrivains sont aussi interchangeables.
     48Vous récuperez l'[attachment:fake.tgz archive] qui donne un point de dépoart
    3349{{{
    34 writer_reader
     50fake
    3551├── Makefile
    36 ├── reader.c    : lit une fifo et affiche le message reçu jusqu'à recevoir le message end
    37 ├── reader.py
    38 ├── writer.c    : écrit dans une fifo 5 fois et écrit le message end
    39 └── writer.py
     52├── server.py
     53└── fake.c
     54}}}
     55Vous devez :
     56
     571. modifier le select dans fake pour lire les deux fifos d'entrée stdin et s2f.
     582. modifier server.py pour lire la valeur lue sur stdin.
     59
     60== 3. Création d'un serveur web ==
     61
     62Nous allons maintenant créer le vrai server.
     63Dans l'[attachment:server-fake.tgz archive] vous trouvez un squelette de server que vous aller d'abord le tester avant de l'exécution sur la raspberry pour la commande des leds.
     64{{{
     65server-fake
     66├── fake
     67│   ├── Makefile
     68│   └── fake.c
     69└── server
     70    ├── server.py
     71    └── www
     72        ├── cgi-bin
     73        │   ├── led.py
     74        │   └── main.py
     75        ├── img
     76        │   └── peri.png
     77        └── index.html
    4078}}}
    4179
    42 **Démarche de travail**
    43 
    44 Vous devez commencer par tester les programmes qui vous sont proposés.
    45 Vous allez remarquer que lorsque le vous lancer un écrivain (en C ou en Pyhton) rien ne se passe tant que vous n'avez pas lancé un lecteur. Ce comportement est dû au fait que les fifos sont ouvertes en mode bloquant. C'est-à-dire que tant que les deux extrémités ne sont pas ouvertes, la fonction open() est bloquante.
    46 Vous devez :
    47 
    48 1. Combiner les fichiers reader et writer pour fabriquer fake.c et server.py
    49 2. Changer le mode d'ouverture des fifos pour qu'il soit non-bloquant
    50 3. ajouter un select dans fake pour lire les deux fifos d'entrée stdin et s2f.
    51 
    52 == 2. Création d'un serveur local ==
    53