1 | #include "FS.h"
|
2 |
|
3 | void setup() {
|
4 | Serial.begin(9600);
|
5 | delay(1000);
|
6 |
|
7 | String Spalte2 = _WertAusLetzteZeile (2,';'); // (Spalte,Trennzeichen)
|
8 | Serial.print("Wert aus Spalte 2: ");
|
9 | Serial.println(Spalte2);
|
10 | }
|
11 | void loop() {
|
12 |
|
13 | delay(1000);
|
14 | }
|
15 |
|
16 | String _WertAusLetzteZeile (int Spalte, char Trennzeichen){
|
17 |
|
18 | SPIFFS.begin();
|
19 | File f = SPIFFS.open( "/FTP-Daten/test_30Tage.txt", "r"); // Datei zum lesen öffnen
|
20 | if (!f) {
|
21 | Serial.println("file open failed");
|
22 | }
|
23 | //String data = f.readString(); // Inhalt der gesamten Textdatei wird gelesen...
|
24 | //Serial.println("Inhalt der geöffneten Datei:");
|
25 | //Serial.println(data); // ... und wieder ausgegeben
|
26 | Serial.println();
|
27 |
|
28 | // **** Letzte Zeile aus der im SPIFFS abgelegten .txt Datei suchen ***********************************************************
|
29 |
|
30 | // es wird bis kurz vor das ende gesprungen damit das suchen der Letztn Zeile nicht so lange dauert
|
31 | if (f.size() > 200){ // wenn die Datei größer 200byte ist wird gesprungen
|
32 | // f.seek(100,SeekSet); // SeekSet -> Position wird auf "offset" Bytes vom Anfang gesetzt
|
33 | // f.seek(100,SeekCur); // SeekCur -> aktuelle Position wird um "offset" Bytes verschoben
|
34 | f.seek(100,SeekEnd); // SeekEnd -> Position wird auf "offset" Bytes vom Ende der Datei desetzt
|
35 | // Serial.println(f.position()); // Aktuelle Position bestimmen
|
36 | }
|
37 |
|
38 | String Zeile = "";
|
39 | while (f.available()){ // so lange noch daten kommen ist die Schleife aktiv
|
40 | Zeile = f.readStringUntil('\n'); // es wird bis zum Zeilenende (\n) alles ausgelesen
|
41 | } // nach der letzten zeile wird die Schleife beendet
|
42 |
|
43 | Serial.println("inhalt der letzten Zeile");
|
44 | Serial.println(Zeile); // die zuletzt gestreamte Zeile ist im String gespeichert
|
45 |
|
46 | // *** Hier wird eine bestimmte Spalte aus der letzten Zeile extrahiert
|
47 |
|
48 | int StartPunkt =0; // Startposition der Spalte
|
49 | int EndPunkt =0; // Endposition der Spalte
|
50 |
|
51 | for(int i=0; i<Spalte; i++){
|
52 |
|
53 | if (EndPunkt+1 == Zeile.length()) return "angegebene Spaltenanzahl zu hoch";
|
54 | if(!i==0) StartPunkt = EndPunkt + 1; // für die erste Spalte ist der Startpunkt 0
|
55 | EndPunkt = Zeile.indexOf(Trennzeichen,StartPunkt + 1); // es wird der nächste trennzeichen gesuch die suche beginnt beim letzten
|
56 | if (EndPunkt == -1) return "Trennzeichen nicht vorhanden";
|
57 | }
|
58 | String SpalteX = Zeile.substring(StartPunkt,EndPunkt); // der String vom Startpunkt (inklusive) bis zum Endpunkt (exklusive) extrahiert
|
59 |
|
60 | f.close();
|
61 |
|
62 | return SpalteX;
|
63 | }
|