我正在尝试将 Jason Coon 的“FastLED + ESP8266 Web 服务器”:https ://github.com/jasoncoon/esp8266-fastled-webserver移植到 ESPAsyncWebServer,并提供一些额外的好处......
我的项目位于这里https://github.com/kelexel/esp8266-fastled-async-webserver-2.0/
我在这个项目上的主要工作是将所有内容包装成漂亮的类,并尝试提供某种模块化。
编辑:正如许多人在下面的评论中指出的那样,我试图完成的事情显然是错误的。我正在寻找的只是关于应该做什么的想法、代码示例、文档、参考资料,这样我就可以学习和改进......
我对 C++ 完全陌生,所以请放纵..
我想要完成的是获得我新手只能解释为对象的集合,每个对象都有一个 String name和 method pattern。所述模式应该是 ESPLedDriver.cpp 类的方法
问题在于,在 ESPLedDriver.h 和 ESPLedDriver.cpp 中,我尝试创建一个引用 ESPLedDriver:: 的 Struct
我做了一段代码来说明这个问题:
ESPLedDriver.cpp
void ESPLedDriver::colorwaves()
{
// ...
}
void ESPLedDriver::palettetest()
{
// ...
}
void ESPLedDriver::setPatterns()
{
// const uint8_t patternCount;
_patterns = {
// ERROR: src/ESPLedDriver.cpp:225:3: error: cannot convert 'ESPLedDriver::colorwaves' from type 'void (ESPLedDriver::)()' to type 'ESPLedDriver::Pattern {aka void (*)()}'
{ colorwaves, "Color Waves" },
// ERROR: src/ESPLedDriver.cpp:225:3: error: cannot convert 'ESPLedDriver::palettetest' from type 'void (ESPLedDriver::)()' to type 'ESPLedDriver::Pattern {aka void (*)()}'
{ this->palettetest, "Palette Test" },
};
}
ESPLedDriver.h
#include "FastLED.h"
class ESPLedDriver
{
public:
ESPLedDriver();
// ...
private:
void setPatterns();
typedef void (*Pattern)();
typedef Pattern PatternList[];
typedef struct {
Pattern pattern;
String name;
} PatternAndName;
typedef PatternAndName PatternAndNameList[];
/* Patterns */
void colorwaves();
void palettetest();
PatternAndNameList _patterns;
uint8_t _patternCount;
}
(或者,如果您愿意,作为要点: https ://gist.github.com/kelexel/ab5687cf83e376c709e49fbfbcfc100b )