美元
  • 欧元
  • 英磅
  • 美元
图理学ESP32

ESP32:使用libdasWiFi事件处理函数

DFROBOT 2019年9月25日 551

教程中我们将学习C++ LabdasWiFi事件处理功能我们将使用Arduino核心.在此显示测试使用ESP32板DFROBOT


导 言

教程中我们将学习C++ LabdasWiFi事件处理功能我们将使用Arduino核心

sp32前教程中WiFi事件配置函数你可以检查相关文章句尾栏列此题目教程

在所有教程中,我们常定义命名函数为WiFi事件处理函数接二连三传递Event上方法WiFi系统外部变量注册为处理事件函数

尽管如此,我们可以用替代方式具体说明这些处理函数,以产生更紧凑语法如前所述,我们可以使用C++abda语法定义匿名函数并直接传递Event上方法论

注意没有规则决定何时使用命名函数或ambda语法,因为这取决于应用假想

举例说,如果我们捕捉到很多不同事件,而所有事件处理功能都非常简单(一行或两行),最有可能使用ambda函数就会净化,因为我们可以保留函数定义接近事件处理并代码保持可读性

反之,如果我们有真正复杂处理函数,那么可能比较干净,将它们定义为命名函数,从约束处理事件中分离定义

但这些只是两种可能的假想,但本文章的目的是介绍替代语法自然,视用例而定,你应该考虑哪一种方法更合适

测试目的,我们将抓取 istation获取IP地址事件并打印ESP32对应处理函数分配IP地址

在此显示测试使用ESP32板DFROBOT


代码转换

本教程代码将非常相似于我们所覆盖的内容,除非我们将使用C++ Labda语法声明事件处理功能

和前一样,我们先把WiFi.h库里并随后宣布WiFi网络证书:SSID和密码

#包含
             
              constchar*sid='NetworkName'constchar*密码=“NetworkPass”;
              

其余代码将写入Arduino系统,因为我们将声明处理功能内联和往常一样,我们先开串行连接, 以便从程序输出一些结果

Serial.begin(115200);

并处理事件处理功能和前一样,我们将调用Event上方法上WiFi系统外部变量

唯一不同之处是,我们现在不转介函数名称到别处定义,而是直接传递abda函数,该函数已经包含体定义这将使代码更加紧凑

Lambda函数语法如下[1]:

{body}

函数不捕捉任何东西,所以我们从空方格开始可阅读更多抓取信息,理解使用案例

参数将和前教程所覆盖的相同 :

A级system_event_id_t枚举值wiEvent中可见)

A级system_event_info_t联盟化wiFiEventInfo_t中可见)

函数返回虚空可省略返回类型 编译者推断返回类型sbda使用以下格式

WiFiEvent事件WiFiEventInfo

机构实施中,我们将简单打印ESP32本地IP完全libda定义如下:

WiFiEvent事件WiFiEventInfo}

现在,我们已经检查 如何定义我们的 Lambda函数, 我们可以简单调用Event上方法上WiFi系统外部变量传递为首输入我们的ambda和二输入事件ID

Wi.onEvent/t事件WiFiEvent/tsystep_spa_GOT_IP

确定搭建函数时,只需启动WiFi网络连接

WiFi.Begin(sid,密码);

最终代码可见于下注意主循环空出

#包含
              
               constchar*sid='NetworkName'constchar*密码=NETworkPass无效搭建 {serio.begin(115200)Wi.onEvent/t事件WiFiEvent/tsystep_Sta_GOT_IPWiFi.Begin(sid密码)虚回路
               


测试代码

测试代码简单编译并上传到设备上,使用Arduinoi程序完成后 打开串行监视工具

取类似图1输出可见,我们已经获取IP地址 分配ESP32

输出程序显示ESP32分配IP地址

图1输出程序显示ESP32分配IP地址


相关职位

ESP32:启动WiFi事件

ESP32:获取WiFi事件信息

ESP32:站点有IP地址事件


引用

[1] https://en.cppreference.com/w/cpp/language/lambda

复习