我的 esp32 M5 StickC plus 的 Wifi 不工作
Wifi from my esp32 M5 StickC plus does not work
我正在尝试使用我的 M5StickCPlus 连接到我的 wifi。我使用 platformIO 框架。我收到此错误:错误:编译时从 'const char*' 到 'char*' 的无效转换。
代码如下:
#include "M5StickCPlus.h"
#include <WiFi.h>
const char* WIFI_SSID = "router";
const char* WIFI_PASS = "pass";
void setup() {
M5.begin(true, true, true);
Serial.printf("Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("CONNECTED");
}
我还尝试使用#define 声明SSID 和密码。但是,我收到另一个错误:addApbChangeCallback(): duplicate func=400EAB44 arg=3FFBF008 during execution.
我错过了什么?
带两个参数(SSID 和密码)的 WiFi.begin()
函数重载要求第一个参数是 非常量 char*
指针(即指向 可能 可修改 char
数组的指针,即使该函数实际上并未更改它)。
解决此问题的一个简单方法(类似于 example given in the documentation)是将您的 WIFI_SSID
变量重新声明为这样的数组并使用 copy 对其进行初始化字符串文字。 (您也可以对 WIFI_PASS
参数执行相同的操作,但这不是 必需的 ,因为 begin()
的第二个参数是 const char*
。 ):
char WIFI_SSID[] = "router"; // Change to a non-const char array
const char* WIFI_PASS = "pass"; // You can leave this one as-is
注意: begin()
重载的声明,如 this GitHub repo,是:
int begin(char* ssid, const char *passphrase);
C++ 不允许从 const
指针到非常量指针的隐式转换;您 可以 在您当前的定义中使用 const_cast<char*>(WIFI_SSID)
但是,恕我直言,这是一种不太理想的方法——该参数将出于某种原因被定义为非常量,即使这个原因并不明显!
我正在尝试使用我的 M5StickCPlus 连接到我的 wifi。我使用 platformIO 框架。我收到此错误:错误:编译时从 'const char*' 到 'char*' 的无效转换。
代码如下:
#include "M5StickCPlus.h"
#include <WiFi.h>
const char* WIFI_SSID = "router";
const char* WIFI_PASS = "pass";
void setup() {
M5.begin(true, true, true);
Serial.printf("Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("CONNECTED");
}
我还尝试使用#define 声明SSID 和密码。但是,我收到另一个错误:addApbChangeCallback(): duplicate func=400EAB44 arg=3FFBF008 during execution.
我错过了什么?
带两个参数(SSID 和密码)的 WiFi.begin()
函数重载要求第一个参数是 非常量 char*
指针(即指向 可能 可修改 char
数组的指针,即使该函数实际上并未更改它)。
解决此问题的一个简单方法(类似于 example given in the documentation)是将您的 WIFI_SSID
变量重新声明为这样的数组并使用 copy 对其进行初始化字符串文字。 (您也可以对 WIFI_PASS
参数执行相同的操作,但这不是 必需的 ,因为 begin()
的第二个参数是 const char*
。 ):
char WIFI_SSID[] = "router"; // Change to a non-const char array
const char* WIFI_PASS = "pass"; // You can leave this one as-is
注意: begin()
重载的声明,如 this GitHub repo,是:
int begin(char* ssid, const char *passphrase);
C++ 不允许从 const
指针到非常量指针的隐式转换;您 可以 在您当前的定义中使用 const_cast<char*>(WIFI_SSID)
但是,恕我直言,这是一种不太理想的方法——该参数将出于某种原因被定义为非常量,即使这个原因并不明显!