问题描述
我在 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 (将#修改为@)