Arduino:
Робота з CSV
Як:
Arduino не має вбудованої бібліотеки спеціально для роботи з файлами CSV, але ви можете використовувати бібліотеки SD
та SPI
для доступу до файлів на SD-карті, а потім парсити або генерувати дані CSV за допомогою основних технік маніпуляції з рядками. При роботі з більш складною маніпуляцією CSV може бути використана стороння бібліотека ArduinoCSV
для легшого парсингу і запису.
Читання даних CSV з SD-карти:
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("Initialization failed!");
return;
}
File dataFile = SD.open("data.csv");
if (dataFile) {
while (dataFile.available()) {
String dataLine = dataFile.readStringUntil('\n');
Serial.println(dataLine); // Виводить рядок CSV
}
dataFile.close();
} else {
Serial.println("Error opening data.csv");
}
}
void loop() {
// У цьому прикладі не використовується
}
Приклад виводу:
SensorID, Timestamp, Value
1, 1597840923, 23.5
2, 1597840987, 22.4
Запис даних CSV на SD-карту:
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("Initialization failed!");
return;
}
File dataFile = SD.open("output.csv", FILE_WRITE);
if (dataFile) {
dataFile.println("SensorID, Timestamp, Value"); // Заголовок CSV
dataFile.println("1, 1597840923, 23.5"); // Приклад рядка даних
dataFile.close();
Serial.println("Data written");
} else {
Serial.println("Error opening output.csv");
}
}
void loop() {
// У цьому прикладі не використовується
}
Приклад виводу:
Data written
Використання ArduinoCSV для парсингу:
Якщо ви працюєте зі складними файлами CSV, бібліотека ArduinoCSV
може значно спростити зусилля щодо парсингу. Цей приклад передбачає, що ви вже встановили бібліотеку ArduinoCSV
.
#include <SPI.h>
#include <SD.h>
#include <ArduinoCSV.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("Initialization failed!");
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)); // Друкує кожне поле
if (i < parser.count() - 1) {
Serial.print(", ");
}
}
Serial.println();
}
}
dataFile.close();
} else {
Serial.println("Error opening data.csv");
}
}
void loop() {
// У цьому прикладі не використовується
}
Приклад виводу:
SensorID, Timestamp, Value
1, 1597840923, 23.5
2, 1597840987, 22.4
У цих прикладах, завдяки читанню з файлів CSV та запису в них на SD-картці, проекти Arduino можуть легко збирати дані, зберігати налаштування конфігурації або обмінюватися даними з іншими програмами у універсально доступному форматі.