Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]

Я пытаюсь загрузить код из здесь для работы с ESP8266. Итак, я скопировал/вставил код в Arduino IDE и получил эту ошибку:

C:\Program Files (x86)\Arduino\libraries\WiFi\src/WiFi.h:79:9: ошибка: инициализация аргумента 1 'int WiFiClass::begin(char*, const char*)' [ -fразрешающий]

int begin(char* ssid, const char *passphrase); ^

статус выхода 1 недопустимое преобразование из 'const char*' в 'char*' [-fpermissive]

Кто-нибудь может помочь мне с этим?

, 👍4


2 ответа


Лучший ответ:

4

Этот метод begin() ожидает изменяемый массив символов в качестве первого аргумента. Вот что вы должны предоставить:

char ssid[]           = "YOUR_SSID";      // это изменено
const char* password  = "YOUR_PASSWORD";  // это отлично
[...]
WiFi.begin(ssid, password);
,

Когда я пытаюсь загрузить его, я получаю: предупреждение: ошибка espcomm_sync ошибка: ошибка espcomm_open. Вы знаете, если это из кода?, @Physther

@Physther: я не знаю. Это специфично для ESP, и у меня нет опыта работы с этими устройствами. Но посмотрите [эту проблему GitHub](https://github.com/esp8266/Arduino/issues/2801), @Edgar Bonet

Об ошибке espcomm_sync failed см. https://github.com/esp8266/Arduino/blob/master/doc/faq/a01-espcomm_sync-failed.rst., @per1234

Скорее всего, библиотека WiFi просто неразумна в своем заявлении. Нет реальной необходимости в том, чтобы аргумент ssid был изменяемым — ssid и фраза-пароль фактически обрабатываются внутри одинаково., @Chris Stratton


2

Место, где вы вызываете функцию begin, имеет в качестве первого параметра параметр типа const char* вместо char*... удалите константу из этого типа аргумента.

Возможно, у вас есть что-то вроде

const char* s = ....

...

...begin(s, ...)

Изменить классы на

char* s = ...
,

Тот же вопрос, что и к Эдгару. Может ли это: предупреждение: ошибка espcomm_sync ошибка: ошибка espcomm_open вызвана кодом?, @Physther

Это может быть... У меня тоже нет опыта работы с ними, как у Эдгара Боне. Проследите, где вы вызываете функцию, которая не работает, и проверьте значения параметров (и сравните их с примерами)., @Michel Keijzers