Einfache Kommunikation zwischen 2 Raspberry Pis via GPIO Ports oder was sonst?

2 Antworten

Am besten machst Du das wohl per Socket über ein Netzwerk (Ethernet oder WLAN).

TCP gibt Dir einen "continuous byte stream" zwischen zwei Anwendungen. Dann musst Du "nur noch" ein Anwendungsprotokoll spezifizieren. Im einfachsten Fall kannst Du die Zahlen einfach ASCII-kodiert übertragen und ein Blank- oder Komma- oder Newline-Symbol als Trenner verwenden.

Wichtig: TCP ist ein Streamprotokoll und erhält daher die Segmentgrenzen nicht - zumindest nicht laut Spezifikation. Du brauchst also immer auf der Empfangsseite einen Puffer und im Protokoll entweder Längenfelder oder eindeutige Terminatorsymbole, um die Datensätze voneinander trennen zu können.

Also um ein Beispiel zu machen. Es kann sein, dass eine Seite folgendes schickt (jeder "String" sei ein Aufruf an write/send) ...

"Hallo", "Welt"

... und die andere Seite folgendes empfängt (jeder "String" sei ein Aufruf an read/receive) ...

"Hal", "loW", "elt"

Deswegen musst Du auf Empfängerseite geeignet puffern und "refragmentieren" können.

Hey, nimm einfach eine vernünftige Bibliothek!

Nur als Beispiel: http://www.grpc.io/

Damit kannst du eine Funktion auf einem entfernten Raspberry Pi so aufrufen, wie du eine normale Funktion aufrufen würdest - ohne sich über irgendein Protokoll Gedanken zu machen.

Auf jeden Fall sollte man irgendeine Bibliothek nehmen, die das tcp abstrahiert.

1
@Tuxgamer2

sollte

Das kommt immer auf den Anwendungsfall an. Es gibt zahlreiche existierende Protokolle, die nicht auf RPC oder ähnlichem basieren. Wenn man mit einer entfernten Stelle sprechen möchte, die ein solches Protokoll spricht, muss man dieses implementieren.

Ich selbst verwende für komplexere Szenarien, in denen es durchaus "etwas größeres sein darf", gerne REST-basierte Protokolle.

RPC "mag ich persönlich überhaupt nicht". Mir gefällt das Konzept nicht, auf einem Fremden Rechner "etwas aufzurufen". Aber das ist sicher eine Frage der Präferenz.

0

Was möchtest Du wissen?