Bevor ich nun das ganze Projekt aufgebe - hier mein Hilferuf an euch:
Kurze Beschreibung:
ESP32 mit SD-Card-Reader on board.
das Auslesen der Daten auf der SD-Karte funktioniert einwandfrei mit "c=file.read();"
danach wird dieser ausgelesene ( einzelne) Char per while-Schleife mit Serial.print auf dem seriellen Monitor korrekt ausgegeben, bis das Datei-Ende erkannt wird.
Das funktioniert also absolut problemlos.
Das eigentliche Problem ist nun:
Wie mache ich aus den einzelnen Chars einen Char* ?
Konkret: Ich lese von der SD-Karte einen etwa 20 Zeichen langen Namen ein und dieser soll dann als char*-Variable an das Hauptprogramm uebergeben werden.
Woran erkennst du das Ende des Namens?
Wie lang ist dieser maximal?
char* ist ein Zeiger auf einen Speicherbereich. Den Speicherbereich kann "das Hauptprogramm" mitliefern, oder -da es bei Arduino einfach ist und nur ein Name gleichzeitig geht- du definierst einen static Bereich, dessen Adresse die Leseroutine zurückliefern kann.
Endekennung nicht vergessen.
Vielen Dank fuer deine schnelle Antwort.
Ich habe bereits einige deiner Beitraege studiert, muss aber leider zugeben, dass diese meinen geistigen Horizont komplett uebersteigen
Ich bin ein einfacher Maschinenbau-Ingenieur und betreibe das Programmieren lediglich aus der zwingenden Not heraus.
Da ich mir sicher bin, dass du mir dabei helfen kannst, das Problem auf recht einfache Weise zu loesen:
Darf ich dich privat ansprechen und mich mit dir per Email oder Whatsapp weiter besprechen?
Woher weißt du wo der Name beginnt und wo er endet?
Und warum muss es unbedingt ein Zeiger werden?
Wie gedenkst du die Speicherreservierung zu gestalten?
Mich nicht!
Ich mache keine individual Kurse.
Bist du wirklich so egomanisch?
Dann wirst du meine Antworten auch nicht verstehen.
Darfst du natürlich, hab dir da auch schon geantwortet.
@combie musst du aushalten, und sein Standardkommentar, dass es kontraproduktiv ist, sich selbst zu bestätigen, dass man keine Ahnung hat, ist richtig.
Wenn du statt Antworten Fragen bekommst, geschieht das nicht um dich anzumachen oder dich zu vergraulen. (Wenn es diesen Effekt hat, wird das Ganze sowieso nichts)
Immerhin kennst du denweisst du dass es einen Unterschied zwischen einem char* und einem chargibt. Und es gibt auf jedem Level Informationen zu C/C++ und Texten, da musst du selber suchen, lesen, ausprobieren, im Zweifel fragen.
Dein Thread-Titel behauptet, du möchtest nicht einen Namen lesen, sondern eine Zeile.
Das denn nun?
Statt auf eine Antwort von dir zu warten, ein Tip: Eine Zeile hat (mindestens) ein Zeilenende-Zeichen, ein Name könnte eventuell schon beim Aufteten eines Leerzeichens enden, bei Dateien findet man auch andere Trennzeichen, z.B. ',' oder ';'
Wenn es deinen Horizont übersteigt, dich mit solchem Kram zu beschäftigen, solltest du dir ein anderes Hobby suchen. Wenn du dich mit solchem Gefummel nicht beschäftigen willst, besser auch.
Mit 'Malen nach Zahlen' kann man durchaus anfangen. Kunst wird es erst, wenn man darüber hinaus kommt.
Ich entschuldige mich fuer meine eventuell ( und wahrscheinlich ) falsch gewaehlten Worte.
Die waren - zumindest zum Anfang - nicht so gemeint.
Zurueck zum Thema:
Mittlerweile bin ich in der Lage, die einzelnen Zeilen der Text-Datei auf der SD-Karte erfolgreich einzulesen.
Diese Zeilen werden mit einem \n abgeschlossen und es wird danach eine neue Zeile erkannt.
Die einzelnen Zeilen speichere ich in einem Array.
Kurzum:
Alles funktioniert einwandfrei.
Aber da steckt noch irgendwo ein heimtueckischer Fehler drin.
Die einzelnen chars werden korrekt ausgelesen, korrekt zu einem Array zusammengefuegt.
Dieses Array ist der Zugang zu einem WiFi.
ssid und password werden mit array[0] und array[1] verknuepft.
Die serielle Ausgabe bestaetigt mir, dass die Daten korrekt vorliegen. Ohne vorige und ohne nachfolgende Zeichen.
Und dennoch:
Ich kann keine Verbindung mit dem WLAN aufbauen.
Gebe ich die Zugangsdaten als const char* ein, funktioniert die Verbindung auf Anhieb.
Meine Vermutung:
Der Inhalt der Array-Variablen hat noch irgendwelche Sonderzeichen oder Aehnliches integriert, was ich im seriellen Monitor nicht sehen kann.
Noch ein allerletzter Satz zu mir selbst.............weil das weiter oben angesprochen wurde:
Ich betreibe dies nicht als Hobby.
Ich bin Maschinenbauer und benoetige diese Hard- und Software fuer ein neues Produkt.
Beim auslesen aus der SD-Karte die Zeichen
a) mitzählen
b) parallel als hex auf dem SerMon ausgeben.
wenn du das \n liest, darf dieses nicht mehr in das array wandern, sondern dafür muss ein '\0' den char* abschliessen
Hinweis: Kurzcode schreiben um sowas auszutesten und dann hier zur Verfügung stellen, damit man etwas hat, auf was man aufbauen kann hilft ungemein.