Arduino:
การทำงานกับ CSV

วิธีการ:

Arduino ไม่มีไลบรารีภายในที่เฉพาะเจาะจงสำหรับการจัดการไฟล์ CSV แต่คุณสามารถใช้ SD และ SPI libraries สำหรับการเข้าถึงไฟล์บน SD card และจากนั้นคุณสามารถแยกหรือสร้างข้อมูล CSV โดยใช้เทคนิคการจัดการสตริงพื้นฐาน เมื่อต้องจัดการ CSV ที่ซับซ้อนมากขึ้น คุณสามารถใช้ไลบรารีจากบุคคลที่สาม ArduinoCSV สำหรับการแยกและเขียนได้ง่ายขึ้น

การอ่านข้อมูล CSV จาก SD Card:

#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 Card:

#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 card โครงการ Arduino สามารถเก็บข้อมูลได้อย่างง่ายดาย, เก็บการตั้งค่าการกำหนดค่า หรือแลกเปลี่ยนข้อมูลกับแอปพลิเคชันอื่นในรูปแบบที่เข้าถึงได้ทั่วไป