Arduino:
การบันทึกล็อก
วิธีทำ:
Arduino ไม่มีไลบรารี logging ในตัวเหมือนกับสภาพแวดล้อมอื่นๆ แต่คุณสามารถทำการ logging พื้นฐานไปยัง Serial console ได้โดยไม่ยุ่งยาก นี่คือตัวอย่างเริ่มต้นเพื่อให้คุณเริ่มต้นได้:
void setup() {
// เริ่มการสื่อสารผ่าน serial ด้วยอัตราบอดที่กำหนด
Serial.begin(9600);
// รอจนกว่า serial port จะเชื่อมต่อ - จำเป็นเฉพาะบนบางบอร์ด
while (!Serial) {
; // รอการเชื่อมต่อของพอร์ต serial จำเป็นสำหรับ USB แบบเนทีฟ
}
// Log ข้อความข้อมูลที่บอกว่ากระบวนการตั้งค่าเสร็จสมบูรณ์
Serial.println("การตั้งค่าเสร็จสิ้น!");
}
void loop() {
// Logger ง่ายๆ ที่พิมพ์เวลาทำงานทุกวินาที
static unsigned long lastLogTime = 0;
unsigned long currentMillis = millis();
if (currentMillis - lastLogTime >= 1000) {
lastLogTime = currentMillis;
Serial.print("เวลาทำงาน (มิลลิวินาที): ");
Serial.println(currentMillis);
// ที่นี่คุณอาจเพิ่ม error logs, warnings, หรือข้อมูลอื่นๆ.
}
// ตรรกะโปรแกรมอื่นๆของคุณที่นี่...
}
ตัวอย่าง Serial Output:
การตั้งค่าเสร็จสิ้น!
เวลาทำงาน (มิลลิวินาที): 1000
เวลาทำงาน (มิลลิวินาที): 2000
เวลาทำงาน (มิลลิวินาที): 3000
...
ภาพรวมลึก:
ในอดีต, logging บนไมโครคอนโทรลเลอร์ไม่ง่ายเหมือนบนระบบปฏิบัติการที่แคบอนหน่อเท่าไร ทรัพยากรที่จำกัดหมายความว่าทุกไบต์มีความสำคัญ และนักพัฒนาต้องระมัดระวังไม่ให้ระบบถูกอุดตัน ด้วยการมาถึงของบอร์ดที่มีความสามารถมากขึ้นและแพลตฟอร์ม Arduino ทำให้กระบวนการง่ายขึ้น, logging จึงกลายเป็นเรื่องที่เข้าถึงได้มากขึ้น
ในขณะที่โค้ดข้างต้นแสดงการ logging ผ่าน Serial interface วิธีอื่น ๆ รวมถึงการเขียนไปยังการ์ด SD, การส่งข้อมูลผ่านเครือข่ายไปยังเซิร์ฟเวอร์ห่างไกล, หรือแม้แต่การแสดงผลไปยัง LCD ขนาดเล็ก
การใช้งานระบบ logging นำเสนอความพิจารณาเช่นการหมุนเวียน, ความรุนแรงของระดับ (info, debug, warning, error), และผลกระทบต่อประสิทธิภาพ บน Arduino, คุณอาจต้องระมัดระวังเรื่องข้อจำกัดของหน่วยความจำเมื่อ logging โครงสร้างข้อมูลที่ซับซ้อน สำหรับการ logging จากระยะไกล, ความปลอดภัยของแฟ้มบันทึกที่ถูกส่งก็เป็นประเด็นที่ต้องกังวล
โซลูชันที่ซับซ้อนยิ่งขึ้นเช่น Syslog, มาตรฐานการบันทึกที่ได้รับการยอมรับอย่างกว้างขวาง, มีอยู่ภายนอกโลกของ Arduino, แต่คุณสามารถรวมไลบรารีของบุคคลที่สามที่เสนอความสามารถคล้ายคลึงกันด้วยระดับความซับซ้อนและความต้องการทรัพยากรที่แตกต่างกันได้