STM32F4/ESP8266 schließt Verbindung nur jede zweite Übertragung

OP #5035770
Lesenswert?
• ▲
▼
Hallo zusammen,

ich betreibe einen ESP8266 als Webserver, welcher 4 Relais schaltet.

Funktioniert alles soweit nur aus mir unerklärlichen Gründen wird die 
Verbindung, nur bei jeder zweiten Übertragung an den Browser, 
(unterschiedliche Browser ausprobiert) geschlossen.

Habe vermutet das die bei "AT+CIPSEND=0,888" nicht richtig ist jedoch 
habe ich mehr und weniger Zeichen durch probiert und es ändert nichts an 
dem genannten Problem.

Bin jetzt nicht so sehr mit HTML vertraut, könnte es an dem HTML CODE 
liegen?

Bei jeder Anfrage vom Browser wird folgender Code abgearbeitet:
1
    case ESP_SET_OUTPUT:
2
      USART_puts(USART1, "AT+CIPSEND=0,888\r\n");  
3
      Delay(50);
4
      USART_puts(USART1, "<html>");
5
      USART_puts(USART1, "<!DOCTYPE html><head><meta name=\"viewport\" content=\"width=480\"/></head>");
6
      USART_puts(USART1, "<body>");
7
      USART_puts(USART1, "<h1>Powersteuerung:</h1><form ACTION=\"Gartensteuerung\" method=\"get\">");
8
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON1\">Ausgang 1 ON</button>");
9
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON2\">Ausgang 2 ON</button>");
10
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON3\">Ausgang 3 ON</button>");
11
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON4\">Ausgang 4 ON</button>");
12
      USART_puts(USART1, "<br></br>");
13
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF1\">Ausgang 1 OFF</button>");
14
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF2\">Ausgang 2 OFF</button>");
15
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF3\">Ausgang 3 OFF</button>");
16
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF4\">Ausgang 4 OFF</button>");
17
      USART_puts(USART1, "</body>");
18
      USART_puts(USART1, "</html>\r\n");
19
      Delay(500);
20
      USART_puts(USART1, "AT+CIPCLOSE=0\r\n");
21
      USART_puts(USART1, "AT+CIPCLOSE=1\r\n");
22
      USART_puts(USART1, "AT+CIPCLOSE=2\r\n");
23
  
24
      Delay(100);
25
      ESP_Status = 0;
26
    break;
Angehängte Dateien:
Gast #5035969
Lesenswert?
• ▲
▼
Wenn du ihm sagst, dass du 888 Bytes senden willst, dann musst du auch 
genau 888 Bytes senden.

Du solltest besser vorher ermitteln, wie viele Bytes es denn genau sein 
werden.

strlen() wäre dazu zum Beispiel hilfreich.

Außerdem mache Dir mal Gedanken über "Strings im Flash". bei der ob 
gezeigten Programmierweise wird Dir nämlich sonst sehr bald das RAM 
ausgehen. Alle deine Strings liegen permanent im RAM!

Warum schließt du drei Verbindungen, sendest aber nur auf einer?

So wie ich das hier sehe, empfängt dein Webserver Vebindungsanfragen vom 
Web browser und sendet dann HTML Seiten zurück. Du musst dazu schon den 
richtigen Kanal (als Variable) benutzen. Wenn der ESP einer Vebindung 
zum Beispiel die Nummer 4 zuweist, geht bei Dir gar nichts mehr.
OP #5036266
Lesenswert?
• ▲
▼
Das mit der Länge ist mir bewusst, habe auch schon mit der zahl der 
Zeichen variert.

Sollte nur ein Teilnehmen zugreifen sollte dieser im Normalfall Channel 
0 erhalten, dass muss noch genau angepasst werden das ist der erste 
Output.
Aber ich bekomme ja jedes mal die Seite nur sie wird halt nur jede 
zweite übertragung geschlossen.
Gast #5036346
Lesenswert?
• ▲
▼
> Sollte nur ein Teilnehmen zugreifen sollte dieser im Normalfall
> Channel 0 erhalten

Nein, die Kanalnummer hängt vom Glück ab, vor allem, weil jeder Browser 
mehrere Verbindungen gleichzeitig zum Server aufbaut. Selbst wenn deine 
Seite nur aus HTML Text besteht, versucht der Browser ab und zu das Bild 
favicon.ico zu laden.

> nur sie wird halt nur jede zweite übertragung geschlossen.

Woran genau erkennst du das?
Kannst du die Antworten des ESP Moduls protokollieren?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.