2017-06-18 65 views
0

時ESP8266崩潰我正在使用使用pubsubclient庫控制的NodeMCU(ESP12E)。
當PubSubClient設置mqttserver

Exception (28): 
    epc1=0x4000bf80 epc2=0x00000000 epc3=0x00000000 excvaddr=0x0000096c depc=0x00000000 

看來setServer行動ESP8266WebServer衝突的:當我打電話
client.setServer(mqtt_server, 1883);
消息 NodeMCU時墜毀。
我試過了:this但問題沒有解決。
這是我的代碼:

#include <ESP8266WiFi.h> 
#include <PubSubClient.h> 
#include <EEPROM.h> 
#include <ESP8266WebServer.h> 

// Khởi tạo biến toàn cục 
const char* mqtt_server = "iot.eclipse.org"; 

WiFiClient espClient; 
PubSubClient client; 
ESP8266WebServer *server; 
void setup() { 
    EEPROM.begin(512); 
    Serial.begin(9600); 
    //I tried this 
    server = new (ESP8266WebServer); 
    //Check wifi, if failed -> run as web server 
    if (!setup_wifi()) { 
    wifiStartServerMode(); 
    } 

    //.....Some function to get username and password from EEPROM 

    // Call back-end using new local WiFiClient 
    // String serverResponse = registerDevice(mac, username, userpassword, 3); 
    //If ok, serser response this: 
    String serverResponse = "null;null;root/phan/abc"; 
    if (serverResponse.indexOf(';') > 0) { 
    Serial.println("start mqtt client"); 
    client.setClient(espClient); 

    //////////////// 
    //CRASHED HERE// 
    /////////////// 
    client.setServer(mqtt_server, 1883); 
    client.setCallback(callback); 
    String tempTopic = getValue(serverResponse, ';', 2); 
    for (int i = 0; i < tempTopic.length(); i++) { 
     topic += tempTopic[i]; 
    } 
    //Đăng ký nhận tín hiệu 
    client.subscribe(topic); 
    errConnect2BackEnd = false; 
    stConnectBroker = true; 
    } else if (serverResponse.equals("failed")) {//Không thể kết nối server 
    Serial.println("Can't connect to server"); 
    //TODO: Báo lỗi, không kết nối server 
    } else { 
    Serial.print("Error: "); 
    Serial.println(serverResponse); 
    //TODO: Nhập sai thông tin đăng nhập -> reset để nhập lại (nhấn nút, xóa EEPROM) 
    } 
    Serial.println("End of setup"); 

} 

功能開始運行的服務器中循環,當它完成

//-> run as web server 

    void wifiStartServerMode() { 
    //Active AP_ST_MODE 
    setupAP_STA_Mode(); 
    //Run server->handleClient(); in loop 
    viewRunConfig(); 
    server->stop(); 
    server->close(); 
    delay(100); 
    delete(server); 
    setup_Station_Mode(); 
} 

當功能「wifiStartServerMode」不能運行,但它仍然崩潰停止。

可能是什麼問題?

回答

0

如果你的算法是正確的。請檢查指針.....並移動其他文件。
看來是Arduino IDE的bug,當我將這個函數代碼複製到其他文件時。
它的工作原理。