HTTP RPC Server mit vordefinierten Objekten

Dependencies:   EthernetInterface HttpServer Servo mbed-rtos mbed

Fork of RPCHTTPServerVariable by th.iotkit2.ch

Mittels RPCVariable lassen sich lokale Variablen setzen. Diese Variablen können gesetzt write oder gelesen read werden.

Mittels Ticker u.ä. Varianten lassen sich damit auch Objektwerte setzen, welche von RPC nicht unterstützt werden, z.B. Servo's.

Client

Wert setzen: http://<IP-Adresse mbed>/rpc/servo2/write+0.5

Committer:
stefan1691
Date:
Wed Mar 11 19:11:18 2015 +0000
Revision:
11:4f5efa32051c
Parent:
10:f92d1e679fea
Child:
12:fc0fe305d4d3
Erweiterte Variante mit RCPVariable und Servo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 9:66ff9ae5572e 1 /** Minimalistischer RCP HTTP Server
stefan1691 9:66ff9ae5572e 2 */
yueee_yt 0:050a5d4ffd55 3 #include "mbed.h"
yueee_yt 0:050a5d4ffd55 4 #include "rtos.h"
yueee_yt 0:050a5d4ffd55 5 #include "EthernetInterface.h"
yueee_yt 0:050a5d4ffd55 6 #include "HTTPServer.h"
yueee_yt 3:5758cfefe980 7 #include "mbed_rpc.h"
stefan1691 11:4f5efa32051c 8 #include "Servo.h"
yueee_yt 5:bfa9878aa274 9
yueee_yt 0:050a5d4ffd55 10 EthernetInterface eth;
yueee_yt 3:5758cfefe980 11
stefan1691 11:4f5efa32051c 12 // Servo + aktuelle Werte
stefan1691 11:4f5efa32051c 13 Servo servo1 ( A4 );
stefan1691 11:4f5efa32051c 14 Servo servo2 ( A5 );
stefan1691 11:4f5efa32051c 15 float val1, val2;
stefan1691 11:4f5efa32051c 16 Ticker servos;
stefan1691 11:4f5efa32051c 17
stefan1691 11:4f5efa32051c 18 // Update Servo Werte
stefan1691 11:4f5efa32051c 19 void updateServo()
stefan1691 11:4f5efa32051c 20 {
stefan1691 11:4f5efa32051c 21 servo1 = val1;
stefan1691 11:4f5efa32051c 22 servo2 = val2;
stefan1691 11:4f5efa32051c 23 }
stefan1691 11:4f5efa32051c 24
yueee_yt 0:050a5d4ffd55 25 int main()
yueee_yt 0:050a5d4ffd55 26 {
stefan1691 9:66ff9ae5572e 27 printf("RPC HTTP Server\n");
stefan1691 9:66ff9ae5572e 28 eth.init(); //Use DHCP
stefan1691 9:66ff9ae5572e 29 eth.connect();
stefan1691 9:66ff9ae5572e 30 printf("IP Address is %s\n\r", eth.getIPAddress());
stefan1691 11:4f5efa32051c 31
stefan1691 11:4f5efa32051c 32 servos.attach( &updateServo, 1.0 );
stefan1691 9:66ff9ae5572e 33
stefan1691 9:66ff9ae5572e 34 // Klassen
yueee_yt 3:5758cfefe980 35 RPC::add_rpc_class<RpcDigitalOut>();
stefan1691 10:f92d1e679fea 36 RPC::add_rpc_class<RpcDigitalIn>();
stefan1691 10:f92d1e679fea 37 //RPC::add_rpc_class<RpcAnalogIn>(); // bringt Link Fehler
stefan1691 10:f92d1e679fea 38 RPC::add_rpc_class<RpcPwmOut>();
marcel1691 7:8a319a112fba 39
stefan1691 9:66ff9ae5572e 40 // Objekte
stefan1691 9:66ff9ae5572e 41 RPC::construct<RpcDigitalOut, PinName, const char*>(D10, "led1");
stefan1691 9:66ff9ae5572e 42 RPC::construct<RpcDigitalOut, PinName, const char*>(D11, "led2");
stefan1691 10:f92d1e679fea 43 RPC::construct<RpcPwmOut, PinName, const char*>(D12, "led3");
stefan1691 10:f92d1e679fea 44 RPC::construct<RpcDigitalIn, PinName, const char*>(PTC9, "b1");
stefan1691 10:f92d1e679fea 45 //RPC::construct<RpcAnalogIn, PinName, const char*>(A0, "light");
stefan1691 11:4f5efa32051c 46 RPCVariable<float> rpcVal1( &val1, "servo1" );
stefan1691 11:4f5efa32051c 47 RPCVariable<float> rpcVal2( &val2, "servo2" );
yueee_yt 3:5758cfefe980 48
stefan1691 9:66ff9ae5572e 49 // Handler
yueee_yt 3:5758cfefe980 50 HTTPServerAddHandler<RPCHandler>("/rpc");
stefan1691 9:66ff9ae5572e 51
stefan1691 9:66ff9ae5572e 52 // Start HTTP Server auf Port 80
stefan1691 9:66ff9ae5572e 53 printf( "Starte Server\n" );
yueee_yt 0:050a5d4ffd55 54 HTTPServerStart(80);
yueee_yt 0:050a5d4ffd55 55 }
yueee_yt 0:050a5d4ffd55 56