Только первая линия SPIFFS работает на WiFi.begin() - ESP8266-12E

Когда я запускаю код ниже, будет работать только одна строка. Если я закомментирую часть записи / чтения SSID, пароль будет работать. Если я закомментирую часть пароля, SSID будет работать. Но, если я оставлю оба в WiFi, никогда не подключится. Я жестко запрограммировал SSID и пароль в WiFi.begin() для проверки работоспособности и, конечно же, он подключается. Так что это должно быть как-то связано с тем, как я пишу или читаю более одной строки, используя SPIFFS. Однако я верну обе строки правильно, так что, по крайней мере, я получу Serial.println(). Я также за любые предложенные альтернативы SPIFFS, так как я не слишком взволнован использованием функций, которые возвращают Strings... Я бы предпочел иметь функцию, которая возвращает char*, конечно, но мой C довольно ржавый. Я также пробовал различные терминаторы \r затем \0 на уровне записи и чтения, пока ничего не получалось, также пытался обрезать строку. Я пропустил основы, но я делаю SPIFFS.begin() и формат (не в таком порядке, конечно), который, кажется, работает, так как мне кажется, что Serial.println() возвращается обратно, похоже, правильно. У меня установлена ​​последняя версия arduino IDE и SPIFFS, использующая win10 x64. Вот код:

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);

1 ответ

@dandavis - спасибо! В итоге я просто изменил его на: const char* ssid = f.readStringUntil('\n'). C_str();

Другие вопросы по тегам