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:
Sun Mar 20 07:39:09 2016 +0000
Revision:
17:752e17b9aab4
Parent:
14:3835863bc412
https statt http verhindert Fehler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcel1691 12:fc0fe305d4d3 1 /** HTTP RPC Server mit vordefinierten Objekten
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
marcel1691 12:fc0fe305d4d3 13 Servo servo1 ( D9 );
marcel1691 12:fc0fe305d4d3 14 Servo servo2 ( D10 );
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
marcel1691 12:fc0fe305d4d3 41 RPC::construct<RpcDigitalOut, PinName, const char*>(D11, "led1");
marcel1691 12:fc0fe305d4d3 42 RPC::construct<RpcDigitalOut, PinName, const char*>(D12, "led2");
marcel1691 12:fc0fe305d4d3 43 RPC::construct<RpcPwmOut, PinName, const char*>(D13, "led3");
stefan1691 14:3835863bc412 44 RPC::construct<RpcAnalogIn, PinName, const char*>(A0, "poti");
stefan1691 14:3835863bc412 45 RPC::construct<RpcAnalogIn, PinName, const char*>(A1, "light");
stefan1691 14:3835863bc412 46 RPC::construct<RpcDigitalIn, PinName, const char*>(A2, "b1");
stefan1691 11:4f5efa32051c 47 RPCVariable<float> rpcVal1( &val1, "servo1" );
stefan1691 11:4f5efa32051c 48 RPCVariable<float> rpcVal2( &val2, "servo2" );
yueee_yt 3:5758cfefe980 49
stefan1691 9:66ff9ae5572e 50 // Handler
yueee_yt 3:5758cfefe980 51 HTTPServerAddHandler<RPCHandler>("/rpc");
stefan1691 9:66ff9ae5572e 52
stefan1691 9:66ff9ae5572e 53 // Start HTTP Server auf Port 80
stefan1691 9:66ff9ae5572e 54 printf( "Starte Server\n" );
yueee_yt 0:050a5d4ffd55 55 HTTPServerStart(80);
yueee_yt 0:050a5d4ffd55 56 }
yueee_yt 0:050a5d4ffd55 57