Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2824|回復: 2
打印 上一主題 下一主題

buffer 程式碼問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-10-27 01:06:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想請問一下
這個程式碼在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. }
複製代碼
2#
發表於 2011-10-27 10:22:10 | 只看該作者
要看程式的目是什麼。

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


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



或者是有另種發法?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-6-13 07:05 , Processed in 0.398148 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表