devil999 发表于 2014-9-24 08:35:20

Serial.available()的用法是什么

本帖最后由 devil999 于 2014-9-24 19:06 编辑

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

i7456 发表于 2014-9-24 09:32:56


if (a.length() > 0)
    {
      Serial.println(a);
      int b = a.toInt();//这行代码放到这个位置来,试下。
      a = "";      
    }   
   

devil999 发表于 2014-9-24 09:48:07

i7456 发表于 2014-9-24 09:32 static/image/common/back.gif


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才可以。有什么方法可以不复位,直接输入呢?

Jerry 发表于 2014-9-24 10:20:09

把这个删掉 if (a.length() > 0)
或者在这个if里的最后加一句a=“”;

Jerry 发表于 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);

i7456 发表于 2014-9-24 10:23:23

devil999 发表于 2014-9-24 09:48 static/image/common/back.gif
String a="";

void setup()


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

Super169 发表于 2014-9-24 11:36:51

Jerry 发表于 2014-9-24 10:21 static/image/common/back.gif
while (Serial.available() > 0)
    {
      a += char(Serial.read());


這樣不會出 error 嗎?
b 在 while {} 中設定, 但在 while {} 之外用.

devil999 发表于 2014-9-24 12:19:19

Jerry 发表于 2014-9-24 10:21 static/image/common/back.gif
while (Serial.available() > 0)
    {
      a += char(Serial.read());


String a="";

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

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

            
}这样的结果是我输入100,就是100MS的速度闪烁,然后我接着输入10,则是以10010的速度闪烁。还是存在同样的问题。

i7456 发表于 2014-9-24 12:49:25


String a="";
int b = 100;

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);
      b = a.toInt();
      a = "";      
    }   
   
      digitalWrite(13,HIGH);
      delay(b);
      digitalWrite(13,LOW);
      delay(b);      
}

devil999 发表于 2014-9-24 13:21:01

i7456 发表于 2014-9-24 12:49 static/image/common/back.gif


void loop()
{
    while (Serial.available() > 0)
    {
      a += char(Serial.read());
       delay(5);
    }
能加注释就感激不尽。
      
    if (a.length() > 0)
    {
      Serial.println(a);
      b = a.toInt();
      a = "";      
    }   

devil999 发表于 2014-9-24 13:22:04

i7456 发表于 2014-9-24 12:49 static/image/common/back.gif


void loop()
{
    while (Serial.available() > 0)
    {
      a += char(Serial.read());
       delay(5);
    }
      
    if (a.length() > 0)
    {
      Serial.println(a);
      b = a.toInt();
      a = "";      
    }   

能加注释就感激不尽。

Jerry 发表于 2014-9-24 14:33:32

devil999 发表于 2014-9-24 13:21 static/image/common/back.gif


你搞定了就行了,看来你看懂了

i7456 发表于 2014-9-24 15:52:53

devil999 发表于 2014-9-24 13:22 static/image/common/back.gif
能加注释就感激不尽。

加什么注释?
只不过是把你楼主位的程序的一行代码换个位置而已。
页: [1]
查看完整版本: Serial.available()的用法是什么