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:
Fri May 17 07:45:56 2019 +0000
Revision:
4:ca958a3eeeb7
Parent:
3:c2b64cce42d8
Child:
5:7805b33eb3b7
correction erreur

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