Hi, es sieht so aus, als könnte ich innerhalb eines Request Handlers der ESPAsyncWebServer Lib kein Serial.readString() o.ä. verwenden, weil diese Funktionen yield verwenden, yield und delay sind nicht erlaubt. Der Esp8266 kriegt einen Panic und startet neu. Ich möchte Daten, die ich im Request Handler per UART von einer Peripherie einlese, als JSON response über HTTP herausgeben. Die Daten muss ich komplett einlesen und dafür sollte es einen Timeout geben. Kann ich nicht einfach den Code von Serial.readString() wiederverwenden, aber ohne den yield call? Ich verstehe es so, dass yield dazu da ist, damit meine Funktion den Scheduler nicht unnötig blockiert. Kann aber nicht einschätzen, was es heißen würde, wenn ich das weglasse? Es geht um keine allzugroßen Datenmengen (< 255 Bytes) und ich kann den Timeout vermutlich ziemlich kurz halten. Hat jemand Ideen oder vielleicht sogar Codebeispiele, wo sowas gelöst wurde?
Mit Websockets bekommt man das komplett asynchron hin, da kann man dann auch binäre Daten schicken.
Naja, ich habe die Funktion jetzt mehr oder weniger kopiert und das yield weggelassen. Funktioniert. Bisher keine offensichtlichen Probleme.
mit dem beginResponseStream() / ... / send() müsste das auch gehen, ist vielleicht etwas sauberer. Dann ist man auch nicht im callback und yield müsste erlaubt sein. https://github.com/me-no-dev/ESPAsyncWebServer#print-to-response Bin kein http Experte, aber mit http 1.1 hält der Server den Socket doch eine Zeit lang offen?
J. S. schrieb: > mit dem beginResponseStream() / ... / send() müsste das auch gehen, ist > vielleicht etwas sauberer. Dann ist man auch nicht im callback und yield > müsste erlaubt sein. > https://github.com/me-no-dev/ESPAsyncWebServer#print-to-response > Bin kein http Experte, aber mit http 1.1 hält der Server den Socket doch > eine Zeit lang offen? ich hatte da verstanden, dass man schon innerhalb des callbacks ist. Dass diese Beispiele den umgebenden callback-body einfach weglassen. Ich meine, dieses request-Objekt muss doch irgendwo herkommen, also aus den Argumenten des Callbacks. Vielleicht versteh ich das aber auch komplett falsch. Müsste mal den Code dahinter studieren. Ich fand auch diesen Stream processor interessant. Aber der braucht eine size-Angabe vorab, was wiederum ungünstig ist: https://github.com/me-no-dev/ESPAsyncWebServer#respond-with-content-coming-from-a-stream-containing-templates
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.