Arduino:
Arbeiten mit CSV
Wie:
Arduino besitzt keine integrierte Bibliothek speziell für den Umgang mit CSV-Dateien, aber man kann die SD
- und SPI
-Bibliotheken verwenden, um auf Dateien auf einer SD-Karte zuzugreifen, und dann CSV-Daten mithilfe grundlegender String-Manipulationstechniken parsen oder generieren. Bei der Verarbeitung komplexerer CSV-Manipulationen kann die Drittanbieterbibliothek ArduinoCSV
für einfacheres Parsen und Schreiben genutzt werden.
Lesen von CSV-Daten von einer SD-Karte:
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("Initialisierung fehlgeschlagen!");
return;
}
File dataFile = SD.open("data.csv");
if (dataFile) {
while (dataFile.available()) {
String dataLine = dataFile.readStringUntil('\n');
Serial.println(dataLine); // Gibt die CSV-Zeile aus
}
dataFile.close();
} else {
Serial.println("Fehler beim Öffnen von data.csv");
}
}
void loop() {
// Wird in diesem Beispiel nicht verwendet
}
Beispielausgabe:
SensorID, Timestamp, Wert
1, 1597840923, 23.5
2, 1597840987, 22.4
Schreiben von CSV-Daten auf eine SD-Karte:
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("Initialisierung fehlgeschlagen!");
return;
}
File dataFile = SD.open("output.csv", FILE_WRITE);
if (dataFile) {
dataFile.println("SensorID, Timestamp, Wert"); // CSV-Header
dataFile.println("1, 1597840923, 23.5"); // Beispieldatenzeile
dataFile.close();
Serial.println("Daten geschrieben");
} else {
Serial.println("Fehler beim Öffnen von output.csv");
}
}
void loop() {
// Wird in diesem Beispiel nicht verwendet
}
Beispielausgabe:
Daten geschrieben
Verwendung von ArduinoCSV zum Parsen:
Falls man sich mit komplexen CSV-Dateien beschäftigt, kann die ArduinoCSV
-Bibliothek das Parsen erheblich vereinfachen. Dieses Beispiel setzt voraus, dass die ArduinoCSV
-Bibliothek bereits installiert ist.
#include <SPI.h>
#include <SD.h>
#include <ArduinoCSV.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("Initialisierung fehlgeschlagen!");
return;
}
File dataFile = SD.open("data.csv");
if (dataFile) {
CSVParser parser;
while (dataFile.available()) {
String dataLine = dataFile.readStringUntil('\n');
if (parser.parseLine(dataLine)) {
for (int i = 0; i < parser.count(); i++) {
Serial.print(parser.getField(i)); // Druckt jedes Feld
if (i < parser.count() - 1) {
Serial.print(", ");
}
}
Serial.println();
}
}
dataFile.close();
} else {
Serial.println("Fehler beim Öffnen von data.csv");
}
}
void loop() {
// Wird in diesem Beispiel nicht verwendet
}
Beispielausgabe:
SensorID, Timestamp, Wert
1, 1597840923, 23.5
2, 1597840987, 22.4
In diesen Beispielen können Arduino-Projekte durch das Lesen von und Schreiben in CSV-Dateien auf einer SD-Karte einfach Daten sammeln, Konfigurationseinstellungen speichern oder Daten mit anderen Anwendungen in einem universell zugänglichen Format austauschen.