wiki:SujetTP4-2016

Version 8 (modified by franck, 8 years ago) (diff)

--

TP4 : Serveur WEB minimaliste pour la commande des LEDs et la lecture du bouton poussoir

Objectif

Le 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.

Pour ce faire, nous allons procéder en deux temps.

  1. Nous allons faire communiquer un programme python avec un programme C par FIFO.
  2. Nous allons créer un serveur local sur le PC de développement et le faire communiquer avec le programme C.
  3. Nous allons mettre le serveur sur une raspberry PI et communiquer avec le programme C
  4. Nous allons remplacer le programme C par le programme de contrôle des LEDs.

1. Communication par FIFO

Pour démarrer, vous allez récupérer une archive constituer de 4 fichiers: 2 lecteurs et 2 écrivains. Les deux lecteurs sont interchangeables, le premier est en C, le second en Python. Les deux écrivains sont aussi interchangeables.

writer_reader
├── Makefile
├── reader.c    : lit une fifo et affiche le message reçu jusqu'à recevoir le message end
├── reader.py
├── writer.c    : écrit dans une fifo 5 fois et écrit le message end
└── writer.py

Vous pouvez tester les programmes qui vous sont proposés. 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. Expliquez le phénomème.

2. Création d'un serveur fake

Le but de cette première partie est de réaliser le programme suivant

fake2server.png

  • fake lit une valeur sur stdin et place la valeur lue dans une variable.
  • Lorsque l'on tape plusieurs valeurs de suite la nouvelle valeur écrase l'ancienne.
  • fake est toujours en fonctionnement.
  • fake attends aussi un message de la fifo s2f.
  • lorsqu'il reçoit un message, il l'affiche et il renvoie dans la fifo f2s la dernière valeur lue sur stdin.
  • Le serveur Python est lancé et arrêté, il se comporte comme se comportera le script CGI.
  • Quand le serveur python démarre,
    • il envoie un message sur la fifo s2f
    • puis il lit la fifo s2f et affiche le résultat.

Vous récuperez l'archive qui donne un point de dépoart

fake
├── Makefile
├── server.py
└── fake.c

Vous devez :

  1. modifier le select dans fake pour lire les deux fifos d'entrée stdin et s2f.
  2. modifier server.py pour lire la valeur lue sur stdin.

3. Création d'un serveur web

Nous allons maintenant créer le vrai server. Dans l'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.

server-fake
├── fake
│   ├── Makefile
│   └── fake.c
└── server
    ├── server.py
    └── www
        ├── cgi-bin
        │   ├── led.py
        │   └── main.py
        ├── img
        │   └── peri.png
        └── index.html

Attachments (3)

Download all attachments as: .zip