2017-09-08 3 views
0

Ich habe Daten an einen HTTP-Server gesendet (ich habe den Server mit ESP8266 erstellt) und der Server gibt die Daten vollständig.Empfangen von Daten in der seriellen Schnittstelle ESP8266

Aber das Problem ist, wenn ich den Webbrowser aktualisieren die Daten entfernt.

Ich weiß nicht, wie ich eine Sicherung meiner Daten haben kann und jedes Mal, wenn ich den Browser aktualisiere, kann ich die älteren Daten sehen.

Hier ist mein Code:

#include <ESP8266WiFi.h> 

const char* ssid = "Ashnay-E-Aval"; 
const char* password = "8841525252"; 

WiFiServer server(80); 

void setup() { 

    Serial.begin(115200); 
    delay(10); 

    Serial.println(); 
    Serial.println(); 
    Serial.print("Connecting to "); 
    Serial.println(ssid); 

    WiFi.begin(ssid, password); 

    while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
    Serial.print("."); 
    } 
    Serial.println(""); 
    Serial.println("WiFi connected"); 

    server.begin(); 
    Serial.println("Server started"); 

    Serial.println(WiFi.localIP()); 
} 

void loop() { 

    WiFiClient client = server.available(); 
    if (!client) { 
    return; 
    } 

    Serial.println("new client"); 
    while (!client.available()) { 
    delay(1); 
    } 

    String req = client.readStringUntil('\r'); 
    Serial.println(req); 
    client.flush(); 
    String s; 
    String str=Serial.readStringUntil('\n'); 


    s+= "<!DOCTYPE html>"; 

    s+= "<html>"; 

    s+= "<body>"; 

    s+= "<h1>My First Heading</h1>"; 

    s+= "<p>My "+STR+".</p>"; 

    s+= "</body>"; 

    s+= "</html>"; 

    str=""; 
    client.print(s); 
    delay(1); 
    Serial.println("Client disconnected"); 
} 
+0

Welche Daten? Haben Sie Formulare auf Ihrer Website? Zeigen Sie den Code. – Defozo

+0

Hallo nein Ich sende eine Zeichenfolge von einem STM32 zu meinem ESP8266-Modul und Modul empfange Daten vollständig Das Problem ist hier, dass, wenn ich den Browser aktualisieren Daten wurden entfernt. Ich habe den Code in der Frage – amiroruji72

+0

erneuern den Code nicht einmal kompilieren . –

Antwort

1

Wenn ich Sie richtig verstehe, Ihre Esp8266 bekommt einige Daten (ein String) über Serien von STM32. Der ESP8266 erhält möglicherweise bei jeder Ausführung der Hauptschleife neue Daten. Sie möchten Ihre Website aktualisieren, wenn neue Daten (neue Zeichenfolge) von Ihrem STM32 vorhanden sind. Wenn nichts gesendet wird, möchten Sie alte Daten anzeigen (alte Zeichenfolge).

Um zu erreichen, dass Sie benötigen, um: globalen Variable

  1. erklären, so ist es nicht jede Schleife neu erstellt.
  2. Vergleichen Sie diese Variable mit neuen Daten von readStringUntil().
  3. Wenn die neuen Daten nicht leer sind (STM32 hat etwas gesendet), weisen Sie der globalen Variablen neue Daten zu.
  4. Verwenden Sie die globale Variable, um Daten auf der Website anzuzeigen.

Code:

#include <ESP8266WiFi.h> 

const char* ssid = "Ashnay-E-Aval"; 
const char* password = "8841525252"; 

WiFiServer server(80); 

String str = ""; 

void setup() { 

    Serial.begin(115200); 
    delay(10); 

    Serial.println(); 
    Serial.println(); 
    Serial.print("Connecting to "); 
    Serial.println(ssid); 

    WiFi.begin(ssid, password); 

    while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
    Serial.print("."); 
    } 
    Serial.println(""); 
    Serial.println("WiFi connected"); 

    server.begin(); 
    Serial.println("Server started"); 

    Serial.println(WiFi.localIP()); 
} 

void loop() { 

    WiFiClient client = server.available(); 
    if (!client) { 
    return; 
    } 

    Serial.println("new client"); 
    while (!client.available()) { 
    delay(1); 
    } 

    String req = client.readStringUntil('\r'); 
    Serial.println(req); 
    client.flush(); 
    String s; 
    String newStr = Serial.readStringUntil('\n'); 
    if (!newStr.empty()) { 
     str = newStr; 
    } 

    s+= "<!DOCTYPE html>"; 

    s+= "<html>"; 

    s+= "<body>"; 

    s+= "<h1>My First Heading</h1>"; 

    s+= "<p>My "+STR+".</p>"; 

    s+= "</body>"; 

    s+= "</html>"; 

str=""; 
    client.print(s); 
    delay(1); 
    Serial.println("Client disconnected"); 
} 
Verwandte Themen