Datenaustausch C++/HTML

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich möchte über eine Webseite (über einen Button) die GPIO's ansteueren.

    Für die Ansteuerung der GPIO's möchte ich ein C++ Programm verwenden.

    Bekannt sind mir auf der C++ Seite die Socket-Befehle ( #include <sys/socket.h>, aus diversen Beispielen für Server/Client).

    Wie aber könnte ich diese Befehle auf der HTML-Seite verarbeiten ?

    Ist das möglich ohne zusätzliche Lib's wie z.B. "CGI" ?

    MfG

    Juergen B.

    :?:

  • Hallo,

    ok, HTML natürlich nicht, aber ich denke doch über JavaScript, AJAX.

    Ich weiss im Moment nicht wie ich vorgehen kann, deshalb würde ich mir wünschen einen Hinweis hier im Forum zu erhalten.

    MDN sagt mir im Moment nichts.

    MfG

    Juergen B.

  • ok, HTML natürlich nicht, aber ich denke doch über JavaScript, AJAX.

    Klar. WebSockets sind hier denke ich overkill, nimm fetch. (https://developer.mozilla.org/en-US/docs/Web…API/Using_Fetch)

    MDN sagt mir im Moment nichts.

    "Mozilla Developer Network"

    https://developer.mozilla.org/en-US/ (und teilweise https://developer.mozilla.org/de/)

  • Jetzt muss ich noch herausfinden wie "fetch" und "C++" zusammen arbeiten.

    Du must abstrakter denken. fetch interessiert sich nicht, ob dein Backend in Python, Go, C# oder C++ geschrieben ist - fetch arbeitet mit dem HTTP-Protokoll. Serverseitig brauchst du einen gewöhnlichen HTTP-Server (keine Ahnung, was man da für C++ nimmt - ist jetzt auch nicht die typische Sprache in der (Backend)Webentwicklung...).

    Das war's dann - mit fetch (o.ä.) mit dem Server kommunizieren und du bist fertig.

  • > keine Ahnung, was man da für C++ nimmt

    Apache laeuft gut mit CGIs: https://blog.heimetli.ch/ajax-gpio.html

    Wenn's was groesseres werden soll, koennte man aber auch ueber einen WebServer in C++ nachdenken. Das gibt es ziemlich sicher.

    > ist jetzt auch nicht die typische Sprache in der (Backend)Webentwicklung...).

    Stimmt. Das macht man eigentlich nur wenn es nicht anders geht.

  • nur ein Kurzer Gedanke:

    Das Thema wurde schon oft ich verschieden Varianaten diskutiert ich würde es so machen so fern der PI nicht aus dem Internet erreichbar ist.

    Apache mit PHP drauf (gibt 100 Anleitungen im Netz).

    Per PHP auf dem Server (PI) eine Datei schreiben. PHP Scripte sind Quasi HTML Seiten auf in dem Apache Server bzw können aus Statischen Seiten auf gerufen werden.

    Mit dem C++ Programm auf das erstellen der Datei warten, auslesen -> GPIO Schalten, Löschen.

    Bei PHP muss man halt die Rechte vergeben das der WebServer (Apache) auch schreiben draf das ist Standard mäßig aus (Sicherheit).

    https://www.raspberrypi.org/forums/viewtopic.php?f=75&t=209483

  • Hallo,

    vielen Dank für Eure Hinweise.

    Mit Apache und PHP habe ich meine Anwendung schon realisiert.

    CGI hatte ich mir auch schon angesehen (hat mir aber auf dem ersten Blick nicht gefallen).

    Jedoch möchte ich das nun mit C++ und HTML (JavaScript) realisieren.

    MfG

    Juergen B.

  • Hallo,

    Zitat

    Jedoch möchte ich das nun mit C++ und HTML (JavaScript) realisieren.

    Gut, dann musst du dir mal ein in C++ geschriebenes REST-Framework oder zumindest ein Framework raussuchen, was mit GET und POST Request umgehen kann.

    Wie oben schon gesagt wurde, C++ ist für serverseitige Sachen weder 1. noch 2. noch 3. Wahl - das geht mit Python, PHP, Node.js, Ruby, Go, ... deutlich einfacher und schneller. Aber jeder nach seinem Geschmack :)

    So als Vergleich: das ein einfache Schalten eine GPIO über eine HTTP-basierte Schnittstelle sind in Python ca. 10-15 Zeilen Code. Plus natürlich der Quelltext für das HTML/JS Template - aber das brauchst du ja immer.

    Gruß, noisefloor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!