Nach vielen Stunden Programmieren habe ich es endlich geschafft mal ein einfaches Beispielprogramm zu erstellen.
Der Durchbruch war erreicht als ich festgestellt hatte, dass dies nicht funktioniert:
client.println("HTTP/1.0 200 OK");
client.println("Content-type:text/html");
client.println();
Damit es funktioniert muss man es so schreiben:
client.println("HTTP/1.0 200 OK\nContent-type:text/html\n\n");
Mir ist allerdings immer noch nicht klar warum und wieso.
Im Beispielprogramm "WEB SERVER EXAMPLE" von Karl Soederby hatte auch die erste Variante funktioniert.
Ein ähnliches Programm ist auch unter docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-web-server-rgb zu finden. Da scheint aber ein Fehler passiert zu sein, denn mit fehlenden Leerstellen und Zeilenumbrüchen ist es sehr schwer lesbar. Kann man eigentlich irgendwie Fehler an docs.arduino.cc melden?
Mein jetzt funktionierendes Programm habe ich mal auf meine Homepage gestellt:
http://www.rolfp.ch/elektronik/#bewsens
Es besteht aus dem Arduino-Programm wifisens.ino und dem empfangenden c-Programm httpclient.cc. Ein makefile zum einfacheren Compilieren unter Linux ist auch mit dabei. Auf Windows habe ich es noch nicht getestet.
Grundsätzlich ist mir immer noch nicht ganz klar wann man OK-Bestätigungen zwischen Server (Programm auf dem Controller) und Client (Programm am Computer) machen sollte.
Verschiedene Beispielprogramme und Hinweise in Wikipedia (mit Suchwort HTTP) widersprechen sich da.