Преобразование эскиза Arduino в класс C ++

Я пытаюсь конвертировать это Arduino набросок в класс C ++. Заголовочный файл, "WifiManager.h" определяется как

class WifiManager
{
public:
// TODO: Use a singleton pattern https://stackoverflow.com/a/1008289
WifiManager();
void run();
bool isConnected();
char *getIpAddress();
virtual ~WifiManager();

private:

};

и реализуется в WifiManager.cpp, чья полная реализация кода доступно здесь. В двух словах .cppфайл реализует .hAPI, но также обрабатывает функции обратного вызова WIFI. Что касается тестирования, я предполагаю, что функции обратного вызова будут вызываться автоматически, если я запускаю программу следующим образом:

#include <Arduino.h>
#include "WifiManager.h"WifiManager *wifi;
void setup()
{
Serial.begin(115200);
wifi = new WifiManager();
}

void loop()
{
delay(1000);
}

Это, однако, не работает. Кажется, что все обратные вызовы WIFI не работают вообще. Тем не менее, я не знаю, как это исправить, так как я начинающий C ++. Таким образом, я хотел бы знать, как лучше всего это исправить.

-1

Решение

Я думаю, вам нужно позвонить WiFi.begin, Вы назвали это в onWhenWifiOnDisconnects(), но даже если происходит событие отключения, вы зарегистрировали обработчик события в конструкторе только после вызова WiFi.disconnect(true),

Итак, чтобы выяснить, что ваш код делает прямо сейчас:

  1. В конструкторе вы звоните WiFi.disconnect(true)

  2. Событие Disconnect наступает, но никто не обрабатывает его

  3. Вы регистрируете свой обработчик событий, а затем ничего не происходит

Вам следует позвонить WiFi.begin в конструкторе или в отдельной функции-члене, которую вы явно вызываете, а не (только) в onWhenWifiOnDisconnects(),

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]