【问题标题】:StaticJsonBuffer' was not declared in this scope, using Feather Huzzah (ESP8266) board using MSFT IOT Azure tutorialStaticJsonBuffer' 未在此范围内声明,使用 Feather Huzzah (ESP8266) 板使用 MSFT IOT Azure 教程
【发布时间】:2019-01-25 03:51:42
【问题描述】:

全部,

我正在使用我的 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 Lower Memory, Disabled, None, Only 素描,115200"

C:\Users\edwin\Dropbox\Projects\Arduino project\DHT_online_azure\app\message.ino:在函数“布尔”中 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 {

   ^

message:46: error: 'jsonBuffer' 未在此范围内声明

 StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;

                                   ^

message:74: error: 'class ArduinoJson::JsonObject' 没有名为的成员 '打印到'

 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 project\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 {

   ^

message:80: error: 'jsonBuffer' 未在此范围内声明

 StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;

                                   ^

message:82: error: 'class ArduinoJson::JsonObject' 没有名为的成员 '成功'

 if (!root.success())

           ^

message:88: error: 'ArduinoJson::Internals::enable_if >::type' 有 没有名为“成功”的成员

 if (root["desired"]["interval"].success())

                                 ^

退出状态 1 'StaticJsonBuffer' 未在此范围内声明

此报告将包含“显示详细输出”的更多信息 在文件 -> 首选项中启用“编译期间”选项。

ArduinoJson.h 文件包含在 message.ino 文件中。

微软提供的开源代码是否损坏?

有人想解决这个问题吗?

编辑 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 尝试中也看到并解决了这个问题。

【问题讨论】:

  • 嗨 borreltijd,我以前见过similar issue。您可以查看我的回答,看看是否有帮助。
  • 效果很好!
  • 嗨 borreltijd,很高兴听到这个消息。如果答案帮助您解决了问题,您可以accept it as the answer。谢谢。

标签: c++ esp8266 azure-iot-hub arduino-esp8266 adafruit


【解决方案1】:

出现此错误的原因是您安装了 ArduinoJson 版本 >= 6。将安装默认版本 6.2.3-beta 但从版本 6 及更高版本的 JsonBuffer 被替换为 JsonDocument。错误信息中也指出:

C:\Users\edwin\Dropbox\Projects\Arduino project\DHT_online_azure\app\message.ino:80:5: 注意:建议 替代

在 C:\Users\edwin\Dropbox\Projects\Arduino 包含的文件中 项目\库\arduino_163901\src/ArduinoJson/StaticJsonDocument.hpp:8:0,

要解决此问题,您可以回滚到以前的版本。 5.13.2 版适用于我。

【讨论】:

  • 谢谢,我将在本周晚些时候试一试。我搬到了工作的 Adafruit IO。仍然会尝试使用 Azure IOT 集线器的工作原理和外观。
  • @borreltijd 如果有帮助,请告诉我。
  • 回滚到版本 5.x 工作,我没有编译器错误了。我将草图上传到我的 Feather Huzzah,并按照教程使用串行监视器进行进一步配置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多