Hallo zusammen
Das auslesen und beschreiben des eeproms ist eigentlich nicht das Problem,
vielmehr verstehe ich das umwandeln der Datentypen nicht.
Ich lese das eeprom so aus:
String eepromPlatz01 = String(EEPROM.read(1));
und so muss ich es umwandeln damit ich es verschicken kann:
mqtt.publish("blablabla", eepromPlatz01.c_str());
ist das wirklich so richtig oder mache ich da was falsch?
Gruss Sascha
Tommy56
September 18, 2022, 4:20pm
2
Du könntest es gleich richtig als char-Array speichern und lesen. Dann brauchst Du keine Umwandlung.
Gruß Tommy
Hallo
Ja da liegt wohl mein Problem, ich verstehe einfach den unterschied der verschiedenen Datentypen nicht.
Gibt es da irgendwo eine Doku für "doofies"
Plumps
September 18, 2022, 6:56pm
4
Vielleicht hilft dir das
https://de.m.wikibooks.org/wiki/C%2B%2B-Programmierung/_Einführung_in_C%2B%2B/_Variablen,_Konstanten_und_ihre_Datentypen
Und das
The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.
combie
September 18, 2022, 10:40pm
5
Sieht nicht falsch aus.
Vielleicht etwas umständlich.......
mqtt.publish("blablabla", String(EEPROM[1]));
Hallo zusammen
Wenn ich das zum auslesen nehme
mqtt.publish("blablabla", String(EEPROM[1]));
bekomme ich folgende Fehlermeldung.
no matching function for call to 'PubSubClient::publish(const char [8], String)'
Als was wird das eigentlich im EEPROM gespeichert? Beim schreiben wird kein Datentyp angeben.
EEPROM.write(address, value)
combie
September 19, 2022, 4:39pm
7
Wenn man sowas nicht weiß, dann evtl. mal in die Doku schauen.
Und ja, es gibt eine zu EEPROM.write()
Und nein, ich würde fast ausschließlich mit EEPROM.put und EEPROM.get arbeiten.
Auch keinesfalls die EEPROM Adressen händisch berechnen.
Ja, doof nicht war?
Meine MQTT Klasse kann mit String umgehen!
Dann war deine erste Variante vielleicht doch ganz gut.
Nachtrag:
Deine Fehlermeldung ist verstümmelt, so dass man nicht GENAU sehen kann, was den Compiler stört.
Vielleicht mal die ganze Meldung lesen, vielleicht dazu die ausführlichen Ausgaben aktivieren,
void mqttPublish(const char *pfad, String str)
{
mqtt.publish(pfad,str.c_str());
}
void setup()
{
Serial.begin(9600);
mqttPublish("blablabla", String{EEPROM[1]});
}
Es funktioniert ja, ich lasse es jetzt erst mal so wie es ist
Danke
system
Closed
March 26, 2023, 2:38pm
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.