You are viewing an older revision! See the latest version
Services
Einführung¶
Remote Procedure Call (RPC - „Aufruf einer fernen Prozedur“) ist eine Technik zur Realisierung von Interprozesskommunikation. Sie ermöglicht den Aufruf von Funktionen in anderen Adressräumen. Im Normalfall werden die aufgerufenen Funktionen auf einem anderen Computer als das aufrufende Programm ausgeführt. Es existieren viele Implementierungen dieser Technik, in der Regel sind sie untereinander nicht kompatibel
Die mbed Plattform beinhaltet eine RPC Library, welche ausgesuchte mbed Objekte (DigitalPin, DigitalOut etc.) mittels Serieller Schnittstelle oder via HTTP Aufrufen, zur Verfügung stellt.
Die mbed RCP Klassen verwenden C++ Templates, siehe Zeilen mit <Argument> und den Namespace RPC, siehe Zeilen mit RPC::.
Beispiel: Smart Object¶
int main() { printf("RPC HTTP Server\n"); eth.init(); //Use DHCP eth.connect(); printf("IP Address is %s\n\r", eth.getIPAddress()); // Klassen RPC::add_rpc_class<RpcDigitalOut>(); RPC::add_rpc_class<RpcDigitalIn>(); RPC::add_rpc_class<RpcAnalogIn>(); RPC::add_rpc_class<RpcPwmOut>(); // Objekte RPC::construct<RpcDigitalOut, PinName, const char*>(D10, "led1"); RPC::construct<RpcDigitalOut, PinName, const char*>(D11, "led2"); RPC::construct<RpcPwmOut, PinName, const char*>(D12, "led3"); RPC::construct<RpcAnalogIn, PinName, const char*>(A0, "poti"); RPC::construct<RpcAnalogIn, PinName, const char*>(A1, "light"); RPC::construct<RpcDigitalIn, PinName, const char*>(A2, "b1"); // Handler HTTPServerAddHandler<RPCHandler>("/rpc"); // Start HTTP Server auf Port 80 printf( "Starte Server\n" ); HTTPServerStart(80); }
Beispiel: Client¶
Aufruf der entsprechenden Objekt-Methode mittels:
http://<url of mbed>/rpc/<Object name>/<Method name> <Arguments separated by spaces>
z.B. durch Starten des Browser und Eingabe von "http://<IP-Adresse mbed>/rpc/led2/write+1". Entspricht led2.write(1); led2 wurde vorher mittels DigitalOut led2(D11); instanziert.
Zum lesen kann http://<IP-Adresse mbed>/rpc/poti/read verwendet werden.
Sourcecode¶
Import programRPCHTTPServerSimple
Einfaches mbed RPC Beispiel