连接处理程序

时间:2018-08-10 15:46:08

标签: arduino arduino-esp8266

我想为连接ESP8266的时间设置一个处理程序,以便它返回IP地址(除其他外)。我正在从主类的设置函数中调用Network类方法,并且不确定如何为处理程序提供必要的参数。我尝试了以下操作,但是在 ISO C ++如何禁止使用不合格或带括号的非静态成员函数的地址形成指向成员函数的指针时遇到错误。

我希望收到任何反馈意见,

谢谢!

/* Network.h */
class Network{
    public:
        void connect(const char* ssid, const char* password);
        WiFiEventHandler deviceDidConnect;
        void onDeviceConnected(const WiFiEventStationModeGotIP& evt);
}

/* Network.cpp */
void Network::connect(const char* ssid, const char* password) {

    WiFi.persistent(false);

    if (WiFi.status() == WL_DISCONNECTED) {
        deviceDidConnect = WiFi.onStationModeGotIP(&onDeviceConnected);
        // Not sure how to handle it here...
    }

}

void onDeviceConnected(const WiFiEventStationModeGotIP& evt) {
  Serial.print("Station connected, IP: ");
  Serial.println(WiFi.localIP());
}

/* MyApp */
#include "Network.h"

void setup(){
    Serial.begin(115200);
    network.connect(SSID, PASSWORD);
}

18/11/08更新:

我的目标是创建一个Arduino库来处理我的连接。 我注意到,如果我将 connect 方法和 WifiEventHandler 保留在头文件中,但移动了 onDeviceConnected 方法签名(请避免onDeviceConnected(const WiFiEventStationModeGotIP& evt);)到 Network.cpp (在我加入 Network.h 之后),然后草图可以编译并正常工作。

1 个答案:

答案 0 :(得分:0)

有效。我被误导的想法是,自定义Arduino库中的所有方法都应在头文件中公开为Public或Private,而只公开需要共享的方法。有道理。