Man kann das Auffrischen eines Bildes (erneutes Abrufen), ohne die ganze Seite neu zu laden, auch per Javascript (eingebettet in die Webseite) vom Browser machen lassen ...
JA! Läuft. Bild über http-streaming, fernsteuerung über UDP. Alles auf einem ESP32.
Kater lässt sich durch die RC karre nicht mehr stören :o)
Das ohr, das war eine elster.
Schön dass es läuft. Du umgehst halt die Webserver-Klasse komplett und machst alles zu Fuß selber. Kann man machen.
Zwei Anmerkungen:
UDP Parallel dazu geht so auch nicht, das war doch der Grund für die ganze Übung?
Du steckst immer in der "while connected" Schleife fest.
und:
s_server.sendContent(...
Das Senden direkt auf dem s_server fliegt in einer der nächsten Versionen des ESP32-Arduino-Frameworks raus. War nie klar definiert, auf welcher Verbindung (oder ob auf Allen) das senden sollte.
Besser: mach die Ausgaben auf "wfc", dafür ist das da, und damit ist auch klar welche Verbindung welche Daten erhält.
Und statt sendContent(String(fb->buf, fb->len)) gäb's wfc.write(const uint8_t *buf, size_t size) das kommt ohne Kopieren des Framebuffers in einen String aus, sondern kann direkt auf dem fb arbeiten.
UDP Parallel dazu geht so auch nicht, das war doch der Grund für die
ganze Übung?
Da läuft der bildserver auf port 81, der normale server auf port 80 und udp auf port 5005. Kein problem.
Die version mit #include <WebServer.h> hat den vorteil dass arduino OTA läuft. Das habe ich bei "esp_http_server.h / httpd" und "<WiFi.h> / WiFiServer server(80);" nicht hingebracht.
Du steckst immer in der "while connected" Schleife fest.
Das muss so sein. Den loop kann man auseinander nehmen und dazwischen anderes machen. Der muss nicht im handler code sein. Das ist test-code!
Besser: mach die Ausgaben auf "wfc", dafür ist das da, und damit ist
auch klar welche Verbindung welche Daten erhält.
Ich habe gestern erstmals etwas von "wfc" gehört. etwas geduld bitte!
Und statt sendContent(String(fb->buf, fb->len)) gäb's wfc.write(const
uint8_t *buf, size_t size) das kommt ohne Kopieren des Framebuffers in
einen String aus, sondern kann direkt auf dem fb arbeiten.
Wo ist eigentlich der dispatcher von WiFiClient auf die verschiedenen WebServer.h server.on("/", handler); zu finden?
Den http decoder von WiFiClient.read() meine ich.
Wo ist eigentlich der dispatcher von WiFiClient auf die verschiedenen
WebServer.h server.on("/", handler); zu finden?
Der Webserver hat eine Linked List der Handler, die "on()"-Methoden hängen da einen Eintrag an.
In Parsing.cpp (WebServer::_parseRequest) läuft er, nachdem die Request-Header geparst sind, über die Liste, nimmt sich den ersten Handler der sich zuständig fühlt: