361079806 发表于 2013-12-11 15:29:25

大家帮忙看看串口代码啊~拜大神啊

void Blue_Str()
{
while (Serial.available() > 0)    //读取串口输入:有输入则读取信息
{
    int inChar = Serial.read();   //读取信息:读取为单字符,后继需将其连起来成为字符串
    if (inChar == '#')
    {
      xxx = inString.toInt();
      Serial.println(xxx);
      inString = "";
      break;
    }
    else
    {
      if (inChar == '*')   break;
      else
      {
      inString = "";
      inString += (char)inChar;      //并且将其连起来:如 1+2+3=123
      }
    }
}
if (inString == "w")//如果输入信息为 w,则高速前行
{
    Motor.forward(xxx);
    inString = "";//将串口信息缓存清空
    blue_start = 1;//同时将蓝牙标志设置为 1
}
if (inString == "q")
{
    Motor.forward(xxx);
    inString = "";
    blue_start = 1;
}

if (inString == "t")
{
    Motor.Stop();
    inString = "";
    blue_start = 0;               //运行stop指令,则将蓝牙标志初始化,方便后继选择运行模式               //
}
if (inString == "a")
{
    Motor.turnLeftOrigin(xxx);
    inString = "";
    blue_start = 1;
}
if (inString == "d")
{
    Motor.turnRightOrigin(xxx);
    inString = "";
    blue_start = 1;
}
if (inString == "b")
{
    Motor.back(xxx);
    inString = "";
    blue_start = 1;
}
if (inString == "h")
{
    dht11();
    blue_start = 1;
}
if (inString == "c")
{
    CJ();
    Serial.print("Distance");
    Serial.println(CJ_data_a);
    blue_start = 1;
}
}

大神帮忙改改,我既要能小车的速度设定,又要能用字符控制小车。这样字符控制正常,可是速度输入不正常啊,只能写入最后一个数字,大神们帮帮小弟吧,谢谢

邵林寺 发表于 2013-12-11 16:08:18

没有判断接收的是否为数字吧,加个 if (isDigit(inChar))

361079806 发表于 2013-12-11 16:23:19

邵林寺 发表于 2013-12-11 16:08 static/image/common/back.gif
没有判断接收的是否为数字吧,加个 if (isDigit(inChar))

你这个方法,我加了,加上以后,速度输入是可以了,但是字符又输入不进去了~~~真是纠结

邵林寺 发表于 2013-12-11 16:30:30

本帖最后由 邵林寺 于 2013-12-11 16:35 编辑

额的神呀,那你就不会再加一个判断字符的else{ }吗??????
页: [1]
查看完整版本: 大家帮忙看看串口代码啊~拜大神啊