[Arduino] - การใช้ Serial Port

Standard
บทความนี้จะนำเสนอการใช้ Serial บน Arduino  ซึ้งขั้นตอนมีไม่มาก 
ในบทความนี้จะมีการสร้าง Protocol ขึ้นมา  เพื่อใช้ในการส่งข้อมูลหลาย ๆ และป้องกันความผิดพลาดในการส่งข้อมูล  โดยมี Header (#) และ  Footer (!) เป็นตัวเริ่มและจบ protocol

1. Initial Baudrate  กำหนดค่า Baudrate  และประกาศตัวแปรเป็น Gobal
char StringIn[InputMaxLength] = {'\0'};   // เก็บค่าที่รับมาทั้งหมด
char DataIn[DataLength] = {'\0'};   // เก็บเฉพาะ Data  ตัด Header กับ Footer ออกไป
Serial.begin(38400);  // Initial Serial


2.  สร้างฟังก์ชันสำหรับรับค่า Serial  Protocol คือมี #  นำหน้าและ ! ปิดท้าย
int ReceivedSerialData(){
  while(Serial.available())
  {
   
    char inchar = Serial.read();
     // Get Header
     if(inchar == Header)
     {
        StringIn[0] = inchar;
        int index = 1;
        // GetData
        do{
          inchar = Serial.read();
          StringIn[index] = inchar;
          index++;
        }while( (index < InputMaxLength) && (inchar != Footer) );
       
        if (index > 2)  // Get Header and Footer
        {
          if(StringIn[index-1]==Footer)  // Footer & Header Correct
          {
            for(int c=0;c<index-2;c++)
            {
              DataIn[c] = StringIn[c+1];
            }        
            return 1; // Success
          }
          else
          {
            // Get Data fail
            Serial.println("Fail Protocol");
            return 0;
          }
        }
      }
  }
  return 0;
}

3.  ใน Loop  เรียกฟังก์ชันเพื่อรับค่า Serial
 if(ReceivedSerialData())
 {
// Implement Here
}