首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的esp32 M5 StickC +的Wifi不起作用

我的esp32 M5 StickC +的Wifi不起作用
EN

Stack Overflow用户
提问于 2021-06-13 00:35:45
回答 1查看 468关注 0票数 1

我正在尝试用我的M5StickCPlus连接我的无线网络。我使用platformIO框架。我得到了这个错误:错误:编译时从'const char*‘到'char*’的无效转换。

以下是代码:

代码语言:javascript
复制
#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():在执行过程中复制func=400EAB44 arg=3FFBF008。

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-13 01:23:09

接受两个参数( SSID和密码)的WiFi.begin()函数重载要求第一个参数是一个非const char*指针(即指向潜在可修改的char数组的指针,即使该函数实际上没有对其进行更改)。

解决这个问题的一个简单方法(类似于文档中给出的示例)是将您的WIFI_SSID变量重新声明为这样一个数组,并使用字符串文本的副本初始化它。(您也可以对WIFI_PASS参数执行同样的操作,但这不是必需的,因为begin()的第二个参数是const char*):

代码语言:javascript
复制
char WIFI_SSID[] = "router";    // Change to a non-const char array
const char* WIFI_PASS = "pass"; // You can leave this one as-is

注意:声明begin()重载,如在这个GitHub回购中,是:

代码语言:javascript
复制
int begin(char* ssid, const char *passphrase);

const指针到非const指针的隐式转换在C++中是不允许的;您可以在当前定义中使用const_cast<char*>(WIFI_SSID),但是,IMHO,这是一种不太理想的方法--这个参数被定义为非const是有原因的,即使这个原因并不明显!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67953956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档