2014年4月17日 星期四

Arduino 整串封包接收處理

由於Serial所Read 的值都只有一個byte,

要讀取整筆封包還要再自己寫,

所以稍微寫了一下,將"#"當作起始字,"$"當作結尾字,

並且將之間的資料存於Databuf中,

有需要的時候再Send "!" 會將資料丟出來。






以下是code:


1:  char Databuf[100];     // 用來儲存收進來的 data byte  
2:  int addr=1;  
3:  char buf;  
4:  int RW=0;  
5:  void setup() {  
6:   // 開啟 Serial port, 通訊速率為 9600 bps  
7:   Serial.begin(9600);  
8:   Serial.println("Hello Oliver"); Serial.println("http://arduino-oliver.blogspot.com/");  
9:  }  
10:  void loop() {   
11:   // 檢查是否有資料可供讀取#@  
12:   if (Serial.available() > 0) {  
13:    buf = Serial.read();  
14:    switch (buf)   
15:    {  
16:    case '#':  
17:     Serial.println("#");  
18:     RW=1;  
19:     break;  
20:    case '!':  
21:     Serial.println("!");  
22:     while(addr>0)  
23:     {  
24:     addr--;  
25:     Serial.print(Databuf[addr],HEX);  
26:     }  
27:     break;  
28:    case '$':  
29:     Serial.println("$");  
30:     RW=0;  
31:     break;  
32:    default:  
33:    if(RW=1)  
34:    {    
35:    Databuf[addr]=buf;  
36:    Serial.print(Databuf[addr],HEX);  
37:    addr++;  
38:    }  
39:   }  
40:   }  
41:  }  

1 則留言: