查看: 1055|回复: 0

blinker 库开发注意事项

[复制链接]

该用户从未签到

发表于 2018-12-1 19:01 | 显示全部楼层 |阅读模式
本帖最后由 三水 于 2018-12-27 11:43 编辑

Arduino支持

回调函数

使用回调函数是为了更方便梳理程序逻辑,但回调函数中若有阻塞类型的代码(如: while delay 或 Serial读写等)将可能影响设备的正常通信及工作。
==用户在开发过程中务必避免在回调中执行阻塞类型的代码, 请使用标志位等方法在回调外对标志位进行查询检测执行控制。==

ESP8266&ESP32

EEPROM

以下EEPROM地址在 blinker 库中已占用, 用户开发时务必避开以下地址。  

地址 用途
0-1279 自动化控制数据
1280-1535 专属设备数据
1536-2431 定时器配置数据
2432-2435 ESP AT模块串口配置数据
2436-2447 OTA配置数据

Ticker

ESP-Arduino SDK 中官方提供了硬件定时器的库Ticker。
用户开发时若需要使用到Ticker, 务必避免在Ticker中断回调中执行IO阻塞性代码。
请使用标志位等方法在回调外对标志位进行查询检测执行控制, 以避免看门狗复位。  

官方文档提醒 : It is currently not recommended to do blocking IO operations (network, serial, file) from Ticker callback functions. Instead, set a flag inside the ticker callback and check for that flag inside the loop function.  

WiFiClientSecure

blinker 库中使用了:

  • ESP8266BearSSL::WiFiClientSecureWiFiClient  
  • ESP32WiFiClientSecureWiFiClient   

注: ESP8266 package 已使用 BearSSL::WiFiClientSecure。
原有的 axTSL 的 WiFiClientSecure 将废弃且不能和 BearSSL 同时使用, 可能导致连接失败及堆栈溢出。  

对应的对象名为

BearSSL::WiFiClientSecure   client_mqtt;// ESP8266
WiFiClientSecure            client_s;// ESP32
WiFiClient                  client;// ESP32 & ESP8266  

用户使用中若要使用到以上 库/类 时, 建议 extern 对应对象并 stop
如需要使用到 ESP8266 的 WiFiClientSecure:

void secureConnect()
{
    extern BearSSL::WiFiClientSecure client_mqtt;
    BearSSL::WiFiClientSecure client;

    client_mqtt.stop();
    client.connect(host, httpsPort);
}

如需要使用到 ESP8266 的 HTTPS:

void secureConnect()
{
    extern BearSSL::WiFiClientSecure client_mqtt;
    client_mqtt.stop();

    std::unique_ptr<BearSSL::WiFiClientSecure>client_s(new BearSSL::WiFiClientSecure);

    // client_s->setFingerprint(fingerprint);
    client_s->setInsecure();

    HTTPClient https;

    https.begin(*client_s, url);

    https.addHeader(conType, application);
    uint8_t httpCode = https.POST(msg);
    String payload = https.getString();

    https.end();
}
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

热门推荐

一文教你选择Arduino开发板,小白进
一文教你选择Arduino开发
笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
继电器控制电磁锁
继电器控制电磁锁
本人小白 想用继电器控制电磁锁,继电器能亮 ,电磁锁接电源也能工作,就是继电器对电
新人求助 啃萝卜代码上传失败
新人求助 啃萝卜代码上传
写了一个L298N的代码 但是上传失败 在IDE里的错误信息是 Arduino:1.8.8 (Windows 10
求助DS1307的set函数
求助DS1307的set函数
使用RTC. set函数为什么不行呢?大概是这个格式RTC.set(RTC_MONTH, 6)大小写都不行
Arduino UNO能否和NB-IOT(移远BC95/BC35)通信?
Arduino UNO能否和NB-IOT
能否用Arduino UNO和移远的NB-IOT (BC95/BC35)实现通信?哪位大神有没有具体的通信方
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表