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

coo*_*000 3 serial-port arduino

我有以下Arduino代码.

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

void loop()
{
    if(Serial.available() > 0)
    {
        int b=Serial.read();
        Serial.println(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

48

48

48

48

48

48

48

49
Run Code Online (Sandbox Code Playgroud)

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

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

如果我将线路更改Serial.println(b);Serial.println(00000001,DEC);,我会得到我期望的(即'1').但是,如果我将线路更改为Serial.println(b,DEC);,我会得到与之前相同的奇怪输出.

gre*_*aty 5

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);
}
Run Code Online (Sandbox Code Playgroud)