Changes between Version 6 and Version 7 of IOC20_T06
- Timestamp:
- Mar 27, 2020, 4:20:46 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
IOC20_T06
v6 v7 240 240 241 241 Nous allons maintenant créer le vrai server http. 242 Dans l'[attachment:server-fake.tgz archive] vous trouvez un squelette de server que vous allez d'abord tester avant de l'exécuter sur la carte !RaspberryPi pour la commande des leds.242 Dans l'[attachment:server-fake.tgz archive] vous trouvez un squelette de server que vous allez d'abord tester avant de l'exécuter le PC de la salle SESI 243 243 {{{ 244 244 server-fake … … 252 252 │ ├── led.py 253 253 │ └── main.py 254 ├── img 255 │ └── peri.png 254 256 └── index.html 255 257 }}} … … 257 259 **Pour tester le server http** 258 260 259 - Dans un premier terminal, après l'avoir compilé, lancez le programme fake. Il s'agit du même programme fake.c que précédemment, qui reçoit une requête depuis une fifo s2f et qui renvoie une réponse .261 - Dans un premier terminal, après l'avoir compilé, lancez le programme fake. Il s'agit du même programme fake.c que précédemment, qui reçoit une requête depuis une fifo s2f et qui renvoie une réponse, mais les fifos sont créées dans /tmp, il y a donc des risques de collision avec d'autres personnes. Si ca coince, changez le nom des fifos. 260 262 {{{ 261 263 cd fake … … 263 265 ./fake 264 266 }}} 265 - Dans un second terminal, lancez le server.py. C'est un server http en python.267 - Dans un **second terminal**, lancez le server.py. C'est un server http en python. 266 268 {{{ 267 269 cd server/www 268 270 ../server.py 269 271 }}} 270 - S ur votre navigateur préféré, visualisez la page index.html à l'adresse `localhost:8X00` (ou `127.0.0.1:8X00`)272 - Si ce n'est pas déjà fait, installer les tunnels ssh et sur votre navigateur préféré, visualisez la page index.html à l'adresse `localhost:8080` 271 273 - Vous devez voir apparaitre un logo et une case avec un bouton enter. 272 - La page `index.html` contient deux "frames" :274 - La page `index.html` contient deux "frames" (je sais les frames sont deprecated...) 273 275 - Le premier avec le logo. 274 276 - Le second est contient la case et le bouton. Le code html de cette case est obtenu par l'exécution du programme Python `cgi-bin/main.py`. … … 280 282 281 283 **server.py** 282 Le server écoute le port 8 X00 et affiche la page index.htlm présente dans le répertoire wwww.284 Le server écoute le port 8000 et affiche la page index.htlm présente dans le répertoire wwww. 283 285 {{{ 284 286 X est une valeur entre 0 et 3, puisque nous allons avoir 4 serveurs HTTP par Raspberry. … … 293 295 server = BaseHTTPServer.HTTPServer 294 296 handler = CGIHTTPServer.CGIHTTPRequestHandler 295 server_address = ("", 8 X00)297 server_address = ("", 8000) 296 298 handler.cgi_directories = ["/cgi-bin"] 297 299 … … 367 369 }}} 368 370 369 **Pour l'exécution sur la carte !RaspberryPi** 370 - Vous devez copier tout `server-fake` sur la carte de votre choix. Vous ne pouvez pas être plus de deux binômes par carte. 371 - Vous lancez fake et le server http comme précédement. 372 - Sur votre navigateur, vous devez mettre une exception au proxy pour l'adresse du routeur des !RaspberryPi `peri`. 373 - Si vous êtes sur la carte **20**, vous mettez comme URL peri:**8X20**. Vous faites de manière semblable pour les autres cartes. 374 - Si vous êtes le second binôme sur la carte *20*, l'URL est peri:**8120**, et dans le script `server.py` vous devez écouter le port **8100**. 375 - Le routeur des !RaspberryPi a été programmé pour renvoyer les requêtes http reçues sur le port 8xyy avec x=(0 ou 1) et yy=(20,21,...,26) sur le carte yy et le port 8X00. 376 377 **Accès aux leds et au bouton poussoir par le serveur** 378 379 - Modifier fake.c en ledbp.c et led.py pour commander les leds et lire le bouton poussoir 380 381 [[Image(htdocs:png/ledbp2server.png,nolink,400px)]] 371 372 == Travail à rendre == 373 374 - résumer les expériences que vous avez réalisées et répondez aux quelques questions posées dans ce texte 375 - Modifier `fake.c` en `capteur.c` et `led.py` pour afficher un message et la valeur courante d'un compteur qui s'incrémente chaque seconde. `led.py` s'appelle ainsi parce qu'au départ, il s'agissait de commander les leds de la !RaspberryPi 1. On va laisser ce nom, mais vous pouvez le changer si vous préférez. Il est probable que vous deviez utiliser les threads pour capteurs afin d'en avoir un qui s'incrémente chaque seconde.