Ce programme permet de faire clignoter le led1 du mbed à une fréquence saisie sur une page web. Transfert d'une variable entière du navigateur vers mbed via RPC. Pour fonctionner, ce programme a besoin d'un fichier html/javascript nommé index.htm, joint ci-après.

Dependencies:   mbed HTTPServer EthernetNetIf RPCInterface

Committer:
LouisReynier
Date:
Sat May 18 07:59:36 2019 +0000
Revision:
5:7805b33eb3b7
Parent:
4:ca958a3eeeb7
Web server avec passage d'une variable entiere par rpc dns le sens navigateur -> maquette

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:0b1369ae8b74 1 #include "mbed.h"
donatien 0:0b1369ae8b74 2 #include "EthernetNetIf.h"
donatien 0:0b1369ae8b74 3 #include "HTTPServer.h"
LouisReynier 3:c2b64cce42d8 4 #include "SerialRPCInterface.h"
LouisReynier 3:c2b64cce42d8 5
LouisReynier 3:c2b64cce42d8 6 // LR 2/2/17
LouisReynier 3:c2b64cce42d8 7 // sur ce fichier j'ai rajouté une variable RPC count que je peux lire à distance
LouisReynier 3:c2b64cce42d8 8 // adresse/rpc/count/read/
donatien 0:0b1369ae8b74 9
donatien 0:0b1369ae8b74 10 DigitalOut led1(LED1, "led1");
donatien 0:0b1369ae8b74 11 DigitalOut led2(LED2, "led2");
donatien 0:0b1369ae8b74 12 DigitalOut led3(LED3, "led3");
donatien 0:0b1369ae8b74 13 DigitalOut led4(LED4, "led4");
LouisReynier 3:c2b64cce42d8 14 AnalogIn Pot1(p19, "pot1");
LouisReynier 3:c2b64cce42d8 15
LouisReynier 3:c2b64cce42d8 16 int count = 0 ;
LouisReynier 4:ca958a3eeeb7 17 int nombre = 1 ;
LouisReynier 5:7805b33eb3b7 18
LouisReynier 3:c2b64cce42d8 19 RPCVariable<int> rpc_count(&count, "count");
LouisReynier 4:ca958a3eeeb7 20 RPCVariable<int> rpc_nombre(&nombre, "nombre");
donatien 0:0b1369ae8b74 21
donatien 0:0b1369ae8b74 22 LocalFileSystem fs("webfs");
donatien 0:0b1369ae8b74 23
donatien 0:0b1369ae8b74 24 EthernetNetIf eth;
donatien 0:0b1369ae8b74 25 HTTPServer svr;
donatien 0:0b1369ae8b74 26
donatien 0:0b1369ae8b74 27 int main() {
donatien 0:0b1369ae8b74 28 Base::add_rpc_class<DigitalOut>();
donatien 0:0b1369ae8b74 29
donatien 1:114e347434c1 30 printf("Setting up...\n");
LouisReynier 3:c2b64cce42d8 31
LouisReynier 3:c2b64cce42d8 32 // modif LR config IP manuelle sinon dhcp !
LouisReynier 3:c2b64cce42d8 33 EthernetNetIf eth( IpAddr(192,168,1,102), // IP
LouisReynier 3:c2b64cce42d8 34 IpAddr(255,255,255,0), // Subnet mask
LouisReynier 3:c2b64cce42d8 35 IpAddr(192,168,1,1), // Gateway
LouisReynier 3:c2b64cce42d8 36 IpAddr(192,168,1,1) ); // DNS
LouisReynier 3:c2b64cce42d8 37
LouisReynier 3:c2b64cce42d8 38
donatien 0:0b1369ae8b74 39 EthernetErr ethErr = eth.setup();
donatien 0:0b1369ae8b74 40 if(ethErr)
donatien 0:0b1369ae8b74 41 {
donatien 0:0b1369ae8b74 42 printf("Error %d in setup.\n", ethErr);
donatien 0:0b1369ae8b74 43 return -1;
donatien 0:0b1369ae8b74 44 }
donatien 0:0b1369ae8b74 45 printf("Setup OK\n");
LouisReynier 3:c2b64cce42d8 46 // on définit où seront stockés les fichiers !
donatien 0:0b1369ae8b74 47 FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
donatien 0:0b1369ae8b74 48 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
donatien 0:0b1369ae8b74 49
LouisReynier 3:c2b64cce42d8 50 svr.addHandler<SimpleHandler>("/hello"); // http://a.b.c.d/hello : hello world !
donatien 0:0b1369ae8b74 51 svr.addHandler<RPCHandler>("/rpc");
donatien 0:0b1369ae8b74 52 svr.addHandler<FSHandler>("/files");
donatien 0:0b1369ae8b74 53 svr.addHandler<FSHandler>("/"); //Default handler
donatien 0:0b1369ae8b74 54 //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
donatien 0:0b1369ae8b74 55
donatien 0:0b1369ae8b74 56 svr.bind(80);
donatien 0:0b1369ae8b74 57
donatien 0:0b1369ae8b74 58 printf("Listening...\n");
donatien 0:0b1369ae8b74 59
donatien 0:0b1369ae8b74 60 Timer tm;
donatien 0:0b1369ae8b74 61 tm.start();
donatien 0:0b1369ae8b74 62 //Listen indefinitely
donatien 0:0b1369ae8b74 63 while(true)
donatien 0:0b1369ae8b74 64 {
donatien 0:0b1369ae8b74 65 Net::poll();
LouisReynier 5:7805b33eb3b7 66 // demi periode = 0.5*1/f
LouisReynier 5:7805b33eb3b7 67 if(tm.read()>(0.5/nombre))
donatien 0:0b1369ae8b74 68 {
donatien 0:0b1369ae8b74 69 led1=!led1; //Show that we are alive
LouisReynier 3:c2b64cce42d8 70 count ++ ;
donatien 0:0b1369ae8b74 71 tm.start();
donatien 0:0b1369ae8b74 72 }
donatien 0:0b1369ae8b74 73 }
donatien 0:0b1369ae8b74 74
donatien 0:0b1369ae8b74 75 return 0;
donatien 0:0b1369ae8b74 76
donatien 0:0b1369ae8b74 77 }
LouisReynier 3:c2b64cce42d8 78 // http://192.168.1.102/rpc/pot1/read dans le navigateur permet de lire l'état du potard !