Robofun 機器人論壇

標題: buffer 程式碼問題 [打印本頁]

作者: snoopy15    時間: 2011-10-27 01:06
標題: buffer 程式碼問題
我想請問一下
這個程式碼在Monitor上的動作
在沒有接收到值時
一直在做接收動作(顯示為空白)
這樣的動作是否正常?

  1. #define BUFFSIZ 18
  2. char buffer[BUFFSIZ];
  3. char buffidx;
  4. char c;
  5. void setup()
  6. {
  7.    Serial.begin(9600);
  8. }

  9. void loop()
  10. {
  11.    abc();
  12.    Serial.print(c);   
  13. }

  14. void abc(void)
  15. {
  16.   buffidx = 0;
  17.   if(Serial.available())
  18.     {
  19.       while (1)
  20.         {
  21.           c=Serial.read();
  22.           if (c == -1)
  23.             continue;
  24.           if (c == '\n')
  25.             continue;
  26.           if ((buffidx == BUFFSIZ-1) || (c == '\r'))
  27.              {
  28.                buffer[buffidx] = 0;  
  29.                return;
  30.             }
  31.           buffer[buffidx++]= c;
  32.         }
  33.     }
  34. }
複製代碼

作者: coopermaa    時間: 2011-10-27 10:22
要看程式的目是什麼。

如果目的是一直收 Serial 的資料
那麼「沒有資料時 (Serial.read() == -1) 要讓程式一直等下去」這樣的邏輯也算是正常的。
作者: snoopy15    時間: 2011-10-27 20:32
回復 2# coopermaa


   所以這現象算正常囉   這程式碼是想用來擷取XBee所接收到的資料
   Ex: 123456/n456789/r
   想要擷取123456和456789
   是不是可以用這樣
  1. for(int i = 0;i<=5;i++)
  2. {
  3.   Serial.print(buffer[i]);
  4. }
複製代碼



或者是有另種發法?




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2