将 Arduino 草图重构为 C++ 类
Refactoring an Arduino sketch into a C++ class
我正在尝试将这个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)
-
触发断开连接事件,但没有人处理它
-
您注册了事件处理程序,然后没有任何反应
您应该在构造函数或显式调用的单独成员函数中调用WiFi.begin
,而不是(仅(在onWhenWifiOnDisconnects()
中调用。
相关文章:
- 如何重构类层次结构以避免菱形问题
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- C++-将具有引用的长参数列表重构为结构
- 重构使用动态强制转换的 std::set 的比较运算符
- C++中的命名空间重构
- 将具有相反操作数的两个函数重构为一个
- 重构模板类,该类将其嵌套类用作另一个类的模板参数
- 我当前实现的双向链表类是否需要重构迭代器 end() 功能?
- C++重构,扩展方法typedef
- 重构类:无法将派生类中成员函数的公共代码移回基类
- 重构MFC消息映射以包括完全限定的成员函数指针
- 重构建议?
- 包装器函数可以重构吗?
- 重构此代码以进行优化
- 将 Arduino 草图重构为 C++ 类
- 重构为模板类
- 重构 C++ 中的特定嵌套循环
- 重构嵌套绑定以使用 lambda 函数
- Xcode 9 重构 对C++的支持
- 重构开关或 if/else 语句?