Go Down

Topic: bibliotheek maken (Read 475 times) previous topic - next topic

ageurtse

Hallo,

Ik probeer voor mijzelf een library te maken met daarin een config scherm voor de esp8266.
een groot deel lukt, alleen ik loop tegen een punt aan waar ik me even geen raad mee weet.

in mijn main programma gebruik ik iets als :
Code: [Select]
ESP8266WebServer server(80);

hoe kan ik deze zo declareren dat ik deze ook kan gebruiken in de library.
is er iemand die mij hier mee kan helpen.

PieterP

#1
Feb 25, 2018, 01:45 pm Last Edit: Feb 25, 2018, 02:39 pm by PieterP
Bedoel je zoiets?
#include <ESP8266WebServer.h>

class ConfigScherm {
  public:
    ConfigScherm(ESP8266WebServer &server) // Constructor
      : server(server) // Initialize ESP8266WebServer reference
    {
      server.on("/config", std::bind(&ConfigScherm::serveConfig, this));
    }
  private:
    ESP8266WebServer &server; // Reference to a ESP8266WebServer object

    void serveConfig() {
      server.send(200, "text/plain", "This is the config page.");
    }
};

ESP8266WebServer server(80);

ConfigScherm cfg(server);

void setup() {}

void loop() {
  server.handleClient();
}

(Niet getest)

Je moet waarschijnlijk opletten dat je ConfigScherm instance niet out of scope gaat voor je ESP8266WebServer instance out of scope gaat als je een niet-statische methode van ConfigScherm gebruikt als callback voor een server handler. De server heeft geen manier om request handlers uit de interne linked list te verwijderen. De std::function<void(void)> callback (aangemaakt door std::bind in ConfigScherm::ConfigScherm) bestaat dan nog wel, maar het object waarvan de methode moet opgeroepen worden niet meer.

Pieter

Jantje

Zet in de header an je library
Code: [Select]
extern ESP8266WebServer server;
Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

ageurtse

@pieterP,

Kun je mij misschien iets meer uitleggen wat er allemaal gebeurt.
Het is mijn eerste keer dat ik aan een library begin.

De basis dingetjes weet ik een klein beetje, maar jij gaat wel heel snel!
Helemaal met de opmerking die jij er onder hebt gezet, daar snap ik niet goed wat je precies bedoeld.


Go Up