所有,

我正在与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/

10-11 19:42