极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13936|回复: 6

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

[复制链接]
发表于 2016-1-17 20:56:04 | 显示全部楼层 |阅读模式
用手机上的串口助手可以与蓝牙通信,但是发送指定字符无法反悔,求大神解释
先上代码

void setup()
{

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

        if(Serial.read()>0)
        {   byte  val=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
回复

使用道具 举报

发表于 2016-1-17 21:16:29 | 显示全部楼层
可能是因为你发送的 Serial.println ("成功"); 中的汉字解析不正确

你把他修改为 success 这样的英文试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-17 21:23:17 | 显示全部楼层
zoologist 发表于 2016-1-17 21:16
可能是因为你发送的 Serial.println ("成功"); 中的汉字解析不正确

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

不行,这个app能解析汉字,改成英文依然接收不到,实在搞不懂哪出问题了
回复 支持 反对

使用道具 举报

发表于 2016-1-17 21:57:35 | 显示全部楼层
你看一下例程

我记得应该有个 available() 的判断才行
回复 支持 反对

使用道具 举报

发表于 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; }
      
      }
    }  
}
回复 支持 反对

使用道具 举报

发表于 2016-6-11 14:17:29 | 显示全部楼层
曾木升 发表于 2016-4-4 18:32
这样子就可以了:
int i;
void setup()

为什么楼上的不行,这样就行?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 17:24 , Processed in 0.041992 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表