极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23182|回复: 12

Serial.available()的用法是什么

[复制链接]
发表于 2014-9-24 08:35:20 | 显示全部楼层 |阅读模式
本帖最后由 devil999 于 2014-9-24 19:06 编辑

Serial.available()的用法是什么。
回复

使用道具 举报

发表于 2014-9-24 09:32:56 | 显示全部楼层

  1. if (a.length() > 0)
  2.     {
  3.         Serial.println(a);
  4.         int b = a.toInt();//这行代码放到这个位置来,试下。
  5.         a = "";      
  6.     }   
  7.    
复制代码
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2014-9-24 09:48:07 | 显示全部楼层
i7456 发表于 2014-9-24 09:32

String a="";

void setup()
{
    Serial.begin(9600);
    pinMode(13,OUTPUT);
}

void loop()
{
    while (Serial.available() > 0)  
    {
        a += char(Serial.read());
       delay(5);
    }
      
    if (a.length() > 0)
    {
        //Serial.println(a);
        int b = a.toInt();
        digitalWrite(13,HIGH);
        delay(b);
        digitalWrite(13,LOW);
        delay(b);}
         

              
}

改成这样后第一次输入的一个值,比如说100,可以以100MS的速度闪烁,如果我要以500MS的话,必须要复位,再输入500才可以。有什么方法可以不复位,直接输入呢?
回复 支持 反对

使用道具 举报

发表于 2014-9-24 10:20:09 | 显示全部楼层
把这个删掉 if (a.length() > 0)
或者在这个if里的最后加一句  a=“”;
回复 支持 反对

使用道具 举报

发表于 2014-9-24 10:21:38 | 显示全部楼层
  while (Serial.available() > 0)  
    {
        a += char(Serial.read());
       delay(5);
        int b = a.toInt();
    }
      
        digitalWrite(13,HIGH);
        delay(b);
        digitalWrite(13,LOW);
        delay(b);
回复 支持 反对

使用道具 举报

发表于 2014-9-24 10:23:23 | 显示全部楼层
devil999 发表于 2014-9-24 09:48
String a="";

void setup()

我只让你移动那一行的代码,你为什么把那几行都给移过来了?
回复 支持 反对

使用道具 举报

发表于 2014-9-24 11:36:51 | 显示全部楼层
Jerry 发表于 2014-9-24 10:21
while (Serial.available() > 0)  
    {
        a += char(Serial.read());

這樣不會出 error 嗎?  
b 在 while {} 中設定, 但在 while {} 之外用.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-24 12:19:19 | 显示全部楼层
Jerry 发表于 2014-9-24 10:21
while (Serial.available() > 0)  
    {
        a += char(Serial.read());
  1. String a="";

  2. void setup()
  3. {
  4.     Serial.begin(9600);
  5.     pinMode(13,OUTPUT);
  6. }

  7. void loop()
  8. {
  9.     while (Serial.available() > 0)  
  10.    
  11.         a += char(Serial.read());
  12.        delay(5);
  13.         int b = a.toInt();   
  14.       
  15.         digitalWrite(13,HIGH);
  16.         delay(b);
  17.         digitalWrite(13,LOW);
  18.         delay(b);
  19.          

  20.               
  21. }
复制代码
这样的结果是我输入100,就是100MS的速度闪烁,然后我接着输入10,则是以10010的速度闪烁。还是存在同样的问题。
回复 支持 反对

使用道具 举报

发表于 2014-9-24 12:49:25 | 显示全部楼层

  1. String a="";
  2. int b = 100;

  3. void setup()
  4. {
  5.     Serial.begin(9600);
  6.     pinMode(13,OUTPUT);
  7. }

  8. void loop()
  9. {
  10.     while (Serial.available() > 0)  
  11.     {
  12.         a += char(Serial.read());
  13.        delay(5);
  14.     }
  15.       
  16.     if (a.length() > 0)
  17.     {
  18.         Serial.println(a);
  19.         b = a.toInt();
  20.         a = "";      
  21.     }   
  22.    
  23.         digitalWrite(13,HIGH);
  24.         delay(b);
  25.         digitalWrite(13,LOW);
  26.         delay(b);        
  27. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-24 13:21:01 | 显示全部楼层
i7456 发表于 2014-9-24 12:49
  1. void loop()
  2. {
  3.     while (Serial.available() > 0)  
  4.     {
  5.         a += char(Serial.read());
  6.        delay(5);
  7.     }
  8. 能加注释就感激不尽。
  9.       
  10.     if (a.length() > 0)
  11.     {
  12.         Serial.println(a);
  13.         b = a.toInt();
  14.         a = "";      
  15.     }   
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-24 13:22:04 | 显示全部楼层
i7456 发表于 2014-9-24 12:49
  1. void loop()
  2. {
  3.     while (Serial.available() > 0)  
  4.     {
  5.         a += char(Serial.read());
  6.        delay(5);
  7.     }
  8.       
  9.     if (a.length() > 0)
  10.     {
  11.         Serial.println(a);
  12.         b = a.toInt();
  13.         a = "";      
  14.     }   

复制代码
能加注释就感激不尽。
回复 支持 反对

使用道具 举报

发表于 2014-9-24 14:33:32 | 显示全部楼层
devil999 发表于 2014-9-24 13:21

你搞定了就行了,看来你看懂了
回复 支持 反对

使用道具 举报

发表于 2014-9-24 15:52:53 | 显示全部楼层
devil999 发表于 2014-9-24 13:22
能加注释就感激不尽。


加什么注释?
只不过是把你楼主位的程序的一行代码换个位置而已。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-22 11:37 , Processed in 0.040861 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表