OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4364|回复: 1

蓝牙模块HC-05中 linelen = get_line(linebuff,redata+getlen+2*linenum,len);这句语句linenum为什么要*2

[复制链接]

163

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1214
金钱
1214
注册时间
2016-5-19
在线时间
297 小时
发表于 2018-6-11 20:11:42 | 显示全部楼层 |阅读模式
1金钱
linelen = get_line(linebuff,redata+getlen+2*linenum,len);这句语句linenum为什么要*2
/**
  * @brief  扫描周边的蓝牙设备,并存储到设备列表中。
* @param  bltDev ,蓝牙设备列表指针
  * @retval 是否扫描到设备,0表示扫描到,非0表示没有扫描到
  */
uint8_t parseBluetoothAddress(BLTDev *bltDev)
{
  /* Address should look like "+ADDR:<NAP>:<UAP>:<LAP>",
   * where actual address will look like "1234:56:abcdef".
   */
char* redata;
uint16_t len;

char linebuff[50];
uint16_t linelen;

uint16_t getlen=0;
uint8_t linenum=0;


uint8_t i;

char *p;

HC05_Send_CMD("AT+INQ\r\n",0);
redata =get_rebuff(&len);

if(redata[0] != 0 && strstr(redata, "+INQ:") != 0)
{
  HC05_DEBUG("rebuf =%s",redata);
getNewLine:
  while(getlen < len-2*linenum )
  {
   linelen = get_line(linebuff,redata+getlen+2*linenum,len);
   if(linelen>50 && linelen != 0)
   {
    HC05_Send_CMD("AT+INQC\r\n",1);//退出前中断查询
    return 1;
   }
   
   getlen += linelen;
   linenum++;   
     
   p = skipPrefix(linebuff,linelen,"+INQ:");
   if(p!=0)
   {
    uint8_t num ;
    num = bltDev->num;
   
    strBLTAddr(bltDev,':');
   
    for(i=0;i<=num;i++)
    {
     if(strstr(linebuff,bltDev->unpraseAddr[i]) != NULL)
     {
      goto getNewLine; //!=null时,表示该地址与解码语句的地址相同
     }
    }      
     
    /*若蓝牙设备不在列表中,对地址进行解码*/
    bltDev->addr[num].NAP = htoul(p);   
    p = strchr(p,':');
    if (p == 0)
    {
     HC05_Send_CMD("AT+INQC\r\n",1);//退出前中断查询
     return 1;
    }
    bltDev->addr[num].UAP = htoul(++p);
    p = strchr(p,':');
    if (p == 0)
    {
     HC05_Send_CMD("AT+INQC\r\n",1);//退出前中断查询
     return 1;
    }
    bltDev->addr[num].LAP = htoul(++p);
   
    /*存储蓝牙地址(字符串形式)*/
    sprintf(bltDev->unpraseAddr[num],"%X:%X:%X",bltDev->addr[num].NAP,bltDev->addr[num].UAP,bltDev->addr[num].LAP);
    bltDev->num++;
   
   }

  }
  
  clean_rebuff();
  
  HC05_Send_CMD("AT+INQC\r\n",1);//退出前中断查询
  return 0;
}

else
{
  clean_rebuff();
  
  HC05_Send_CMD("AT+INQC\r\n",1);//退出前中断查询
  return 1;
}
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-6-12 01:01:48 | 显示全部楼层
跟踪进去看代码,结合实际效果分析。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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