串口 – 如何在Arduino上通过串口保持传入的字节?

我有以下Arduino代码.

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    if(Serial.available() > 0)
    {
        int b=Serial.read();
        Serial.println(b);
    }
}

如果我打开串行监视器并输入00000001,我得到输出

48

48

48

48

48

48

48

49

好吧,首先为什么48(和最后一行49),其次为什么这么多行?

我期待获得’1’的简单输出.

如果我改变了行Serial.println(b);到Serial.println(00000001,DEC);,我得到了我期望的(即’1′).但是,如果我将该行更改为Serial.println(b,DEC);,我会得到与以前相同的奇怪输出.

48和49是’0’和’1’的十进制表示.它打印了8行,因为你在一个循环中调用Serial.println.

你最终目标到底是什么? Serial.read()返回字符,而不是值:http://arduino.cc/en/Serial/read

希望这可以帮助!


例:

if(Serial.available() > 0)
{ 
    int num = 0;
    for( int i=7; i>=0; i-- )
    {
        if( Serial.read() == '1' )
            num |= (1 << i);
    }
    Serial.println(num);
}
相关文章