[英]ESP32 | How to assign a string to a char pointer?
我实际上是在学习 ESP32、它的功能和 API。
我对这个程序的目标基本上是:测试我已经开发的一些知识和技术,并首次尝试物联网应用程序。
所以,我有一个名为 myMQTT 的类,它有两个结构属性(NETWORK 和 MQTT):
class myMQTT{
public:
struct NETWORK
{
char *SSID, *PASSWORD, *IP;
} NETWORK;
struct MQTT
{
char *SEVER, *TOPIC, *USER, *PASSWORD;
int PORT;
} MQTT;
myMQTT(){}
void CONNECT(){
}
};
你怎么看,这些结构给了我我想指向字符串的指针,像这样:
void MQTTConnect(){
myMQTT CONNECTION;
CONNECTION.NETWORK.SSID = "SSID";
CONNECTION.NETWORK.PASSWORD = "1234";
CONNECTION.MQTT.SEVER = "MQTT_SEVER";
CONNECTION.MQTT.PORT = 1234;
CONNECTION.MQTT.USER = "ESP32 | USER";
CONNECTION.MQTT.PASSWORD = "ESP32 | PASS";
CONNECTION.MQTT.TOPIC = "TEST";
CONNECTION.CONNECT();
}
但是编译器给了我这个警告:
ISO C++ 禁止将字符串常量转换为 'char*' [-Wwrite-strings]
在互联网上的示例中,人们通常使用库 Wifi.h 和 PubSubClient.h 编写 MQTT 连接,将指针作为参数传递给类方法:
#include <WiFi.h>
#include <PubSubClient.h>
// Replace the next variables with your SSID/Password combination
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// Add your MQTT Broker IP address, example:
//const char* mqtt_server = "192.168.1.144";
const char* mqtt_server = "YOUR_MQTT_BROKER_IP_ADDRESS";
WiFiClient espClient;
PubSubClient client(espClient);
//CODE...
WiFi.begin(ssid, password);
client.setServer(mqtt_server, 1883);
//CODE...
参考: https : //randomnerdtutorials.com/esp32-mqtt-publish-subscribe-arduino-ide/
我已经尝试过使用字符数组和字符串(Arduino 声明)。
我想使用我的类的结构属性来实例化其他类。 我怎么能那样做?
你做的一切权利,但由于一个bug在Arduino的建设者IDE 1.8.11使用了错误的库。 它没有使用 ESP32 WiFi 库,而是使用旧的 Arduino WiFi 库。 在这个库中, WiFi.begin
的参数具有char*
类型。 从const char*
到char*
的转换仅作为警告报告,这不是问题。 但是在 esp 板包中这是一个错误。
解决方法是安装之前版本的 Arduino IDE 1.8.10 或 1.8.9。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.