Frage

Ich habe ein eingebettetes Gerät, auf dem eine abgespeckte Version eines HTTP-Servers ausgeführt wird.Derzeit kann es statische HTML-Seiten anzeigen.Hier ist ein Beispiel für die Anzeige einer statischen HTML-Seite:

   char *text="HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"
          "<html><body>Hello World!</body></html>";
   IPWrite(socket, (uint8*)text, (int)strlen(text));
   IPClose(socket);

Was ich tun möchte, ist dynamische Inhalte anzuzeigen, z. B.ein Messwert von einem Sensor.Woran ich bisher gedacht habe, ist, die Seite von Zeit zu Zeit aktualisieren zu lassen

<meta http-equiv="refresh" content="600">

und benutze sprintf(), um den Sensorwert an die Text variable für die Antwort.

Gibt es eine Möglichkeit, dies zu tun, ohne die Seite ständig aktualisieren zu müssen?

War es hilfreich?

Lösung

Sie können den folgenden (aus meiner Erfahrung) Ansatz ausprobieren:- Teilen Sie statische und dynamische Inhalte, minimieren Sie dynamische Inhalte.

  • Erstellen Sie eine Pseudo-CGI-Schnittstelle, d. H.URL ihre eingebettete Website / Sensor.cgi sollte an die Generierung der folgenden HTTP-Antwort gebunden sein:

sprintf(cgi_str, "HTTP/1.0 200 OK\r\nContent-Type: text\r\nContent-Length: %d\r\n\r\nvalue=%02d", 8, sensor_value);

oder einfach nur (das ist alles über Ihre Designüberlegungen):

sprintf(cgi_str, "HTTP/1.0 200 OK\r\nContent-Type: text\r\nContent-Length: %d\r\n\r\n%02d", 2, sensor_value);

  • Verwenden Sie einfaches Javascript oder ein kleines Java-Applet, um regelmäßig anzufordern ihre eingebettete Website / Sensor.cgi.Beachten Sie, dass Javascript im Allgemeinen browserabhängig ist und möglicherweise ausgeschaltet ist. Das Java-Applet benötigt außerdem zusätzlichen statischen Inhalt - einige * sensor_reader.klasse", aber es hat außergewöhnliche Freiheit bei der Präsentation von Daten und erweitert das einfache Lesen und Anzeigen mit mehr Funktionen.

Dies ermöglicht es, die Kommunikation auf sehr effiziente Weise zu organisieren, anstatt die ganze Seite neu zu laden:ein Teil des Codes - Benutzer-Frontend - wird im Browser ausgeführt, der andere Teil - Backend - auf dem eingebetteten Gerät.

Andere Tipps

Bitte tun Sie nicht verwenden Sie ein Java-Applet, um dies bereitzustellen.

Clientseitig AJAX und Javascript machen so etwas einfach, ohne die Gemeinheit eines eingebetteten Applets.

Wo "Gemeinheit" enthalten kann:

  • Java-Sicherheitsprobleme
  • Java-Laufzeitfehlanpassungen
  • erhöhte Nutzlastgröße (Applets sind im Vergleich zu Javascript-Codeausschnitten groß)
  • geschwindigkeitsprobleme (es kann langsam sein, das Applet zu starten)
  • webseite ist schwieriger zu pflegen
  • und so weiter.

Zusammenfassend:es ist 2013, benutze einfach Javascript und AJAX.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top