Я на самом деле изучаю ESP32, его функции и API.
Моя цель с этой программой в основном: проверить некоторые знания и методы, которые я уже разработал, и попробовать, впервые, IoT application.
Итак, у меня есть класс 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]
В примерах для inte rnet люди обычно кодируют MQTT-соединение, используя библиотеки Wifi.h и PubSubClient.h, передавая указатели в качестве аргументов методам классов:
#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).
Я бы нравится использовать свойства struct моего класса для создания экземпляров других классов. Как я мог это сделать?