Forum: PC-Programmierung Datenaustausch zwischen PHP und C


von Steffen (Gast)


Lesenswert?

Hallo!

Ich schreibe gerade ein C Programm, das über einen CAN Transciever Daten 
mit anderen Geräten austauscht. Nun möchte ich dazu ein Webinterface 
aufsetzen (in PHP), das sowohl die durch das C Programm verarbeiteten 
Daten anzeigen kann als auch dem C Programm Daten zur Verfügung stellen 
kann.

Aber wie konstruiere ich den Austausch der Daten zwischen C und PHP? 
Kann mir da jemand ein Stichwort geben?

Das ganze läuft unter Linux (Raspberry Pi).

Besten Dank! Mfg Steffen

von Christian D. (burning_legend)


Lesenswert?

Die imho beste und vermutlich einfachste Loesung unter Linux waeren Unix 
Sockets. Tutorials gibt es im Netz, die Dokumentation auf PHP.net ist 
aber auch nicht schlecht [1].

EDIT: Also C Programm als Server und PHP Script als Client.
Wenn das PHP Script aufgerufen wird, verbindet es sich zu dem Server, 
sendet Daten oder ruft die bereits im Puffer vorhandenen Daten ab.
Der Aufwand haelt sich stark in Grenzen.

Andere Moeglichkeit waere dein Webinterface in C zu schreiben, mit CGI.


[1] http://php.net/manual/de/book.sockets.php

von Alexander F. (alexf91)


Lesenswert?

Christian D. schrieb:
> Die imho beste und vermutlich einfachste Loesung unter Linux waeren Unix
> Sockets.

Noch einfacher wäre vermutlich die Verwendung von Pipes.

von Lukas K. (carrotindustries)


Lesenswert?

Seh' dir mal 0mq an, Bindings gibt es für beinahe jede Sprache.

von Steffen (Gast)


Lesenswert?

Ich denke, mit UNIX Sockets sollte das ganze funktionieren.

Wenn ich es richtig verstanden habe:
Das C Programm stellt den Socket-Server zur Verfügung.

Das PHP Skript verbindet sich bei Aufruf mit dem Socket, tauscht die 
entsprechend gewünschten Daten aus, beendet die Verbindung und gibt dann 
die Daten entsprechend auf der Website aus.

Das werde ich am Wochenende austesten, sobald ich wieder an meine 
Entwicklungsumgebung komme.

Vielen Dank für die Hilfe!
Lg Steffen

von Christian D. (burning_legend)


Lesenswert?

Alexander F. schrieb:
> Christian D. schrieb:
>> Die imho beste und vermutlich einfachste Loesung unter Linux waeren Unix
>> Sockets.
>
> Noch einfacher wäre vermutlich die Verwendung von Pipes.

Das stimmt, daran habe ich nicht gedacht. Man wuerde aber schnell 
Probleme bekommen (auch bezgl. perfomance), wenn das Webinterface 
mehrfach aufgerufen wuerde. Das waere mit Sockets leichter zu handeln. 
(eigener Prozess fuer jeden Clienten o.ae.)

von Steffen (Gast)


Lesenswert?

Lieben Dank an alle, die geholfen haben.
Das System läuft jetzt einwandfrei mit Sockets.

Schöne Feiertage!

von Volker (Gast)


Lesenswert?

Hallo Steffen,

Ich habe eben Deinen Post entdeckt. Ich habe im Wesentlichen das selbe 
vor. Ich möchte das Raspberry Pi als Webfrontend für meinen Hausbus 
verwenden. Wie hast Du die Verbindung zum CAN hergestellt? Ich wollte 
einen MCP2515 per SPI adaptieren. Kannst Du mich noch mit ein paar Infos 
zum Aufsetzen eines Webservers auf dem Pi versorgen? Kennst Du gute 
Links hierzu? Welche Funktionen hast Du bereits umgesetzt?
Ich bin leider ein Linux-Laie und muss mich erstmal einarbeiten...

Viele Grüße

Volker

von Steffen B. (flite)


Lesenswert?

Hallo Volker,

ich habe an meiner Alarmanlage als Master/Webfrontend bislang den 
Webserver von Ulrich Radig am laufen. Nach einigen Problemen 
(insbesondere Emailversand und Sicherheit mit der Passwortabfrage) 
möchte ich auf das Raspberry Pi umsteigen.

Das CAN Interface sowie die Hauptroutinen sollen in einem C Programm 
laufen.

Momentaner Stand:
- Webserver einschl. PHP/MySQL aufgesetzt und funktionstüchtig
- SPI Schnittstelle funktionstüchtig
- Sockets (nichtblockierend) funktionstüchtig
- Versand von Statusmeldungen per Email funktionstüchtig

Für die CAN Unterstützung habe ich das CAN SPI Click Modul 3,3V von 
MikroElektronika besorgt. Da es heute erst ankam, kontte ich es bislang 
nicht testen. Da aber bereits die CAN Umsetzung auf dem Webserver von 
Ulrich Radig mit dem MCP 2515 (der auch auf dem Modul verbaut ist) 
funktioniert, kann ich die Routinen vom Webserver verwenden. Ich gehe 
davon aus, dass das innerhalb kürzester Zeit funktioniert.

Falls du weitere Infos möchtest, kannst du mich gern per PN 
kontaktieren.
Lg Steffen

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.