Я пытаюсь конвертировать это 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
файл реализует .h
API, но также обрабатывает функции обратного вызова WIFI. Что касается тестирования, я предполагаю, что функции обратного вызова будут вызываться автоматически, если я запускаю программу следующим образом:
#include <Arduino.h>
#include "WifiManager.h"WifiManager *wifi;
void setup()
{
Serial.begin(115200);
wifi = new WifiManager();
}
void loop()
{
delay(1000);
}
Это, однако, не работает. Кажется, что все обратные вызовы WIFI не работают вообще. Тем не менее, я не знаю, как это исправить, так как я начинающий C ++. Таким образом, я хотел бы знать, как лучше всего это исправить.
Я думаю, вам нужно позвонить WiFi.begin
, Вы назвали это в onWhenWifiOnDisconnects()
, но даже если происходит событие отключения, вы зарегистрировали обработчик события в конструкторе только после вызова WiFi.disconnect(true)
,
Итак, чтобы выяснить, что ваш код делает прямо сейчас:
В конструкторе вы звоните WiFi.disconnect(true)
Событие Disconnect наступает, но никто не обрабатывает его
Вы регистрируете свой обработчик событий, а затем ничего не происходит
Вам следует позвонить WiFi.begin
в конструкторе или в отдельной функции-члене, которую вы явно вызываете, а не (только) в onWhenWifiOnDisconnects()
,
Других решений пока нет …