TI中文支持网
TI专业的中文技术问题搜集分享网站

如何让一个Central和两个Peripheral建立连接,并且Central能和这两个建立连接的Peripheral能相互发送数据?

我现在一个Central和一个Peripheral建立连接,Central通过写CHAR1和读CHAR2与Peripheral进行数据通信。BLE-CC254x-1.3.2版本的BLE协议栈的Central和Peripheral的例子好像一个Central不能和多个Peripheral建立连接。如果要一个Central不能和多个Peripheral建立连接应该如何做?

Central的是client, Peripheral都是server。

Qin Daohong:

 case GAP_DEVICE_INFO_EVENT:

// if filtering device discovery results based on service UUID       

 if ( DEFAULT_DEV_DISC_BY_SVC_UUID == TRUE )        

{          

   if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV_UUID, pEvent->deviceInfo.pEvtData, pEvent->deviceInfo.dataLen ) )          

   {            

      simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );          

    }        

 }  

这里是只发现的Server UUID的为SIMPLEPROFILE_SERV_UUID的从设备吗?

那两个从设备的Server UUID能否相同呢?

Qin Daohong:

回复 Qin Daohong:

上面的代码是 simpleBLECentral.c 里 static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )函数的一部分。

Yan:

Hi Qin,

你得修改一下代码.

因为一旦连上一个设备后, 按键里面有判断, 不会再去做新的查找. 

你改一下simpleBLECentral_HandleKeys() 里面的代码.

Yan:

回复 Qin Daohong:

两个从设备Server UUID 一样没问题.

Qin Daohong:

回复 Yan:

但是一个Central和多个Peripheral建立连接后,他们的连接句柄simpleBLEConnHandle都不一样吧?

Yan:

回复 Qin Daohong:

这个也会不一样.

你就用个数组, 或者多几个全局变量呗.

Qin Daohong:

回复 Yan:

  如果从机的Server UUID 一样的话,主机就只能发现一个设备。即simpleBLEScanRes值为1。但是如果不一样的话,simpleBLEScanRes值就为2,表明应该发现了两个设备。

static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent ){

  。。。 。。。   

  if ( DEFAULT_DEV_DISC_BY_SVC_UUID == TRUE )        

     {          

       //发现Server UUID  为SIMPLEPROFILE_SERV1_UUID从机

         if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV1_UUID, pEvent->deviceInfo.pEvtData, pEvent->deviceInfo.dataLen ) )          

       {            

           simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );          

       }    

     //发现Server UUID  为SIMPLEPROFILE_SERV2_UUID从机     

      if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV2_UUID, pEvent->deviceInfo.pEvtData,  pEvent->deviceInfo.dataLen ) )          

    {            

        simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );          

     }        

  }

  。。。 。。。   

Qin Daohong:

回复 Yan:

我的思路是这样的。先让Central和一个Peripheral连接成功后,再和另一个Peripheral进行连接。

Qin Daohong:

回复 Yan:

这个思路行不行呢?

Yan:

回复 Qin Daohong:

可以.

欢迎做各种尝试 🙂

赞(0)
未经允许不得转载:TI中文支持网 » 如何让一个Central和两个Peripheral建立连接,并且Central能和这两个建立连接的Peripheral能相互发送数据?
分享到: 更多 (0)