如何解决在 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 举报,一经查实,本站将立刻删除。