whjfordream 发表于 2016-1-17 20:56:04

求助:安卓手机与蓝牙模块通信问题

用手机上的串口助手可以与蓝牙通信,但是发送指定字符无法反悔,求大神解释
先上代码

void setup()
{

Serial.begin(9600);
void loop()
{

      if(Serial.read()>0)
      {   byteval=Serial.read();   //char也不行,也试着定义int,手机发送数字1,if(val==1),同样不能返回
      Serial.println ("ok");             安卓手机端返回ok
      if(val=='a')
      Serial.println ("成功");
       else if(val=='b')
      Serial.println ("不容易");
   
}

   }

发送任意字符,返回ok,但是发送a或者b同样返回ok,如果去掉   Serial.println ("ok");则什么都不返回,手机发送按照ascll标准发送的,求解释,连线应该没问题,要不也不会返回ok

zoologist 发表于 2016-1-17 21:16:29

可能是因为你发送的 Serial.println ("成功"); 中的汉字解析不正确

你把他修改为 success 这样的英文试试

whjfordream 发表于 2016-1-17 21:23:17

zoologist 发表于 2016-1-17 21:16 static/image/common/back.gif
可能是因为你发送的 Serial.println ("成功"); 中的汉字解析不正确

你把他修改为 success 这样的英文试试 ...

不行,这个app能解析汉字,改成英文依然接收不到:'(,实在搞不懂哪出问题了

zoologist 发表于 2016-1-17 21:57:35

你看一下例程

我记得应该有个 available() 的判断才行

beddingearly 发表于 2016-3-12 14:11:16

我弄成了,问题出在手机上的蓝牙串口助手app上,版本可能不匹配

曾木升 发表于 2016-4-4 18:32:42

这样子就可以了:
int i;
void setup()
{
Serial.begin(115200);
}
void loop()
{
   if(Serial.available())
    {
      i=Serial.read();
   Serial.println ("ok");
      switch(i)
      {
         case'1':
          {Serial.println ("成功"); break; }
      case'2':
          {Serial.println ("不容易"); break; }
      
      }
    }
}

suoma 发表于 2016-6-11 14:17:29

曾木升 发表于 2016-4-4 18:32 static/image/common/back.gif
这样子就可以了:
int i;
void setup()


为什么楼上的不行,这样就行?
页: [1]
查看完整版本: 求助:安卓手机与蓝牙模块通信问题