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
HTTPServerExample.cpp@3:c2b64cce42d8, 2017-04-06 (annotated)
- Committer:
- LouisReynier
- Date:
- Thu Apr 06 18:56:46 2017 +0000
- Revision:
- 3:c2b64cce42d8
- Parent:
- 1:114e347434c1
- Child:
- 4:ca958a3eeeb7
Une version de serveur mbed embarqu? qui commande 1 led et qui lit un potentiometre + variable temps.
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:c2b64cce42d8 | 17 | RPCVariable<int> rpc_count(&count, "count"); |
donatien | 0:0b1369ae8b74 | 18 | |
donatien | 0:0b1369ae8b74 | 19 | LocalFileSystem fs("webfs"); |
donatien | 0:0b1369ae8b74 | 20 | |
donatien | 0:0b1369ae8b74 | 21 | EthernetNetIf eth; |
donatien | 0:0b1369ae8b74 | 22 | HTTPServer svr; |
donatien | 0:0b1369ae8b74 | 23 | |
donatien | 0:0b1369ae8b74 | 24 | int main() { |
donatien | 0:0b1369ae8b74 | 25 | Base::add_rpc_class<DigitalOut>(); |
donatien | 0:0b1369ae8b74 | 26 | |
donatien | 1:114e347434c1 | 27 | printf("Setting up...\n"); |
LouisReynier | 3:c2b64cce42d8 | 28 | |
LouisReynier | 3:c2b64cce42d8 | 29 | // modif LR config IP manuelle sinon dhcp ! |
LouisReynier | 3:c2b64cce42d8 | 30 | EthernetNetIf eth( IpAddr(192,168,1,102), // IP |
LouisReynier | 3:c2b64cce42d8 | 31 | IpAddr(255,255,255,0), // Subnet mask |
LouisReynier | 3:c2b64cce42d8 | 32 | IpAddr(192,168,1,1), // Gateway |
LouisReynier | 3:c2b64cce42d8 | 33 | IpAddr(192,168,1,1) ); // DNS |
LouisReynier | 3:c2b64cce42d8 | 34 | |
LouisReynier | 3:c2b64cce42d8 | 35 | |
donatien | 0:0b1369ae8b74 | 36 | EthernetErr ethErr = eth.setup(); |
donatien | 0:0b1369ae8b74 | 37 | if(ethErr) |
donatien | 0:0b1369ae8b74 | 38 | { |
donatien | 0:0b1369ae8b74 | 39 | printf("Error %d in setup.\n", ethErr); |
donatien | 0:0b1369ae8b74 | 40 | return -1; |
donatien | 0:0b1369ae8b74 | 41 | } |
donatien | 0:0b1369ae8b74 | 42 | printf("Setup OK\n"); |
LouisReynier | 3:c2b64cce42d8 | 43 | // on définit où seront stockés les fichiers ! |
donatien | 0:0b1369ae8b74 | 44 | FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path |
donatien | 0:0b1369ae8b74 | 45 | FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path |
donatien | 0:0b1369ae8b74 | 46 | |
LouisReynier | 3:c2b64cce42d8 | 47 | svr.addHandler<SimpleHandler>("/hello"); // http://a.b.c.d/hello : hello world ! |
donatien | 0:0b1369ae8b74 | 48 | svr.addHandler<RPCHandler>("/rpc"); |
donatien | 0:0b1369ae8b74 | 49 | svr.addHandler<FSHandler>("/files"); |
donatien | 0:0b1369ae8b74 | 50 | svr.addHandler<FSHandler>("/"); //Default handler |
donatien | 0:0b1369ae8b74 | 51 | //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm |
donatien | 0:0b1369ae8b74 | 52 | |
donatien | 0:0b1369ae8b74 | 53 | svr.bind(80); |
donatien | 0:0b1369ae8b74 | 54 | |
donatien | 0:0b1369ae8b74 | 55 | printf("Listening...\n"); |
donatien | 0:0b1369ae8b74 | 56 | |
donatien | 0:0b1369ae8b74 | 57 | Timer tm; |
donatien | 0:0b1369ae8b74 | 58 | tm.start(); |
donatien | 0:0b1369ae8b74 | 59 | //Listen indefinitely |
donatien | 0:0b1369ae8b74 | 60 | while(true) |
donatien | 0:0b1369ae8b74 | 61 | { |
donatien | 0:0b1369ae8b74 | 62 | Net::poll(); |
donatien | 0:0b1369ae8b74 | 63 | if(tm.read()>.5) |
donatien | 0:0b1369ae8b74 | 64 | { |
donatien | 0:0b1369ae8b74 | 65 | led1=!led1; //Show that we are alive |
LouisReynier | 3:c2b64cce42d8 | 66 | count ++ ; |
donatien | 0:0b1369ae8b74 | 67 | tm.start(); |
donatien | 0:0b1369ae8b74 | 68 | } |
donatien | 0:0b1369ae8b74 | 69 | } |
donatien | 0:0b1369ae8b74 | 70 | |
donatien | 0:0b1369ae8b74 | 71 | return 0; |
donatien | 0:0b1369ae8b74 | 72 | |
donatien | 0:0b1369ae8b74 | 73 | } |
LouisReynier | 3:c2b64cce42d8 | 74 | // http://192.168.1.102/rpc/pot1/read dans le navigateur permet de lire l'état du potard ! |