2017-05-22 82 views
0

当我在下面运行代码时,只有一行可以工作。如果我注释掉SSID写入/读取部分,密码将起作用。它将SSID的密码部分注释掉。但是,如果我离开这两个WiFi连接。我将WiFi.begin()中的SSID和密码硬编码为完整性检查,并确信它已连接。所以它必须与我使用SPIFFS编写或阅读多行的方式有关。但是,我确实得到了两条线,所以至少,如果我Serial.println()他们。我也对任何建议的替代SPIFFS的,因为我不太兴奋与使用返回字符串的函数..我宁愿有一个函数返回一个字符*当然,但我的C是相当生锈。我还在写作和阅读水平尝试了各种终结符\ r然后\ 0,到目前为止没有任何工作,也试图修剪字符串。我遗漏了基础知识,但是我做了一个SPIFFS.begin()和格式(当然不是这样的顺序),似乎正在工作,因为我似乎使Serial.println()返回似乎正确。我使用win10 x64安装了最新的arduino IDE和SPIFFS。这里是代码:SPIFFS的第一行工作在WiFi.begin() - ESP8266-12E

if (SPIFFS.begin()) 
{ 
    Serial.println("SPIFFS.begin()..."); 

    File f = SPIFFS.open(file, "w");//write... 

    if (!f) 
    { 
     Serial.println("failed to open."); 
    } 
    else//yes, file exists... 
    { 
     //found file write to it.. 
     f.println("SomeSSID");//ssid... 
     f.println("MyPassword");//password... 

     f.close(); 

     //now lets read the file.. 
     f = SPIFFS.open(file, "r"); 

     if (!f) 
     { 
      Serial.println("file failed to open.."); 
     } 
     else 
     { 
      //read file...   
      String SSID = f.readStringUntil('\n');    
      String PASSWORD = f.readStringUntil('\n'); 

      f.close(); 

      //this didn't help 
      /*SSID.trim(); 
      PASSWORD.trim();*/ 

      ssid = (char*)SSID.c_str(); 
      pwd = (char*)PASSWORD.c_str(); 

      Serial.println(ssid); 
      Serial.println(pwd); 
     } 
    }  
} 

//does not work.. 
WiFi.begin(ssid, pwd); 
+0

尝试'char * ssid; String ss = f.readStringUntil('\ n'); ss.toCharArray(ssid,ss.length()+1);' – dandavis

回答

0

@dandavis - thanks!我最终只是改变它:const char * ssid = f.readStringUntil('\ n')。c_str();

相关问题