Forum: Mikrocontroller und Digitale Elektronik TCP/IP Websocket!


von Hans M. (Gast)


Lesenswert?

Hallo zusammen,

ich möcht gern etwas mit meinem RasPi rumspielen, dafür hab ich nen 
PCA9532 per I2C und Pegelwandler angeschlossen. Dazu hab ich jeden 2ten 
OutPin mit ner LED + Vorwiederstand verbunden und jeden daneben 
liegenden Pin mit dem Ausgang davor verbunden. Der Plan dahinter ist, 
ich möch überprüfen können , ob der Ausgang richtig geschalten hat. Via 
i2cset und i2cget in der Konsole klappt das schon sehr gut. Jetzt möchte 
ich über eine Windowsanwendung 1-8 LEDs einschalten und über die 
benachbarten Pins überprüfen, ob auch geschalten wurde. Sprich ich klick 
in einem C# Programm auf LED_01_ein und die LED_01 geht an und über die 
Rückmeldung über Eingang 02 bekomm ich das Feedback, das die LED auch 
wirklich angegangen ist.
Für die Umsetzung such ich ne Lib für den Raspi in C auf die ich meine 
"Schalt X ein und melde Y zurück"_API aufsetzen kann!
Muss ich mich echt um TCP/IP kümmern, wenn Linux doch das schon macht?
Hab gelesen, das Websockets so ein bidirektionales Protokoll 
bereitstellt.
C is kein Prob für mich, nur is Linux volles Neuland :-S
WiringPi ist schon ein guter Ansatz,nur fehlt mir da noch die 
LanGeschichte.
Mein Pi soll wirklich nix anderes machen, als Kommandos per TCP/IP 
empfangen, umsetzen ( an i2c ausgeben ) und das ergebnis zurück liefern.
Hab bis jetzt nur ATMegas programmiert und wär über jeden 
Denkanstoss/Tipp dankbar. Möcht mir einfache ne Bastelumgebung schaffen, 
z.B. anderer Chip vllt per Spi aber gleiche Ansteuerung über die API.
Meine Idee geht dahin, das ich n paar Dateien in mein C_Projekt einbinde 
und initialisiere und wenn über TCP/IP n Kommando kommt , das 
entsprechend (m)einer API decodiere und n Event/Interrupt bekomme auf 
den ich reagieren kann. Wenn das ganze auch noch in ca 10ms passiert 
könnt ich mir noch n paar schöne Regelalgorithmen damit vorstellen ;-)
Sorry wegen dem langen Text, aber dachte je mehr Info um so besser :-D

MfG
Hans

von Svenska (Gast)


Lesenswert?

Linux auf dem Pi ist wie Linux auf dem PC. Für TCP/IP unter Linux gibt 
es genug Tutorials im Netz und Bibliotheken ebenfalls wie Sand am Meer.

> Muss ich mich echt um TCP/IP kümmern, wenn Linux doch das schon macht?
Du sollst keinen TCP/IP-Stack schreiben, sondern den von Linux benutzen. 
Wie man das macht, findest du sicherlich selbst heraus. Wenn du C 
kannst, ist das wirklich einfach. :-)

von PittyJ (Gast)


Lesenswert?

30 Sekunden gesucht:
http://www.cs.ucsb.edu/~almeroth/classes/W01.176B/hw2/examples/tcp-server.c

Der Code ist kürzer als dein Posting hier. Und der Client-Code dazu ist 
noch kürzer.

Vielleicht trotzdem ein Tutorial dazu lesen, damit man weiss, was da 
überhaupt passiert.

von Rolf Magnus (Gast)


Lesenswert?

Hans M. schrieb:
> Für die Umsetzung such ich ne Lib für den Raspi in C auf die ich meine
> "Schalt X ein und melde Y zurück"_API aufsetzen kann!
> Muss ich mich echt um TCP/IP kümmern, wenn Linux doch das schon macht?

Warum solltest du das müssen? Wie du schon sagst, macht Linux das doch 
schon.

> Hab gelesen, das Websockets so ein bidirektionales Protokoll
> bereitstellt.

Müssen es Websockets sein? Ich würde einfach direkt auf TCP/IP gehen.

> Meine Idee geht dahin, das ich n paar Dateien in mein C_Projekt einbinde
> und initialisiere und wenn über TCP/IP n Kommando kommt , das
> entsprechend (m)einer API decodiere und n Event/Interrupt bekomme auf
> den ich reagieren kann. Wenn das ganze auch noch in ca 10ms passiert
> könnt ich mir noch n paar schöne Regelalgorithmen damit vorstellen ;-)

Das sollte kein Problem sein.

von Christian B. (casandro)


Lesenswert?

Wenn Du noch weniger betreffend TCP/IP machen willst, kannst Du auch den 
inetd, bzw den xinetd verwenden. Das ist ein Programm das nichts anderes 
macht als einen Port auf zu machen, und wenn eine Verbindung kommt wird 
Dein Programm aufgerufen und Standard Ein- und Ausgabe auf die 
Verbindung gelegt.

Und wenn Du Dich nicht mal mehr um Websocket kümmern willst, gibts 
websocketd.
http://websocketd.com/


Vielleicht eine kleine generelle Anmerkung. Unter unixoiden Systemen 
(von denen Linux eines ist) schreibt man in der Regel seine Programme 
so, dass sie nur eine Sache machen, die dafür gut, und mit textuellen 
Schnittstellen. Sprich Du hast hier zum Beispiel einen Websocketserver, 
der gibt Text an Dein Programm weiter. Dein Programm braucht sich nicht 
um Websocket kümmern oder irgendwelche Bibliotheken reinlinken, weil die 
Schnittstelle einfacher Text ist. Dadurch kannst Du auch trivial 
Programmiersprachen mischen und Programmteile als Shellskript machen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.