微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 connect() 调用中看不到我的服务器名称的 arduino 变量

如何解决在 connect() 调用中看不到我的服务器名称的 arduino 变量

我在 esp8266 上运行了这个,但我怀疑这是一个 c/c++ 问题,很可能是因为我不了解一些基本的东西。

我正在尝试连接到由从 json 配置文件读取的值设置的 mqtt 服务器。 connect() 调用的调试没有看到我分配给变量的值。连接调用失败,因为要连接的服务器名称为空,但仅在 connect() 调用内部。

进行此类通话的正确方法是什么?

代码片段:

Adafruit_MQTT_Client *mqtt;
const char* _MqttServer = NULL;


setup {
// ...
// read file,parse json,gets the correct value
_MqttServer = jObject["mqttserver"];

// port/username/key are setup as #define earlier
mqtt = new Adafruit_MQTT_Client(&client,_MqttServer,MQTT_SERVERPORT,MQTT_USERNAME,MQTT_KEY);

while ((ret = mqtt->connect()) != 0) { // connect will return 0 for connected
  Serial.println(mqtt->connectErrorString(ret));
  Serial.println(_MqttServer); // prints correct value
  mqtt->disconnect();
  delay(5000);  // wait 5 seconds
}
// ...
}

打印的错误来自

bool Adafruit_MQTT_Client::connectServer() {
  // Grab server name from flash and copy to buffer for name resolution.
  memset(buffer,sizeof(buffer));
  strcpy((char *)buffer,servername);
  Serial.print(F("Connecting to: ")); Serial.print((char *)buffer);

我得到的错误

Connection Failed!
Connecting to:
Connect result: 0
retrying MQTT connection in 5 seconds...

如果我将 _MqttServer 更改为 #define 并将其从对 json 的分配中删除,则它会正常连接。与此同时,我已经这样做了,以使设备正常工作。我看到的问题是被调用函数看不到的变量的传递或赋值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。