所有,
我正在与Adafruit Feather Huzzuh一起进行一个项目。
我正在按照以下教程进行操作。
https://docs.microsoft.com/nl-nl/azure/iot-hub/iot-hub-arduino-huzzah-esp8266-get-started
顺便说一句,仍然使用Arduino IDE。
评估板和DHT传感器以前已经工作过。
我相信所有软件包都已安装。
我使用以下来源的开源代码:
https://github.com/Azure-Samples/iot-hub-feather-huzzah-client-app.git
尝试编译主app.ino文件(https://github.com/Azure-Samples/iot-hub-feather-huzzah-client-app/blob/master/app/app.ino)时出现编译器错误。
错误是:
Arduino:1.8.5(Windows 10),开发板:“ Adafruit Feather HUZZAH ESP8266,
80 MHz,闪存,4M(3M SPIFFS),v2较低内存,禁用,无,仅
素描,115200英寸
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
project \ DHT_online_azure \ app \ message.ino:在函数'bool中
readMessage(int,char *)':
消息:46:错误:未在此范围内声明“ StaticJsonBuffer”
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
project \ DHT_online_azure \ app \ message.ino:46:5:注意:建议
替代方案:
在C:\ Users \ edwin \ Dropbox \ Projects \ Arduino中包含的文件中
项目\库\ arduino_163901 \ src / ArduinoJson / StaticJsonDocument.hpp:8:0,
from C:\Users\edwin\Dropbox\Projects\Arduino project\libraries\arduino_163901\src/ArduinoJson.hpp:10,
from C:\Users\edwin\Dropbox\Projects\Arduino project\libraries\arduino_163901\src/ArduinoJson.h:9,
from C:\Users\edwin\Dropbox\Projects\Arduino project\DHT_online_azure\app\message.ino:2:
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
项目\库\ arduino_163901 \ src / ArduinoJson / Memory / StaticJsonBuffer.hpp:110:7:
注意:'ArduinoJson :: Internals :: StaticJsonBuffer'
class StaticJsonBuffer:public Internals :: StaticJsonBufferBase {
^
消息:46:错误:在此范围内未声明“ jsonBuffer”
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
消息:74:错误:'类ArduinoJson :: JsonObject'没有名为的成员
'printTo'
root.printTo(payload, MESSAGE_MAX_LEN);
^
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
project \ DHT_online_azure \ app \ message.ino:在函数'void
parseTwinMessage(char *)':
消息:80:错误:未在此范围内声明“ StaticJsonBuffer”
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
项目\ DHT_online_azure \ app \ message.ino:80:5:注意:建议
替代方案:
在C:\ Users \ edwin \ Dropbox \ Projects \ Arduino中包含的文件中
项目\库\ arduino_163901 \ src / ArduinoJson / StaticJsonDocument.hpp:8:0,
from C:\Users\edwin\Dropbox\Projects\Arduino project\libraries\arduino_163901\src/ArduinoJson.hpp:10,
from C:\Users\edwin\Dropbox\Projects\Arduino project\libraries\arduino_163901\src/ArduinoJson.h:9,
from C:\Users\edwin\Dropbox\Projects\Arduino project\DHT_online_azure\app\message.ino:2:
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
项目\库\ arduino_163901 \ src / ArduinoJson / Memory / StaticJsonBuffer.hpp:110:7:
注意:'ArduinoJson :: Internals :: StaticJsonBuffer'
class StaticJsonBuffer:public Internals :: StaticJsonBufferBase {
^
消息:80:错误:在此范围内未声明“ jsonBuffer”
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
消息:82:错误:'类ArduinoJson :: JsonObject'没有名为的成员
'成功'
if (!root.success())
^
消息:88:错误:'ArduinoJson ::内部::启用_如果> ::类型'有
没有名为“成功”的成员
if (root["desired"]["interval"].success())
^
在此范围内未声明退出状态1'StaticJsonBuffer'
该报告将包含“显示详细输出”的更多信息。
文件->首选项中启用了“编译期间”选项。
ArduinoJson.h文件包含在message.ino文件中。
MSFT提供的开源代码是否损坏?
有人有办法解决这个问题吗?
编辑2018-08-23
来自Rita Han的答案-MSFT起作用了(将json库还原到5.x版),现在我可以看到它连接到我的接入点的设备。我遇到了以下问题:
与NETGEAR33连接,通道10 dhcp客户端启动...
ip:192.168.1.29,mask:255.255.255.0,gw:192.168.1.1已连接到wifi
网件33。提取的NTP纪元时间为:28821。找不到deviceId
在IoTHubClient_CreateFromConnectionString上失败。
我从iothubowner菜单的“设置:共享访问策略”下复制了“连接字符串-主键”。
不知何故,它不接受我的共享访问密钥。我将用谷歌搜索一下来解决这个问题。感谢帮助。
编辑2018-08-03
也解决了!我在串行监视器中看到测量结果。需要找到一种将其从DH22更改为DH11的方法...但是应该能够自己弄清楚。也已经在我的Adafruit IO尝试中看到并解决了该问题。
最佳答案
发生此错误的原因是,您安装的ArduinoJson版本> =6。将安装默认版本6.2.3-beta,但从版本6开始,更高版本的JsonBuffer替换为JsonDocument。错误消息中也指出:
C:\ Users \ edwin \ Dropbox \ Projects \ Arduino
项目\ DHT_online_azure \ app \ message.ino:80:5:注意:建议
替代方案:
在C:\ Users \ edwin \ Dropbox \ Projects \ Arduino中包含的文件中
project \ libraries \ arduino_163901 \ src / ArduinoJson / StaticJsonDocument.hpp:8:0,
要解决此问题,您可以回滚到以前的版本。版本5.13.2适用于我。
关于c++ - 使用Feather Huzzah(ESP8266)开发板和MSFT IOT Azure教程在此范围内未声明“StaticJsonBuffer”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51906646/