ESP8266 Server File up- and download über UART

Mehr
02 Dez 2018 12:20 #524 von MGM
MGM erstellte das Thema ESP8266 Server File up- and download über UART
Hallo zusammen

Ich habe leider ein Problem mit dem ESP8266.
Zuerst was ich gerne machen würde.
Ich will eine standalone Netzwerk aufbauen mit dem ESP. Auf diesem ESP läuft ein Webserver mit einer einfach HTML page. Auf der Website sind 3 Buttons mit verschiedenen Funktionen.

1. Download (Ladet ein CSV von einem externen Memory das an den STM32 angeschlossen ist auf den Computer)
2. Update(Ladet Daten vom Computer auf den STM32)
3.Change Password (Das Passwort des Netzwerks des ESP's kann geändert werden)

Der ESP8266 ist über UART mit dem STM32 verbunden.

Dies ist der gesamte Code den ich bis jetzt geschrieben habe. Die Website mit 3 Buttons wird erstellt. Einen versuch für den Download habe ich auch gewagt aber leider funktioniert der noch nicht.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
#include <ESP8266WiFiMulti.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <ESP8266mDNS.h>
#include <FS.h>
#include <EEPROM.h>
#include "mainpage.h" //Our HTML webpage contents


//On board LED Connected to GPIO2
#define LED 2 



const char *ssid = "AventuraAero";
char *password = "123456789";
 
ESP8266WebServer server(80);

//--------------Handle Routins --------------
void handleRoot() {
 Serial.println("You called root page");
 String s = MAIN_page; //Read HTML contents
 server.send(200, "text/html", s); //Send web page
}

void handleDownload(){
   //first create a fixed buffer
  const int bufferSize = 6000;
  const uint8_t _buffer[6000];
  
  //a little counter to know at which position we are //in our buffer
  int bufferCounter = 0;
    
  int fileSize = 80000;

  //now send an empty string but with the header field //Content-Length to let the browser know how much data //it should expect
  server.sendHeader("Content-Length", (String)fileSize);
  server.send(200, "text/html", "");
  
  for(int i=0;i<fileSize;i++){
    _buffer[bufferCounter] = random(256); //write some random bytes into our buffer
    bufferCounter++;
    
    if(bufferCounter >= bufferSize){ //when the buffer is full...
      server.sendContent_P(_buffer, bufferCounter); //send the current buffer
      bufferCounter = 0; //reset the counter
    }
    
  }
  

}

void handleUpdate() { 
 Serial.println("Update page");
 digitalWrite(LED,HIGH); //LED off
 server.send(200, "text/html", "Update"); //Send ADC //value only to client ajax request
}

void handleChange_Password() { 
 Serial.println("Change_Password page");
 digitalWrite(LED,HIGH); //LED off
 server.send(200, "text/html", "Change"); //Send ADC //value only to client ajax request
}

//--------------Setup --------------
void setup(void){
  
  Serial.begin(115200);
  EEPROM.begin(64);
  SPIFFS.begin();
  Serial.println("");
  
  //Onboard LED port Direction output
  pinMode(LED,OUTPUT); 
  //Power on LED state off
  digitalWrite(LED,HIGH);
  
  WiFi.mode(WIFI_AP);           //Only Access point
  WiFi.softAP(ssid, password);  //Start HOTspot //removing password will disable security
 
  IPAddress myIP = WiFi.softAPIP(); //Get IP address
  Serial.print("HotSpt IP:");
  Serial.println(myIP);
 
  server.on("/", handleRoot);      //Which routine to //handle at root location. This is display page
  
  server.on("/Download", handleDownload);
  server.on("/Update", handleUpdate);
  server.on("/Change_Password", handleChange_Password);
  
 
  server.begin();                  //Start server
  
  Serial.println("HTTP server started");
}
//--------------Loop --------------
void loop() {
  server.handleClient();
}

Falls jemad mehr informationen braucht schreibt es einfach in die Kommentarliste.

Vielen Dank für eure Zeit

Zur Veranschaulichung habe ich ein kleines Blockschaltbild im Anhang.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum