2017-05-22 3 views
0

以下のコードを実行すると、1行だけが動作します。 SSIDの書き込み/読み取り部分をコメントアウトすると、パスワードが機能します。 SSIDが動作するパスワード部分をコメントアウトします。しかし、私は両方のWiFiに接続しない場合は残してください。私はSSIDとパスワードの両方をWiFiの健全性チェックとしてWiFi.begin()でコード化し、十分に接続していることを確認しました。ですから、私はSPIFFSを使って複数の行を書いたり読んだりする方法と何か関係があります。私はしかし、私はSerial.println()それらの場合は、少なくとも両方の行が正しく戻って、それはようだ。私はSPIFFSの代替案も提案しています。文字列を返す関数を使用することにあまり感動していないので、私はむしろchar *を返す関数を持っていますが、私の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

try 'char * ssid;文字列ss = f.readStringUntil( '\ n'); ss.toCharArray(ssid、ss.length()+ 1); ' – dandavis

答えて

0

@dandavis - ありがとう!私はそれを変更するだけで終わった:const char * ssid = f.readStringUntil( '\ n')。c_str();

関連する問題