目前,我正在尝试将我的ESP8266链接到我的Azure IoT集线器。我已经成功地设置了我的集线器,下面是关于如何将这个东西连接到我的Azure IoT集线器:https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-sparkfun-esp8266-thing-dev-get-started的教程
不幸的是,我一直收到错误:
“StaticJsonBuffer”未在此范围内声明
Arduino: 1.8.5 (Windows10),主板:"SparkFun ESP8266 Thing,80 MHz,512 K(无触发器),v2低内存,禁用,无,只有素描,115200“
生成选项已更改,在函数'bool readMessage(int,char*)‘中重新构建所有readMessage:
消息:46:错误:“StaticJsonBuffer”未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:46:5:说明:建议的备选方案:
包含在C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0,的文件中
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.hpp:10,
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.h:9,
from C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:2:C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7:注:'ArduinoJson::Internals::StaticJsonBuffer‘
类StaticJsonBuffer :公共内部组件::StaticJsonBufferBase{
^消息:46:错误:“jsonBuffer”未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^消息:74: error:'class ArduinoJson::JsonObject‘没有名为'printTo’的成员
root.printTo(payload, MESSAGE_MAX_LEN);
^C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:函数'void parseTwinMessage(char*)':
消息:80:错误:“StaticJsonBuffer”未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:80:5:说明:建议的备选方案:
包含在C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0,的文件中
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.hpp:10,
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.h:9,
from C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:2:C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7:注:'ArduinoJson::Internals::StaticJsonBuffer‘
类StaticJsonBuffer :公共内部组件::StaticJsonBufferBase{
^消息:80:错误:“jsonBuffer”未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^消息:82: error:'class ArduinoJson::JsonObject‘没有名为“成功”的成员
if (!root.success())
^消息:88:错误:'ArduinoJson::Internals::enable_if >::type‘没有名为“成功”的成员
if (root["desired"]["interval"].success())
^退出状态1 'StaticJsonBuffer‘未在此范围内声明
此报告将在“文件->首选项”中启用“在编译期间显示详细输出”选项的详细信息。
我已经将DEVICE_ID从"SparkFun ESP8266 Thing“更改为"SparkFun ESP8266 Thing",并且正在使用模拟数据。
任何帮助,这将是非常感谢!
发布于 2018-07-30 03:19:05
造成此错误的原因是您安装了ArduinoJson版本的>= 6。默认版本6.2.3-beta将被安装,但是版本6和更高版本的将被JsonDocument所取代。在错误消息中也显示了这一点:
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:46:5:注:建议选择: 包含在C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0的文件中
要解决这个问题,可以回滚到以前的版本。5.13.2版本适用于我。
https://stackoverflow.com/questions/51555386
复制相似问题