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