c++ - 将 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:
};
并在 a 中实现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()
.
推荐阅读
- python - 本地搜索 Jupyter 笔记本
- javascript - javascript (window).unload 不适用于某些 chrome 版本
- java - 如何在使用 Selenium Java 时传递条件变量?
- reactjs - 有没有办法为所有属性设置为 true 的元素添加一个类?
- python - 我在python中使用了随机库,对我来说这是第一次,你能帮帮我吗?
- matplotlib - ModuleNotFoundError:使用 plotly 时没有名为“plotly.validators.bar._xaxis”的模块
- node.js - 使用单个池将创建多少个会话?
- reactjs - 我只希望管理员路由和用户限制
- android - 没有水平滚动的日历视图
- javascript - 在表单成功提交后执行一个函数