Arduino:
Työskentely CSV:n kanssa

Kuinka:

Arduinossa ei ole sisäänrakennettua kirjastoa erityisesti CSV-tiedostojen käsittelyyn, mutta voit käyttää SD ja SPI kirjastoja tiedostojen käyttämiseen SD-kortilla, ja sitten jäsentää tai luoda CSV-dataa käyttäen perus merkkijonokäsittelyn tekniikoita. Kun käsitellään monimutkaisempia CSV-tiedostojen manipulointeja, kolmannen osapuolen kirjastoa ArduinoCSV voidaan hyödyntää helpottamaan jäsentämistä ja kirjoittamista.

CSV-datan lukeminen SD-kortilta:

#include <SPI.h>
#include <SD.h>

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Alustus epäonnistui!");
    return;
  }
  File dataFile = SD.open("data.csv");
  if (dataFile) {
    while (dataFile.available()) {
      String dataLine = dataFile.readStringUntil('\n');
      Serial.println(dataLine); // Tulostaa CSV-rivin
    }
    dataFile.close();
  } else {
    Serial.println("Virhe avattaessa data.csv");
  }
}

void loop() {
  // Ei käytetä tässä esimerkissä
}

Esimerkkituloste:

SensorID, Aikaleima, Arvo
1, 1597840923, 23.5
2, 1597840987, 22.4

CSV-datan kirjoittaminen SD-kortille:

#include <SPI.h>
#include <SD.h>

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Alustus epäonnistui!");
    return;
  }
  File dataFile = SD.open("output.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.println("SensorID, Aikaleima, Arvo"); // CSV otsikko
    dataFile.println("1, 1597840923, 23.5"); // Esimerkki datarivistä
    dataFile.close();
    Serial.println("Data kirjoitettu");
  } else {
    Serial.println("Virhe avattaessa output.csv");
  }
}

void loop() {
  // Ei käytetä tässä esimerkissä
}

Esimerkkituloste:

Data kirjoitettu

ArduinoCSV:n käyttö jäsentämiseen: Jos käsittelet monimutkaisia CSV-tiedostoja, ArduinoCSV kirjasto voi huomattavasti yksinkertaistaa jäsentämisprosessia. Tämä esimerkki olettaa, että olet jo asentanut ArduinoCSV kirjaston.

#include <SPI.h>
#include <SD.h>
#include <ArduinoCSV.h>

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Alustus epäonnistui!");
    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)); // Tulostaa jokaisen kentän
          if (i < parser.count() - 1) {
            Serial.print(", ");
          }
        }
        Serial.println();
      }
    }
    dataFile.close();
  } else {
    Serial.println("Virhe avattaessa data.csv");
  }
}

void loop() {
  // Ei käytetä tässä esimerkissä
}

Esimerkkituloste:

SensorID, Aikaleima, Arvo
1, 1597840923, 23.5
2, 1597840987, 22.4

Näiden esimerkkien avulla, lukemalla ja kirjoittamalla CSV-tiedostoja SD-kortille, Arduino-projektit voivat helposti kerätä dataa, tallentaa konfiguraatioasetuksia tai vaihtaa tietoja muiden sovellusten kanssa yleisesti saatavilla olevassa muodossa.